本文全部基于HTML进行讲解,没有考虑XML,XHTML的情况,请知悉。
一、元素选择器
通配选择器
语法:
* { sRules }
说明:
选定文档所有的元素
示例:
* {
color: red;
}
<div>我是div</div>
元素选择器
语法:
E { sRules }
说明:
选定指定的文档元素E
示例:
p {
color: red; }
<p>我是p</p>
二、类选择器和ID选择器
类选择器
语法:
E.myclass { sRules }
说明:
选定class属性包含myclass的文档元素E
示例:
.myClass {
color: red
}
<div class="myclass">我是div</div>
多类选择器
语法:
E.myclass.myotherclass { sRules }
说明:
选定class属性包含myclass以及myotherclass的文档元素E
示例:
.myClass.myotherclass {
color: red
}
<div class="myclass myotherclass">我是div</div>
ID选择器
语法:
E#myid { sRules }
说明:
选定id属性值为myid的文档元素E
示例:
#myid {
color: red;
}
<div id="myid">我是div</div>
三、属性选择器
根据简单属性选择
语法:
E[attr] { sRules }
说明:
选定具有属性attr的文档元素E
示例:
div[id] {
color: red;
}
<div id="myid">我是div</div>
根据具体属性值选择
语法:
E[attr="val"] { sRules }
说明:
选定具有属性attr且属性值等于val的文档元素E
示例:
div[id="myid"] {
color: red;
}
/* 多个属性-值 */input[type="text"][class="text1"] {
width: 20px;
}
<div id="myid">我是div</div>
<input type="text" class="text1" />
根据部分属性值选择
语法:
E[attr~="val"] { sRules }
说明:
选定具有属性attr且属性值为一用空格分隔的字词列表,其中一个等于val(包含只有一个值且该值等于val的情况)的文档元素E
示例:
div[class~="div1"] {
color: red;
}
<div calss="div1">我是div</div>
<div class="div1 header">我是div</div>
语法:
E[attr^="val"] { sRules }
说明:
选定具有属性attr且属性值以val开头的字符串的文档元素E
示例:
div[class^="head"] {
color: red;
}
<div calss="headClass">我是div</div>
语法:
E[attr$="val"] { sRules }
说明:
选定具有属性attr且属性值以val结尾的字符串的文档元素E
示例:
div[class$="Class"] {
color: red;
}
<div calss="headClass">我是div</div>
语法:
E[attr*="val"] { sRules }
说明:
选定具有属性attr且属性值包含val的字符串的文档元素E
示例:
div[class*="Div"] {
color: red;
}
<div calss="headDivClass">我是div</div>
语法:
E[attr|="val"] { sRules }
说明:
选定具有属性attr且属性值以val开头并用连接符"-"分隔的字符串(包含属性值只有val的情况)的文档元素E
示例:
div[class|="head"] {
color: red;
}
<div calss="head-class">我是div</div>
四、关系选择器
后代选择器
语法:
E F { sRules }
说明:
选定文档元素E所有的后代元素F,包含所有子孙
示例:
/* 选中后代所有的p */
div p { color: red;
}
<div>
<p>我是段落1</p>
<div>
<p>我是段落2</p>
</div>
</div>
子代选择器
语法:
E>F { sRules }
说明:
选定文档元素E所有的子代元素F,不包含孙代元素
示例:
/* 选中子代的p,但选中不了孙代的p */
div>p { color: red;
}
<div>
<p>我是段落1</p>
<div>
<p>我是段落2</p>
</div>
</div>
相邻选择器
语法:
E+F { sRules }
说明:
选定文档元素E之后且同属一个父元素的相邻兄弟元素F
示例:
/* 只能选中h1相邻的p */
h1>p {
color: red;
}
<div>
<h1>我是h1</h1>
<p>我是段落1</p>
<p>我是段落2</p>
</div>
兄弟选择器
语法:
E~F { sRules }
说明:
选定文档元素E之后且同属一个父元素的兄弟元素F
示例:
/* 选中h1之后所有的p */
h1>p {
color: red;
}
<div>
<h1>我是h1</h1>
<p>我是段落1</p>
<p>我是段落2</p>
</div>
四、伪类和伪元素选择器
伪类选择器
语法:
a:link { sRules }
说明:
设置超链接a未被访问前的样式
示例:
a:link {
color: blue;
}
<a href="http://i.cnblogs.com"></a>
语法:
a:visited { sRules }
说明:
设置超链接a已经被访问后的样式
示例:
a:link {
color: red;
}
<a href="http://i.cnblogs.com"></a>
语法:
E:focus { sRules }
说明:
设置元素E在成为输入焦点(该元素的onfocus事件发生)时的样式
示例:
a:focus {
color: black;
}
<a href="http://i.cnblogs.com"></a>
语法:
E:hover { sRules }
说明:
设置元素E在鼠标悬停时的样式
示例:
a:hover {
color: red;
}
<a href="http://i.cnblogs.com"></a>
语法:
E:active { sRules }
说明:
设置元素E在被用户激活(在鼠标点击与释放之间发生的事件)时的样式
示例:
a:active{
color: green;
}
<a href="http://i.cnblogs.com"></a>
以上五种伪类选择器同时用在a超链接时,各伪类需按特定的顺序书写才能生效,保证各浏览器具有相同的表现。正确的顺序为:link - visited - focus - hover - active
语法:
E:lang(lang) { sRules }
说明:
选定使用特殊语言的元素E
示例:
p:lang(zh-cn) {
color: #f00;
}
p:lang(en) {
color: #090;
}
<p lang="zh-cn">我是中文</p>
<p lang="en">i am English</p>
更多关于CSS选择器可看:https://developer.mozilla.org/zh-CN/docs/Web/CSS/Type_selectors