• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >CSS > 该不该使用ID选择器?浅谈对CSS的ID选择器的使用建议

该不该使用ID选择器?浅谈对CSS的ID选择器的使用建议

作者:红薯 字体:[增加 减小] 来源:互联网 时间:2017-08-06

本文主要包含ID选择器,CSS等相关知识,红薯 希望在学习及工作中可以帮助到您

关于ID选择器
和class选择器不同,这里使用#
class的值不同标签可以发生重复。但是id不允许!!!
id选择器不能结合使用
id属性通常和js配合使用

  1. #label {   
  2.     background-color: red;   
  3. }  

思考
最近我在对 CSS 的样式进行一些性能测试,然后我的一些好友问我:为什么你不使用 IDs 来作为页面上一些特定的内容部分呢?
这个问题很难回答,有下面几个理由:
1.页面中的该元素无法重用
2.螺旋式下降导致的特异性
3.通过 IDs 用来标识一些非常特殊的内容,但牺牲了抽象性
4.性能方面可通过其他方式来解决
5.下面我们针对这四点进行深入探讨。

无法重用页面的元素
IDs 对程序员来说相当于是单例,一个页面中不允许存在两个相同的 id(当然浏览器不会报错就是了),这就意味着你不可能重用某个元素,相当于是一对一的关系。而根据我的速度测试,如果一段 CSS 代码只对一个元素起作用对速度并不利,同时也带来了 CSS 膨胀的额外开销。

由螺旋式下降导致的特异性
CSS 关于重载的两个方法:
1.级联: (任何下一级的元素都可以重写上一级CSS规则)
2.特异性: the idea of creating weight by using weighted selectors.
为什么我说这里是一个螺旋式下降,因为为了要重载一个优先级很高的规则,我必须给它设置添加再高的优先级。

  1. .ModuleOfficeList .property-checkbox input {display:block;margin-bottom:8px;_border:0px !important;}    
  2. .ModuleOfficeList .property-checkbox,   
  3. .ModuleOfficeList .new-icon,   
  4. .ModuleOfficeList .open-icon {display:block}    
  5. ....uid-officelistings .property-checkbox {display:none !important; }  

上面是我在 2005 年的一段真实的代码,上面的代码我必须在最后使用 !important 规则来对选择器规则进行重新排序。这很不好。一旦我们这样做......它需要我们更多的时间去追捕父ID,我们将推翻当前的特异性。这是不友好的而且不利于维护,最终你会掉进入自己挖好的洞,只有重构才能摆脱这个噩梦。

另一方面:
我听到少数的一些声音关于使用 ID 选择器的好

使用 ID 选择器更快
是的,这一点的确没错,而且我也曾经证明过。但是性能的表现微乎其微,但当你使用嵌套其他选择器时性能就下降了:

  1. #profile-module {...}    
  2. #profile-module li {...}    
  3. .profile-module li {...}  

第二个选择器就没有第三个来的快,因为CSS是从右到左的,因此 li 会先被扫描,因此通过 ID 进行定位将直接被忽略。
关于 CSS 选择器的性能问题,请看 Steve Souders explains how selector speed works.

IDs 就是单例的意思
很多人会在页面中定义 ID ,但某个元素在所有页面中只出现一次的话,用 ID 选择器是没问题的。我唯一声明的是所有代码都应该是可重用的,如果能避免还是尽量避免。

特别说明
最后需要说明的是,我并不是要大家完全抛弃使用 ID,ID 可以加速 JavaScript 执行,在文档中传达具体的意义。
我只是不建议在 CSS 中使用 ID 选择器,当然,决定权在于你自己。

您可能想查找下面的文章:

  • 该不该使用ID选择器?浅谈对CSS的ID选择器的使用建议
  • 简要讲解CSS中的类型选择器、ID选择器、类选择器

相关文章

  • 2017-08-06一款简洁的纯css3代码实现的动画导航
  • 2017-08-06web开发中怎么样使css书写规范?
  • 2017-08-06用CSS3来实现社交分享按钮
  • 2017-08-06一款CSS3实现多功能下拉菜单(带分享按)的教程
  • 2017-08-06css中height和line-height区别
  • 2017-08-06CSS注释的一些高级用法
  • 2017-08-06css 浮动 理解Float的含义
  • 2017-08-06html图片自适应手机屏幕大小的css写法
  • 2017-08-06怎么用纯CSS制作带小三角的tooltip提示框
  • 2017-08-06Css3圆角边框制作代码

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • CSS3模拟动画下拉菜单效果
    • 浏览器中的data类型的Url格式 data:image/png,data:image/jpeg!
    • css样式限制、防止表格被连续英文字母拉长及控制大图片的网页宽度
    • css串联选择器和后代选择器使用方法
    • CSS实现鼠标悬浮出现遮罩层示例源码
    • 多个浏览器透明度设置
    • css 标题一行图片 两行文字的排列方法以及相关问题处理
    • CSS3 倾斜的网页图片库实例教程
    • 浅谈css元素居中
    • pre标签的css代码,防止代码pre中代码过长等问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有