个你必须记住的CSS选择符.doc
文本预览下载声明
所以你学会了基础的id,类和后代选择符,然后你就一直用它们了吗?如果是这样,你丢失了(css的)巨大的灵活性。在本文中提到的很多选择器属于CSS3规范的一部分,因此,只有在现代浏览器中才可使用。
1.*
* {
margin: 0;
padding: 0;
}
对于初学者,在学习更多高级选择器之前,最先了解的选择器。
星号选择器将匹配页面里的每一个元素。很多开发者使用这个技巧将外边距和内边距重置为零。虽然在快速测试时这确实很好用,但我建议你永远不要再生产代码中使用它。它给浏览器带来大量不必要的负担。
* 也能作为子选择符使用。
#container * {
border: 1px solid black;
}
这将匹配#container div的每一个后代元素。再次强调,尽量不要使用这种技术。
查看例子
兼容性
IE6+
Firefox
Chrome
Safari
Opera
2.#X
#container {
width: 960px;
margin: auto;
}
井号前缀允许我们选择id。这是最常见的用法,不过应该慎重使用ID选择器。
反复问自己:我一定需要id来匹配要选择的元素吗?
id选择符是唯一的,不允许重复使用。如果可能的话,先尝试使用一个标签名称,一个新的HTML5元素,甚至是一个伪类。
查看例子
兼容性
IE6+
Firefox
Chrome
Safari
Opera
3. .X
.error {
color: red;
}
现在介绍的是类选择符。id和类的不同之处在于后者可以多次使用。当你想给一组元素应用样式的时候可以使用类选择符。另外, 当你紧想给特殊元素应用样式的时候才使用id。
查看例子
兼容性
IE6+
Firefox
Chrome
Safari
Opera
4. X Y
li a {
text-decoration: none;
}
?下一个最常用的选择符是后代选择符。当你需要给你的选择符增加特殊性的时候你可以使用。例如,如果你只想匹配无序列表下的锚元素?此时后代选择符派上用场。
小贴士——如果你的选择符看起来像这样 X Y Z A B.error,那你就错了。时刻问自己使用这高的权重是否有必要。
查看例子
兼容性
IE6+
Firefox
Chrome
Safari
Opera
?5. X
a { color: red; }
ul { margin-left: 0; }
如果你想匹配页面上的所有的元素,根据他们的类型,而不是id或类名?显而易见,使用类型选择符。如果你需要选择所有的无序列表,请使用ul {}。
查看例子
兼容性
IE6+
Firefox
Chrome
Safari
Opera
6. X:visited and X:link
a:link { color: red; }
a:visted { color: purple; }
我们使用:link 伪类选择符选择所有已经被点击过的锚标签。
此外,我们也有:visited伪类选择符, 正如你期望的,允许我们仅给页面上被点击过的或被访问过的锚标签应用样式。
查看例子
兼容性
IE7+
Firefox
Chrome
Safari
Opera
7. X + Y
ul + p {
color: red;
}
这被称作相邻选择符。它将只选择紧贴在X元素之后Y元素。上面的例子,仅每一个ul之后的第一个段落元素的文本为红色。
查看例子
兼容性
IE7+
Firefox
Chrome
Safari
Opera
8. X Y
div#container ul {
border: 1px solid black;
}
X Y和X Y之间的不同点是后者只选择直接子代。例如,考虑如下的标记。
div id=container
ul
li List Item
ul
li Child /li
/ul
/li
li List Item /li
li List Item /li
li List Item /li
/ul
/div
选择符#container ul将只选择id为container的div的直接子代ul。它不匹配更深层的li的子代的ul。
因此,使用子代选择符有性能上的优势。事实上,这同样适用于基于css选择器的javascript引擎。
查看例子
兼容性
IE7+
Fi
显示全部