首页 > 代码库 > CSS选择器
CSS选择器
1. 选择器浏览器支持情况
使用CSS选择器时,要考虑到不同浏览器下的支持情况,主要是IE的不同版本。
2. 选择器权重计算规则
- x-0-0 : x表示ID选择器的个数
- 0-x-0 : x表示类选择、属性选择器、伪类选择器个数
- 0-0-x : x表示元素选择器个数
- x-0-0-0 : 内联style
- x-0-0-0-0: !important
note:
*,+,-,~, :not 不计入权重计算, 类选择器和属性选择器可看做是同一级
对号入座
ul#nav li.active a
3. 选择器效率
按照浏览器解析效率排序 由高到低
- ID选择器(#header)
- 类选择器(.promo)
- 元素选择器(div)
- 相邻选择器(h2 + p)
- 子选择器(div > a)
- 后代选择器(ul a)
- 通配符选择器(*)
- 属性选择器([type="text"])
- 伪类选择器(a:hover)
4. 选择器解析顺序
浏览器是怎么查找元素的?浏览器解析 CSS 选择器的顺序是从右向左的。
div.cmn_tab .tools { position: absolute; right: 5px; bottom: 8px; z-index: 50; line-height: 1.231;}
首先查找到页面中所有带class=tools的元素,然后再匹配遍历找到父节点带class=cmn_tab的元素,最后再匹配该元素标签名是否是div。
性能与可维护性的权衡
#nav .link{ background-color: red;}.link { background-color: red;}
5. 选择器优化建议
不要在ID选择器前使用标签名或类名
div#nav{ } //不建议.menu#nav { } //不建议#nav {} //建议
不要在class选择器前用标签名
div.nav { } //不建议.nav { } //建议
多层标签选择器用class选择器替换,减少查找
table.cmn_table tr td span a.link { } //不建议.table-a-link { } //建议
依靠继承
#menu-item .item {list-style-image: url(...)} //不建议#menu-item {list-style-image: url(...)} //建议
更详细内容,请看
CSS Compatibility in Internet Explorer
Specifics on CSS Specificity
Writing efficient CSS selectors
CSS选择器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。