`

【转】一些比较高效的CSS写法建议

css 
阅读更多

当浏览器解析html的时候,它构造了一个文档树来展现所有被显示的元素。 它在特定的样式表中去匹配元素,根据标准的css的层叠,继承和顺序规则, 在mozilla的实现中(可能其他的也是这样),对于每一个元素,css引擎通过规则去寻找匹配,css引擎评估每一个规则是从右到左的,从最右的selector开始, 也称之为key selector,直到找到匹配为止。

根据这个规则,越少的规则使用,css引擎将评估的越好。因此,移除没有用的css是改善页面性能的重要一步。之后,对于页面包含很多的元素的css规则, 优化这些规则也有利于提高页面的性能。优化页面性能最重要的一点在于使用明确的,避免不需要冗余的,使引擎系统快速的匹配到元素而不需要花费太多的时间。


下面的这些规则被认为是低效的

  1. 使用了后代选择器
  2. 使用全局选择器作为key

    body * {...}
    .hide-scrollbars * {...}
    

    使用了标签选择器作为key

    ul li a {...}
    #footer h3 {...}
    
     
  3. 使用子选择器和相邻选择器
  4. 使用全局选择器作为key

    body > * {...}
    .hide-scrollbars > * {...}
    

    使用标签选择器作为key

    ul > li > a {...}
    #footer > h3 {...}
    
     

    子选择器和相邻选择器是低效的是因为对于每一个元素的匹配,浏览器不得不评估其他的一些元素,它需要双倍的时间耗费在匹配上。同时,越少的精确的 key,越多的时间花费在匹配元素上面。尽管如此,即使是不高效的,他们比后代选择器的使用的效果要好一点。

     

  5. 过渡的限定选择器
  6. id选择器是唯一的,包含了tag或者class的限定仅仅是增加了一些无用的信息(浏览器去评估)

    ul#top_blue_nav {...}
    form#UserLogin {...}
    
     
  7. 使用:hover在一些没有:hover的元素上面
  8. 在非标准模式下面。ie7,ie8将忽略这些规则。在标准模式下面,可能会导致一些性能的退化

    h3:hover {...}
    .foo:hover {...}

推荐的方式

  1. 避免使用全局样式
  2. 允许一个元素去继承它的祖先,或者使用一个class去应用复杂的元素。

     

  3. 将规则写的越精确越好
  4. 偏向使用class ,id,少使用tag

     

  5. 移除一些无用的限定
  6. 下面的这些限定是多余的:1.id选择器被class 或者tag选择器限定;2.class被tag选择器进行限定(如果一个class只被用于一个tag,这也是很好的实践)。

     

  7. 避免使用后代选择器,特别是包含了一些无用的祖先元素
  8. eg:body ul li a{...} 制定了一个无用的body限定,因为所有的元素都是在body中。

     

  9. 使用class选择器取代后代选择器
  10. eg:如果你需要两个不同的样式(一个无序列表,一个有序列表),不要使用下面的样式

    ul li {color:blue}
    ol li {color:red}
    
     

    应该这样的使用

    .unordered-list-item {color: blue;}
    .ordered-list-item {color: red;}
    
      
    如果你一定要用后代选择器,建议你使用子选择器

  11. 避免使用:hover在一些没有连接的元素上面(对于ie序列的)
  12. 如果你使用:hover在一些无连接的元素上面,ie7,8会认为他们是无用的。建议使用事件onmouseover 来模拟。

转自网络
分享到:
评论

相关推荐

    书写高效的CSS

    ### 书写高效的CSS #### 概述 在Web开发领域,CSS(层叠样式表)是一种用于描述HTML或XML文档的外观和格式的语言。随着Web技术的发展与网站复杂度的提升,编写高效的CSS成为了前端工程师的一项必备技能。本文将...

    css书写高效的CSS-CSS的渲染效率

    ### CSS书写高效的CSS-CSS的渲染效率 在前端开发领域,CSS(层叠样式表)是构建网页布局、样式和视觉效果的关键技术之一。优化CSS不仅能够提升网站性能,还能改善用户体验。本文将从几个方面探讨如何通过改进CSS...

    css+Div 样式规范写法.pdf

    在网页设计中,CSS(Cascading Style Sheets)与HTML中的Div元素结合使用,能够实现高效、可维护的页面布局。本篇文档主要探讨了在使用Div+CSS时的命名规范,这对于团队协作和后期维护至关重要。以下是相关知识点的...

    CSS 约定写法 利用扩展

    以下是一些关于CSS约定写法和利用扩展的具体实践建议: 1. **外部链接引入CSS**: 为减少HTTP请求次数并提高页面加载速度,应尽量将所有样式集中到外部CSS文件中,而不是内联在HTML中。这样也方便代码管理和后期...

    CSS代码编写的一些性能优化技巧总结

    此外,高效CSS指南还建议避免使用后代选择器。后代选择器通过空格分隔各个选择器,它不仅会降低匹配效率,而且会增加文档的特定性和依赖性,导致当DOM结构稍有改变时,样式规则可能无法正确应用。如果确实需要使用...

    CSS全科教程(Word文档)

    - **解决问题**:CSS解决了传统网页设计中样式难以统一、难以修改的问题,使开发者能够更加高效地管理网站外观。 - **工作效益提升**:通过CSS可以轻松地控制多个网页的一致性和风格,极大地提高了开发效率。 **1.2...

    编写出色css代码的13个建议

    ### 编写出色CSS代码的13个建议 #### 1. 使用Reset但并非全局Reset 在CSS开发中,浏览器的默认样式差异可能导致布局不一致,因此使用CSS Reset是一种常见做法,它能确保各个浏览器之间的一致性。但是,全局Reset...

    10条影响CSS渲染速度的写法与使用建议第1/3页

    在优化CSS渲染速度方面,有一些关键的策略可以显著提升网页加载和显示的效率。以下是根据提供的内容总结的10条建议: 1. 避免使用通配符选择器 `*{}` 通配符选择器 `*` 会遍历页面上的所有元素,这在性能上是一个...

    css 简单区别ie6,ie7,firefox的写法

    在标题“css 简单区别ie6,ie7,firefox的写法”中,提及的是如何利用CSS的一些特性来区分这三个浏览器,从而对它们应用不同的样式。具体而言,描述中提到的是通过在CSS代码中使用特定的语法来区分不同浏览器的写法。 ...

    Atomic CSS Helper-crx插件

    常规CSS,是我们常见的CSS写法,通常包含各种规则集,包括选择器、属性和值,可能会出现重复和不易管理的问题。Atomic CSS Helper插件的作用就在于此,它允许开发者在编写常规CSS时,自动转换为原子CSS格式,反之...

    CSS2+DIV.doc

    清晰的页面结构有助于更高效地设计CSS样式。 - **样式表优先级**:在CSS中,样式表的优先级遵循以下原则:外部样式 内部样式 内联样式。值得注意的是,当外部样式位于内部样式之后时,外部样式会覆盖内部样式。 - ...

    关于CSS的一些基础应用

    以下是一些关于CSS基础应用的关键知识点: 一、关于注释 在编写CSS代码时,注释是至关重要的。良好的注释习惯可以帮助开发者更好地理解代码逻辑,方便日后维护。通常,我们会使用“/* 注释内容 */”的形式添加注释...

    Div+CSS的十八般技巧

    以上这些技巧和策略是Div+CSS布局中非常实用的部分,它们不仅可以帮助开发者创建出美观、高效、易于维护的网站,还能有效提升用户体验和搜索引擎优化效果。通过不断实践和学习新的CSS技术,可以进一步提高自己的前端...

    对css性能优化的一点看法

    本文讨论了使用PageSpeed这一工具对CSS进行性能优化的看法,同时提供了对CSS写法、类与ID的使用以及页面样式加载优化的深入分析。 首先,文章提到了目前流行的两个网页性能测试工具:雅虎的YSlow和谷歌的PageSpeed ...

    Discuzx系统 CSS 编码规范、CSS属性书写顺序

    CSS编码规范还建议开发者不要使用冗余和低效的CSS写法。同时,对于使用!important声明的样式,应持谨慎态度。在命名class/id时,建议使用具有一定意义的词语,如表示状态(active)、结构(header/content/footer)...

    div+css实现圆角即网页上常用的圆角效果

    为了解决跨浏览器的兼容问题,可以使用相应的CSS前缀或者采用其他兼容性写法,比如使用IE特有的滤镜技术filter,或者利用CSS3 PIE(一个为IE浏览器提供CSS3效果的工具)。 通过观察给出的代码样例,我们可以看到...

    firefox与IE对js和CSS的区别.txt

    本文将详细探讨Firefox与Internet Explorer(简称IE)在处理JS和CSS时的一些主要区别,旨在帮助开发者更好地理解这些差异,并提供相应的解决方案。 #### 二、关键知识点详解 ##### 1. `document.formName.item(...

    Sass 中文离线文档

    这些功能使得CSS的编写更加高效,可维护性更高,并且有助于大型项目的样式管理。 特色功能(Features): Sass能够与CSS3完全兼容,并且扩展了CSS的功能,如增加变量、嵌套、混合指令等。它允许通过函数进行颜色值和...

    静态兼容性

    `:标准CSS写法,用于所有现代浏览器。 - `_height:100px;`:仅被IE6识别,用于IE6特定的样式。 - `*height:100px;`:IE7识别此写法,但不被Firefox识别。 - `*+height:100px;`:同时被IE7和Firefox识别,用于...

Global site tag (gtag.js) - Google Analytics