30个你不可不知的个你不可不知的CSS选择器小结选择器小结
一、全浏览器支持的css选择器(由于很好理解,demo省略)
1.*
*通配符选择器,经常用于css reset,即样式重置,清理标签的默认样式,但现在一般不提倡直接使用*了,主要是*会匹配所
有标签,相当耗资源。*在css的优先级中是最低的。
* {
margin: 0;
padding: 0;
}
也可以用*来匹配某一元素下的所有子元素:
#container * {
border: 1px solid black;
}
2.#X
#+id名,这是日常常用的css选择器,用于匹配id为XXX的元素,id选择器的优势是精准,高优先级(优先级基数为100,远高
于class的10),作为javascript脚本钩子的不二选择,同样缺点也很明显优先级过高,重用性差,所以在使用id选择器前,我
们最好问下自己,真的到了非用id选择器的地步?
#container {
width: 960px;
margin: auto;
}
3..X
.+class名,标准的样式选择器,与id选择器的区别是样式选择器可以选择多个元素。样式选择器是提倡使用的选择器,我想也
是日常前端人员用到最多的选择器了。
.error {
color: red;
}
4.X Y
li a {
text-decoration: none;
} 目前非常常用的css选择器,用于选取X元素下子元素Y,这里有个要留意的点是,这种方式的选择器将选取其下所有匹配的
子元素,无视层级,所以有的情况是不宜使用的,比如上述的代码去掉li下的所有a的下划线,但li里面还有个ul,我不希望ul下
的li的a去掉下划线。
使用此子孙选择器的时候要考虑是否希望某样式对所有子孙元素都起作用。
这种子孙选择器还有个作用,就是创建类似命名空间的作用。比如上述代码样式的作用域明显为li。
5.X
a { color: red; }
ul { margin-left: 0; } 标签选择器,优先级仅仅比*高,常用于css reset。
二、除IE6外浏览器支持的css选择器
6.X:link X:visited X:hover X:active
a:link { color: red; }
a:visted { color: purple; } 伪类选择器,visted已被访问过的样式,hover鼠标经过的样式,link未被访问的样式。三种伪类选择
器常用于链接,但不是说只适用于链接,可惜的是IE6只支持将这三种伪类选择器作用于链接。
这里明河说明一点,由于CSS优先级的关系(后面比前面的优先级高),这几个伪类的书写顺序,一般是link、visted、hover、
active。
猛击这里进入这里查看demo
7.X + Y
ul + p {
color: red;
} 相邻选择器,上述代码中就会匹配在ul后面的第一个p,将段落内的文字颜色设置为红色。(只匹配一个元素)
猛击这里进入这里查看demo
8.X > Y
子选择器,留意X > Y与X Y的区别,后者是子孙选择器,即无视层级,而X > Y是字选择器,只匹配X下的子元素Y。
从理论上来讲X > Y是值得提倡选择器,可惜IE6不支持。