目录css
CSS(Cascading Style Sheets)一般被称为CSS样式表或层叠样式表(级联样式表),主要用于设置HTML页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、边距等)以及版面的布局等外观显示样式。它就是包含一个或多个规则的文本文件。html
样式表的每一个规则都有两个部分,即选择器(selection)和声明(declaration)。
浏览器
咱们也能够在样式规则中用/*注释内容*/
语法来注释内容。另外,样式会被该元素的后代继承,不过浏览器在解析代码时,只会解析离它最近的样式。布局
基本语法:字体
<label style="样式属性:属性值;样式属性:属性值;···">
基本语法:url
<head> <style type="text/CSS"> 选择器 {属性1:属性值1; 属性2:属性值2; 属性3:属性值3;} </style> </head>
基本语法:code
<head> <link href="CSS文件的路径" type="text/CSS" rel="stylesheet" /> </head>
说明:htm
type
:定义所连接文档的类型,在这里须要指定为“text/CSS”,表示连接的外部文件为CSS样式表rel
:定义当前文档与被连接文档之间的关系,在这里须要指定为“stylesheet”,表示被连接的文档是一个样式表文件link
:该标签是一个单标签或者:对象
<style type="text/css"> @import url("外部样式表的文件名称") </style>
标签名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; } 或者 元素名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
.类名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
不过咱们必须在标签里面以下定义:blog
<label class="类名"></label>
#id名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3;}
不过咱们也要在标签里面以下定义:
<label id="id名"></label>
* { 属性1:属性值1; 属性2:属性值2; 属性3:属性值3;}
通配符选择器用“*”号表示,它是全部选择器中做用范围最广的,能匹配页面中全部的元素。
伪类选择器用于向某些选择器添加特殊的效果。好比给连接添加特殊效果, 好比能够选择 第1个,第n个元素。
:link
:未访问的连接:visited
:已访问的连接:hover
:鼠标移动的连接上:active
:选定的连接<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <style> a:hover{ color: red; } </style> <body> <a href="http://www.baudu.com/">百度</a> </body> </html>
:first-child
:选取属于其父元素的首个子元素的指定选择器:last-child
:选取属于其父元素的最后一个子元素的指定选择器:nth-child(n)
: 匹配属于其父元素的第 N 个子元素,不论元素的类型:nth-last-child(n)
:选择器匹配属于其元素的第 N 个子元素的每一个元素,不论元素的类型,从最后一个子元素开始计数:target
目标伪类选择器 :选择器可用于选取当前活动的目标元素
咱们直接把须要交集的选择器连在一块儿,如:
<style> p.class#id{ ... } </style>
在选择器的中间加上逗号:
<style> p,.class,#id{ ... } </style>
后代选择器又称为包含选择器,用来选择元素或元素组的后代,其写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔。
<style> p .class #id{ ... } </style>
子元素选择器只能选择做为某元素子元素的元素。其写法就是把父级标签写在前面,子级标签写在后面,中间跟一个 >
进行链接,注意,符号左右两侧各保留一个空格。
<style> .demo > h3 {color: red;} </style>
选取标签带有某些特殊属性的选择器 咱们成为属性选择器
/* 获取到 拥有 该属性的元素 */ div[class^=font] { /* class^=font 表示 font 开始位置就好了 */ color: pink; } div[class$=footer] { /* class$=footer 表示 footer 结束位置就好了 */ color: skyblue; } div[class*=tao] { /* class*=tao *= 表示tao 在任意位置均可以 */ color: green; }
E::first-letter
文本的第一个单词或字(如中文、日文、韩文等)E::first-line
文本第一行;E::selection
可改变选中文本的样式;E::before
和E::after
:在E元素内部的开始位置和结束位建立一个元素,该元素为行内元素,且必需要结合content属性使用;每一个块元素一般都会独自占据一整行或多整行,能够对其设置宽度、高度、对齐等属性,经常使用于网页布局和网页结构的搭建。
特色:
行内元素(内联元素)不占有独立的区域,仅仅靠自身的字体大小和图像尺寸来支撑结构,通常不能够设置宽度、高度、对齐等属性,经常使用于控制页面中文本的样式。
特色:
在行内元素中有几个特殊的标签如<img>
、<input>
、<td>
,能够对它们设置宽高和对齐属性,咱们称它们为行内块元素。
特色:
display
display:inline
:块转行内display:block
:行内转块display: inline-block
:块、行内元素转换为行内块这是浏览器处理冲突的一个能力,若是一个属性经过两个选择器设置到同一个元素上,那么这个时候一个属性就会将另外一个属性层叠掉。通常状况下,若是出现样式冲突,则会按照CSS书写的顺序,以最后的样式为准。
所谓继承性是指书写CSS样式表时,子标签会继承父标签的某些样式,如文本颜色和字号。想要设置一个可继承的属性,只需将它应用于父元素便可。
定义CSS样式时,常常出现两个或更多规则应用在同一元素上,这时就会出现优先级的问题:
继承样式的权重为0。即在嵌套结构中,无论父元素样式的权重多大,被子元素继承时,他的权重都为0,也就是说子元素定义的样式会覆盖继承来的样式。
行内样式优先。应用style属性的元素,其行内样式的权重很是高,能够理解为远大于100。总之,他拥有比上面提升的选择器都大的优先级。
权重相同时,CSS遵循就近原则。也就是说靠近元素的样式具备最大的优先级,或者说排在最后的样式优先级最大。
CSS定义了一个!important命令,该命令被赋予最大的优先级。也就是说无论权重如何以及样式位置的远近,!important都具备最大优先级。
关于CSS权重,咱们须要一套计算公式来去计算,这个就是 CSS Specificity,咱们称为CSS 特性或称非凡性,它是一个衡量CSS值优先级的一个标准 具体规范入以下:
specificity用一个四位的数 字串(CSS2是三位)来表示,更像四个级别,值从左到右,左面的最大,一级大于一级,数位之间没有进制,级别之间不可超越。
且数位之间没有进制 好比说: 0,0,0,5 + 0,0,0,5 =0,0,0,10 而不是 0,0, 1, 0, 因此不会存在10个div能遇上一个类选择器的状况。
继承或者* 的贡献值 | 0,0,0,0 |
---|---|
每一个元素(标签)贡献值为 | 0,0,0,1 |
每一个类,伪类贡献值为 | 0,0,1,0 |
每一个ID贡献值为 | 0,1,0,0 |
每一个行内样式贡献值 | 1,0,0,0 |
每一个!important贡献值 | ∞ 无穷大 |
优先总结: