该不该使用ID选择器?浅谈对CSS的ID选择器的使用
关于ID选择器
和class选择器不同,这里使用#
class的值不同标签可以发生重复。id不允许!!!
id选择器不能结合使用
id属性通常和js配合使用
- #label {
- background-color: red;
- }
思考
最近我在对 CSS 的样式进行一些性能测试,然后我的一些好友问我为什么你不使用 IDs 来作为页面上一些特定的内容部分呢?
这个问题很难回答,有狼蚁网站SEO优化几个理由
1.页面中的该元素无法重用
2.螺旋式下降导致的特异性
3.通过 IDs 用来标识一些非常特殊的内容,但牺牲了抽象性
4.性能方面可通过其他方式来解决
5.狼蚁网站SEO优化我们针对这四点进行深入探讨。
无法重用页面的元素
IDs 对程序员来说相当于是单例,一个页面中不允许存在两个相同的 id(浏览器不会报错就是了),这就意味着你不可能重用某个元素,相当于是一对一的关系。而根据我的速度测试,如果一段 CSS 代码只对一个元素起作用对速度并不利,也带来了 CSS 膨胀的额外开销。
由螺旋式下降导致的特异性
CSS 关于重载的两个方法
1.级联: (任何下一级的元素都可以重写上一级CSS规则)
2.特异性: the idea of creating weight by using weighted selectors.
为什么我说这里是一个螺旋式下降,因为为了要重载一个优先级很高的规则,我必须给它设置添加再高的优先级。
- .ModuleOfficeList .property-checkbox input {display:block;margin-bottom:8px;_border:0px !important;}
- .ModuleOfficeList .property-checkbox,
- .ModuleOfficeList .new-icon,
- .ModuleOfficeList .open-icon {display:block}
- ....uid-officelistings .property-checkbox {display:none !important; }
上面是我在 2005 年的一段真实的代码,上面的代码我必须在使用 !important 规则来对选择器规则进行重新排序。这很不好。一旦我们这样做......它需要我们更多的时间去追捕父ID,我们将推翻当前的特异性。这是不友好的而且不利于维护,最终你会掉进入自己挖好的洞,只有重构才能摆脱这个噩梦。
另一方面
我听到少数的一些声音关于使用 ID 选择器的好
使用 ID 选择器更快
是的,这一点的确没错,而且我也曾经证明过。性能的表现微乎其微,但当你使用嵌套其他选择器时性能就下降了
- #profile-module {...}
- #profile-module li {...}
- .profile-module li {...}
第二个选择器就没有第三个来的快,因为CSS是从右到左的, li 会先被扫描,通过 ID 进行定位将直接被忽略。
关于 CSS 选择器的性能问题,请看 Steve Souders explains how selector speed works.
IDs 就是单例的意思
很多人会在页面中定义 ID ,但某个元素在所有页面中只出现一次的话,用 ID 选择器是没问题的。我唯一声明的是所有代码都应该是可重用的,如果能避免还是尽量避免。
特别说明
需要说明的是,我并不是要大家完全抛弃使用 ID,ID 可以加速 JavaScript 执行,在文档中传达具体的意义。
我只是不建议在 CSS 中使用 ID 选择器,,决定权在于你自己。
长沙网站设计
- 如何进行东阳SEO关键词优化?
- 边坝哪有关键词排名优化:提升你的网站流量与
- 安国百度优化服务:提升您的在线可见性
- 阜康新手做SEO怎么做
- 山西seo网站排名关键词优化:提升您网站曝光率
- 临沂seo网站排名关键词优化:提高你的网站可见
- 广西SEO网站推广怎样付费比较合理
- 双辽SEO网站推广:提升你的网站可见性与流量
- 辽宁企业网站优化购买方式有哪些
- 提升宝清百度SEO排名的实用技巧与策略
- 静宁百度SEO排名:提升您网站曝光率的关键策略
- 彭州百度SEO排名的提升策略和实施指南
- 广南百度关键词SEO:提升网站排名的关键策略
- 辽宁关键词优化怎么做论坛营销
- 吉林百度seo排名如何做到让用户满意
- 内黄百度优化服务:提升在线可见性的关键