参考视频:【极客学院】Web前端开发教学 - 第一部分:H5+CSS+JS
参考文档:CSS 教程 W3school
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。
作用域:所有源文件只要引用皆可使用
CSS: h1{ color: #b3d4fc; font-size: medium; } HTML: <link rel="stylesheet" type="text/css" href="mycss.css">作用域:单个源文件,只要引用后单个文件内有效
<style type="text/css"> h2{ color: aqua; } </style>作用域:单个标签有效
<h3 style="color: blueviolet"> 标题h3 </h3>继承的概念:A标签包含B和C。只有A和B有定义样式。那么B使用B的样式,C继承使用A的样式。
h1{ color: #999999; } body{ color: #888888; }例子中,在body标签内部: h1标签使用h1的样式; 其他标签使用body的样式。
使用*。 指定区域内,凡是无定义CSS,均继承使用通配符格式。 可以用来统一定义边距、边框等。
*{ color: #b3d4fc; }使用,。
h1,h2,a,p{ color: #b3d4fc; font-size: medium; }多个标签共用一个CSS样式.
使用 space。
h1 p{ color: blue; }多层标签嵌套时指定的CSS样式,和继承类似。
单标签多定义问题: h1 p{ color: blue; } p{ color: red; }h1中的p使用第一种,其他情况的p使用第二种。
使用标签名。
p{ color: #888888; } a{ color: #888888; }使用#。
<style type="text/css"> #p1{ color: #888888; } #p2{ color: #999999; } #d1{ color: #AAAAAA; } </style> <p id="p1"></p> <p id="p2"></p> <div id="d1"></div> id选择器和派生选择器一起使用: <style type="text/css"> #p1 a{ color: #888888; } </style> <p id="p1"> <a href="index.html">text</a> </p>id只可以唯一使用,不可重复使用,如果重复使用应该选择class。 在JS里有较多应用。
使用.。
<style type="text/css"> .p1{ color: #888888; } </style> <p class="p1">text</p> 类选择器和其他选择器共同使用: p.p1{ color: #888888; } 多类选择器:使用.class1.class2。 <style type="text/css"> .p1.p2{ color: #b3d4fc; font-size: large; } </style> <p class="p1 p2">内容</p>使用[]。
属性选择: [title]{ color: #888888; } 值选择: [title="t1"]{ color: #b3d4fc; } 值选择模糊匹配: [title~="t1"]{ / color: #b3d4fc; }属性和值之间亦有继承效果。
IE6及之前不支持。
使用>。
#p1>#p2{ color: #b3d4fc; }和派生选择器最大的区别在于:
子元素选择器:#p1>#p2,只有在直接从属关系下生效,#p1直接包含#p2生效,#p1包含其它标签再包含#p2则无效。派生选择器:#p1 #p2,只要#p1包含#p2就生效。可以是直接从属关系,也可以是间接从属关系。使用+。
可以选择紧跟在一个元素后面的另一个元素,二者具有相同的父元素。使用较少。
<style type="text/css"> li+li{ color: #b3d4fc; } </style> <article> <ul> <li>1</li> <li>2</li> <li>3</li> </ul> </br> <ol> <li>21</li> <li>22</li> <li>23</li> <li>24</li> </ol> </article> 代码结果:%表示相对于原来固有长度宽度的缩放比例。
px表示“绝对尺寸”(并非真正的绝对),实际上就是css中定义的像素(此像素与设备的物理像素有一定的区别,后续详细说明见文末说明1),利用px设置字体大小及元素宽高等比较稳定和精确。Px的缺点是其不能适应浏览器缩放时产生的变化,因此一般不用于响应式网站。
em表示相对尺寸,其相对于当前对象内文本的font-size(如果当前对象内文本的font-size计量单位也是em,则当前对象内文本的font-size的参考对象为父元素文本font-size)。使用em可以较好的相应设备屏幕尺寸的变化,但是在进行元素设置时都需要知道父元素文本的font-size及当前对象内文本的font-size,如有遗漏可能会导致错误。
rem也表示相对尺寸,其参考对象为根元素html的font-size,因此只需要确定这一个font-size。
参考文档:四款好看实用的CSS表格样式分享
table{ border: 10px; /*外边框长度 颜色*/ border-collapse: collapse; /*外边框折叠*/ padding: 15px; /*内边距*/ }参考文档:CSS position 属性
#d1{ position: absolute; /*位置布局*/ left: 50px; /*偏移量*/ right: 50px; top: 50px; bottom: 50px; z-index: 1; /*(有元素覆盖时的)覆盖顺序优先级*/ } 值描述absolute生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。fixed生成绝对定位的元素,相对于浏览器窗口进行定位。元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。relative生成相对定位的元素,相对于其正常位置进行定位。因此,“left:20” 会向元素的 LEFT 位置添加 20 像素。static默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。inherit规定应该从父元素继承 position 属性的值。通常使用div分块。 从内到外,依次是: content,内容。 padding,内边距。 border,边框。 margin,外边距。
其大小靠width和height属性指定。
CSS3边框:
<style type="text/css"> #d1{ width: 200px; background-color: aquamarine; text-align: center; border-radius: 10px; /*圆角边框*/ box-shadow: 10px 10px 5px #b3d4fc; /*边框阴影*/ border-image: url("myjpg.jpg"); /*边框图片*/ } </style> <div id="d1">测试</div>代码结果:
通常为透明区域。
#d1{ margin: 10px; /*设置所有外边距*/ margin-left: 5px; margin-right: 5px; margin-top: 5px; margin-bottom: 5px; } 外边距是可以覆盖的: A的右边距为100,B的左边距为100,则实际上A和B的距离为max(100, 100)。外边距和外边距之间是不冲突的,可以叠加/覆盖的。大多数动画方法有针对不同浏览器的兼容方法。
方法前缀对应浏览器-webkit-Safari、Chrome-ms-IE-o-Opera-moz-Firefox参考文档:对CSS3中的transform:Matrix()矩阵的一些理解
浏览器兼容性同上。
参考文档:CSS3 过渡
应用于宽度属性的过渡效果,时长为 2 秒: transition: width 2s; 规定当鼠标指针悬浮于元素上时: .d1:hover{ width:300px; } CSS3转换属性简介: 属性描述transition简写属性,用于在一个属性中设置四个过渡属性。transition-property规定应用过渡的 CSS 属性的名称。transition-duration定义过渡效果花费的时间。默认是 0。transition-timing-function规定过渡效果的时间曲线。默认是 “ease”。transition-delay规定过渡效果何时开始。默认是 0。 实例: .d1{ transition-property: width; transition-duration: 1s; transition-timing-function: linear; transition-delay: 2s; } 简写: transition: width 1s linear 2s;关键字animation,使用@keyframes接名称定义。
示例: <style type="text/css"> .d1 { width: 100px; height: 100px; background-color: blueviolet; position: relative; animation:a1 5s; /*指定名称 动画时间*/ } @keyframes a1{ /*动画时间节点 定义不同的颜色 和位置*/ 0%{background: #b3d4fc; left: 0; top: 0} 25%{background: #888888; left: 200px; top: 0px} 50%{background: black; left: 200px; top: 200px} 75%{background: #555555; left: 0px; top: 200px} 100%{background: #cccccc; left: 0px; top: 0px} } </style> <div class="d1"> </div>代码结果:
状态1: 状态2: 状态3: 状态4:可以创建多列对文本或者区域进行布局。
<style type="text/css"> .d1 { column-count: 3; /*数量*/ column-width: 250px; /*宽度*/ column-gap: 50px; /*边距*/ column-rule: 5px outset #FF0000; /*规则*/ } </style> <div class="d1"> AAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAA </div> 代码结果:瀑布流,又称瀑布流式布局。是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部。最早采用此布局的网站是Pinterest,逐渐在国内流行开来。国内大多数清新站基本为这类风格。
示意图片: 示例: <style type="text/css"> .d1{ column-width: 250px; /*宽度*/ column-gap: 5px; /*边距*/ } .d1 .d2{ width: 250px; /*宽度*/ margin: 5px 0; /*边缘长度*/ } </style> <div class="d1"> <div class="d2"> <img src="image/1.jpg "> <img src="image/2.jpg "> <img src="image/3.jpg "> <img src="image/4.jpg "> <img src="image/5.jpg "> <img src="image/6.jpg "> <img src="image/1.jpg "> <img src="image/2.jpg "> <img src="image/3.jpg "> <img src="image/4.jpg "> <img src="image/5.jpg "> <img src="image/6.jpg "> </div> </div>其核心是采用多列、只定义宽度不定义长度。
代码结果: