1.属性选择器
属性选择器可以根据元素的属性及属性值来选择元素。css3中新增了三种属性选择器:E[att^=value]、E[att$=value]、E[att*=value]。
1.1 E[att^=value]属性选择器
1.2 E[att$=value]属性选择器
E[att^=value]属性选择器是指选择名称为E的标记,且该标记定义了att属性,att属性值包含后缀为value的子字符串,E可以省略,如果省略,表示可以匹配满足条件的任意字符。例如,div[id$="section"]表示匹配包含id属性,且id属性是以"section"字符串结尾的div元素。
E[att*=value]属性选择器是指选择名称为E的标记,且该标记定义了att属性,att属性值包含value的子字符串,E可以省略,如果省略,表示可以匹配满足条件的任意字符。例如,div[id*="section"]表示匹配包含id属性,且id属性是包含"section"字符串的div元素。
css3中的关系选择器主要包括子代选择器和兄弟选择器,其中子代选择器有符号“>”连接,兄弟选择器由符号"+"和"~"连接。
2.1 子代选择器(>)
子代选择器主要用来选择某个元素的第一级子元素。例如希望选择只作为h1子元素的strong元素,可以这样写:h1>strong。
兄弟选择器用来选择与某元素位于同一父元素之中,且位于该元素之后的兄弟元素,兄弟选择器分为临近兄弟选择器和普通兄弟选择器。
<1> 临近兄弟选择器
该选择器使用+号来连接前后两个选择器。选择器中的两个元素有同一个父亲,而第二个元素必须紧跟第一个元素。
<2> 普通兄弟选择器
结构化伪类选择器是css3中新增的选择器。常用的结构化伪类选择器有:root选择器、:not选择器、:only-child选择器、:first-child选择器、:last-child选择器、:nth-child(n)选择器、:nth-last-child(n)选择器、:nth-of-type(n)选择器、:nth-last-of-type(n)选择器、:empty选择器、:target选择器。
3.1 :root选择器
:root选择器用来匹配文档根元素,在html中根元素是html元素。也就是说使用“:root选择器”定义的样式对所有页面元素都生效。对于不需要该样式的元素,可以单独设置样式进行覆盖。
3.2 :not选择器
如果对某个结构元素使用样式,单行排除这个元素下面的子结构元素,让它不使用这个样式,可以使用:not选择器。如body*:not(h2){}该选择器用于排除body结构中的子结构元素h2。
3.3 :only-child选择器
:only-child选择器用于匹配属于某父元素的唯一子元素的元素。
3.4 :first-child选择器 和 :last-child选择器
:first-child选择器 和 :last-child选择器分别用于父元素中第一个或者最后一个子元素设置样式。如p:first-child{}
3.5 :nth-child(n)选择器 和 :nth-last-child(n)选择器
:nth-child(n)选择器 和 :nth-last-child(n)选择器分别用于父元素中第N个或者倒数第N个子元素设置样式。
3.6 :nth-of-type(n)选择器 和 :nth-last-of-type(n)选择器
:nth-child(n)选择器 和 :nth-last-child(n)选择器与类型无关,:nth-of-type(n)选择器 和 :nth-last-of-type(n)选择器用于匹配属于父元素的特殊类型的第n各元素和倒数第n各元素。
3.7 :empty选择器
用来选择没有子元素活文本内容为空的所有元素。
3.8 :target选择器
用来为页面的某个target元素(该元素的id被当做页面中的超链接来使用指定样式),只有用户单击了页面中的超链接,并且跳转到target元素后,:target选择器所设置的样式才会起作用。
4. 伪元素选择器
所谓为元素选择器,是针对css中已经定义好的伪元素使用的选择器。
4.1 :before选择器
:before选择器用于被选元素前面插入内容,必须配合content属性指定要插入的内容。
<元素>:before{
content:文字/url();
}
例如
p:before{
content:"传智播客";
color:red;
font-size:20px;
font-family:"微软雅黑";
font-weight:bold;
}
4.2 :after选择器
:after选择器用于在某个元素之后插入一些内容,使用方法与:before相同。
p:after{
content:url(images/tu.jpg);
}
5. 链接伪类
它的名称通常由标记名、类名或者id名加上:构成。
超链接标记<a>的伪类 含义
a:link{css样式规则} 未访问时超链接的状态
a:visited{css样式规则} 访问后超链接的状态
a:hover{css样式规则} 鼠标经过、悬停时超链接的状态
a:active{css样式规则} 鼠标单击不动时超链接的状态
注意:
(1)同时使用链接的4种伪类时,通常按照a:link a:visited a:hover a:active的顺序书写,否则定义的样式可能不起作用。
(2)除文本样式之外,链接伪类还常常用于控制超链接的背景、边框等样式。
属性选择器可以根据元素的属性及属性值来选择元素。css3中新增了三种属性选择器:E[att^=value]、E[att$=value]、E[att*=value]。
1.1 E[att^=value]属性选择器
E[att^=value]属性选择器是指选择名称为E的标记,且该标记定义了att属性,att属性值包含前缀为value的子字符串,E可以省略,如果省略,表示可以匹配满足条件的任意字符。例如,div[id^="section"]表示匹配包含id属性,且id属性是以"section"字符串开头的div元素。
1.2 E[att$=value]属性选择器
E[att^=value]属性选择器是指选择名称为E的标记,且该标记定义了att属性,att属性值包含后缀为value的子字符串,E可以省略,如果省略,表示可以匹配满足条件的任意字符。例如,div[id$="section"]表示匹配包含id属性,且id属性是以"section"字符串结尾的div元素。
上面那个例子说明了只要p元素的id属性是以“main”字符串结尾就会被选中,而呈现特殊的文本效果。
E[att*=value]属性选择器是指选择名称为E的标记,且该标记定义了att属性,att属性值包含value的子字符串,E可以省略,如果省略,表示可以匹配满足条件的任意字符。例如,div[id*="section"]表示匹配包含id属性,且id属性是包含"section"字符串的div元素。
上面那个例子说明了只要p元素的id属性包含“demo”字符串就会被选中,而呈现特殊的文本效果。
css3中的关系选择器主要包括子代选择器和兄弟选择器,其中子代选择器有符号“>”连接,兄弟选择器由符号"+"和"~"连接。
2.1 子代选择器(>)
子代选择器主要用来选择某个元素的第一级子元素。例如希望选择只作为h1子元素的strong元素,可以这样写:h1>strong。
上述例子说明,第15行代码中的strong元素为h1元素的子元素,第16行代码中的strong元素为h1的孙元素,因此代码设置样式只是对15行代码起作用。
兄弟选择器用来选择与某元素位于同一父元素之中,且位于该元素之后的兄弟元素,兄弟选择器分为临近兄弟选择器和普通兄弟选择器。
<1> 临近兄弟选择器
该选择器使用+号来连接前后两个选择器。选择器中的两个元素有同一个父亲,而第二个元素必须紧跟第一个元素。
<2> 普通兄弟选择器
该选择器使用"~"好来连接前后两个选择器。选择器中的两个元素有同一个父亲,而第二个元素不必紧跟第一个元素。
结构化伪类选择器是css3中新增的选择器。常用的结构化伪类选择器有:root选择器、:not选择器、:only-child选择器、:first-child选择器、:last-child选择器、:nth-child(n)选择器、:nth-last-child(n)选择器、:nth-of-type(n)选择器、:nth-last-of-type(n)选择器、:empty选择器、:target选择器。
3.1 :root选择器
:root选择器用来匹配文档根元素,在html中根元素是html元素。也就是说使用“:root选择器”定义的样式对所有页面元素都生效。对于不需要该样式的元素,可以单独设置样式进行覆盖。
3.2 :not选择器
如果对某个结构元素使用样式,单行排除这个元素下面的子结构元素,让它不使用这个样式,可以使用:not选择器。如body*:not(h2){}该选择器用于排除body结构中的子结构元素h2。
3.3 :only-child选择器
:only-child选择器用于匹配属于某父元素的唯一子元素的元素。
3.4 :first-child选择器 和 :last-child选择器
:first-child选择器 和 :last-child选择器分别用于父元素中第一个或者最后一个子元素设置样式。如p:first-child{}
3.5 :nth-child(n)选择器 和 :nth-last-child(n)选择器
:nth-child(n)选择器 和 :nth-last-child(n)选择器分别用于父元素中第N个或者倒数第N个子元素设置样式。
3.6 :nth-of-type(n)选择器 和 :nth-last-of-type(n)选择器
:nth-child(n)选择器 和 :nth-last-child(n)选择器与类型无关,:nth-of-type(n)选择器 和 :nth-last-of-type(n)选择器用于匹配属于父元素的特殊类型的第n各元素和倒数第n各元素。
3.7 :empty选择器
用来选择没有子元素活文本内容为空的所有元素。
3.8 :target选择器
用来为页面的某个target元素(该元素的id被当做页面中的超链接来使用指定样式),只有用户单击了页面中的超链接,并且跳转到target元素后,:target选择器所设置的样式才会起作用。
4. 伪元素选择器
所谓为元素选择器,是针对css中已经定义好的伪元素使用的选择器。
4.1 :before选择器
:before选择器用于被选元素前面插入内容,必须配合content属性指定要插入的内容。
<元素>:before{
content:文字/url();
}
例如
p:before{
content:"传智播客";
color:red;
font-size:20px;
font-family:"微软雅黑";
font-weight:bold;
}
4.2 :after选择器
:after选择器用于在某个元素之后插入一些内容,使用方法与:before相同。
p:after{
content:url(images/tu.jpg);
}
5. 链接伪类
它的名称通常由标记名、类名或者id名加上:构成。
超链接标记<a>的伪类 含义
a:link{css样式规则} 未访问时超链接的状态
a:visited{css样式规则} 访问后超链接的状态
a:hover{css样式规则} 鼠标经过、悬停时超链接的状态
a:active{css样式规则} 鼠标单击不动时超链接的状态
注意:
(1)同时使用链接的4种伪类时,通常按照a:link a:visited a:hover a:active的顺序书写,否则定义的样式可能不起作用。
(2)除文本样式之外,链接伪类还常常用于控制超链接的背景、边框等样式。