当浏览器解析html的时候,它构造了一个文档树来展现所有被显示的元素。 它在特定的样式表中去匹配元素,根据标准的css的层叠,继承和顺序规则,
在mozilla的实现中(可能其他的也是这样),对于每一个元素,css引擎通过规则去寻找匹配,css引擎评估每一个规则是从右到左的,从最右的selector开始,
也称之为key selector,直到找到匹配为止。
根据这个规则,越少的规则使用,css引擎将评估的越好。因此,移除没有用的css是改善页面性能的重要一步。之后,对于页面包含很多的元素的css规则,
优化这些规则也有利于提高页面的性能。优化页面性能最重要的一点在于使用明确的,避免不需要冗余的,使引擎系统快速的匹配到元素而不需要花费太多的时间。
下面的这些规则被认为是低效的
- 使用了后代选择器
使用全局选择器作为key
body * {...}
.hide-scrollbars * {...}
使用了标签选择器作为key
ul li a {...}
#footer h3 {...}
- 使用子选择器和相邻选择器
使用全局选择器作为key
body > * {...}
.hide-scrollbars > * {...}
使用标签选择器作为key
ul > li > a {...}
#footer > h3 {...}
|
|
子选择器和相邻选择器是低效的是因为对于每一个元素的匹配,浏览器不得不评估其他的一些元素,它需要双倍的时间耗费在匹配上。同时,越少的精确的
key,越多的时间花费在匹配元素上面。尽管如此,即使是不高效的,他们比后代选择器的使用的效果要好一点。
- 过渡的限定选择器
id选择器是唯一的,包含了tag或者class的限定仅仅是增加了一些无用的信息(浏览器去评估)
ul#top_blue_nav {...}
form#UserLogin {...}
- 使用:hover在一些没有:hover的元素上面
在非标准模式下面。ie7,ie8将忽略这些规则。在标准模式下面,可能会导致一些性能的退化
h3:hover {...}
.foo:hover {...}
推荐的方式
- 避免使用全局样式
允许一个元素去继承它的祖先,或者使用一个class去应用复杂的元素。
- 将规则写的越精确越好
偏向使用class ,id,少使用tag
- 移除一些无用的限定
下面的这些限定是多余的:1.id选择器被class 或者tag选择器限定;2.class被tag选择器进行限定(如果一个class只被用于一个tag,这也是很好的实践)。
- 避免使用后代选择器,特别是包含了一些无用的祖先元素
eg:body ul li a{...} 制定了一个无用的body限定,因为所有的元素都是在body中。
- 使用class选择器取代后代选择器
eg:如果你需要两个不同的样式(一个无序列表,一个有序列表),不要使用下面的样式
ul li {color:blue}
ol li {color:red}
应该这样的使用
.unordered-list-item {color: blue;}
.ordered-list-item {color: red;}
如果你一定要用后代选择器,建议你使用子选择器
- 避免使用:hover在一些没有连接的元素上面(对于ie序列的)
如果你使用:hover在一些无连接的元素上面,ie7,8会认为他们是无用的。建议使用事件onmouseover 来模拟。
转自网络
分享到:
相关推荐
### 书写高效的CSS #### 概述 在Web开发领域,CSS(层叠样式表)是一种用于描述HTML或XML文档的外观和格式的语言。随着Web技术的发展与网站复杂度的提升,编写高效的CSS成为了前端工程师的一项必备技能。本文将...
### CSS书写高效的CSS-CSS的渲染效率 在前端开发领域,CSS(层叠样式表)是构建网页布局、样式和视觉效果的关键技术之一。优化CSS不仅能够提升网站性能,还能改善用户体验。本文将从几个方面探讨如何通过改进CSS...
在网页设计中,CSS(Cascading Style Sheets)与HTML中的Div元素结合使用,能够实现高效、可维护的页面布局。本篇文档主要探讨了在使用Div+CSS时的命名规范,这对于团队协作和后期维护至关重要。以下是相关知识点的...
以下是一些关于CSS约定写法和利用扩展的具体实践建议: 1. **外部链接引入CSS**: 为减少HTTP请求次数并提高页面加载速度,应尽量将所有样式集中到外部CSS文件中,而不是内联在HTML中。这样也方便代码管理和后期...
此外,高效CSS指南还建议避免使用后代选择器。后代选择器通过空格分隔各个选择器,它不仅会降低匹配效率,而且会增加文档的特定性和依赖性,导致当DOM结构稍有改变时,样式规则可能无法正确应用。如果确实需要使用...
- **解决问题**:CSS解决了传统网页设计中样式难以统一、难以修改的问题,使开发者能够更加高效地管理网站外观。 - **工作效益提升**:通过CSS可以轻松地控制多个网页的一致性和风格,极大地提高了开发效率。 **1.2...
### 编写出色CSS代码的13个建议 #### 1. 使用Reset但并非全局Reset 在CSS开发中,浏览器的默认样式差异可能导致布局不一致,因此使用CSS Reset是一种常见做法,它能确保各个浏览器之间的一致性。但是,全局Reset...
DIV+CSS布局是一种高效的网页设计技术,它不仅有助于提高网页的加载速度,还能够简化网站维护工作。通过合理利用CSS的各种属性,可以轻松实现复杂且美观的网页布局。随着前端技术的不断发展,掌握DIV+CSS布局的基础...
在优化CSS渲染速度方面,有一些关键的策略可以显著提升网页加载和显示的效率。以下是根据提供的内容总结的10条建议: 1. 避免使用通配符选择器 `*{}` 通配符选择器 `*` 会遍历页面上的所有元素,这在性能上是一个...
在标题“css 简单区别ie6,ie7,firefox的写法”中,提及的是如何利用CSS的一些特性来区分这三个浏览器,从而对它们应用不同的样式。具体而言,描述中提到的是通过在CSS代码中使用特定的语法来区分不同浏览器的写法。 ...
常规CSS,是我们常见的CSS写法,通常包含各种规则集,包括选择器、属性和值,可能会出现重复和不易管理的问题。Atomic CSS Helper插件的作用就在于此,它允许开发者在编写常规CSS时,自动转换为原子CSS格式,反之...
清晰的页面结构有助于更高效地设计CSS样式。 - **样式表优先级**:在CSS中,样式表的优先级遵循以下原则:外部样式 内部样式 内联样式。值得注意的是,当外部样式位于内部样式之后时,外部样式会覆盖内部样式。 - ...
以下是一些关于CSS基础应用的关键知识点: 一、关于注释 在编写CSS代码时,注释是至关重要的。良好的注释习惯可以帮助开发者更好地理解代码逻辑,方便日后维护。通常,我们会使用“/* 注释内容 */”的形式添加注释...
以上这些技巧和策略是Div+CSS布局中非常实用的部分,它们不仅可以帮助开发者创建出美观、高效、易于维护的网站,还能有效提升用户体验和搜索引擎优化效果。通过不断实践和学习新的CSS技术,可以进一步提高自己的前端...
本文讨论了使用PageSpeed这一工具对CSS进行性能优化的看法,同时提供了对CSS写法、类与ID的使用以及页面样式加载优化的深入分析。 首先,文章提到了目前流行的两个网页性能测试工具:雅虎的YSlow和谷歌的PageSpeed ...
CSS编码规范还建议开发者不要使用冗余和低效的CSS写法。同时,对于使用!important声明的样式,应持谨慎态度。在命名class/id时,建议使用具有一定意义的词语,如表示状态(active)、结构(header/content/footer)...
为了解决跨浏览器的兼容问题,可以使用相应的CSS前缀或者采用其他兼容性写法,比如使用IE特有的滤镜技术filter,或者利用CSS3 PIE(一个为IE浏览器提供CSS3效果的工具)。 通过观察给出的代码样例,我们可以看到...
本文将详细探讨Firefox与Internet Explorer(简称IE)在处理JS和CSS时的一些主要区别,旨在帮助开发者更好地理解这些差异,并提供相应的解决方案。 #### 二、关键知识点详解 ##### 1. `document.formName.item(...
这些功能使得CSS的编写更加高效,可维护性更高,并且有助于大型项目的样式管理。 特色功能(Features): Sass能够与CSS3完全兼容,并且扩展了CSS的功能,如增加变量、嵌套、混合指令等。它允许通过函数进行颜色值和...
`:标准CSS写法,用于所有现代浏览器。 - `_height:100px;`:仅被IE6识别,用于IE6特定的样式。 - `*height:100px;`:IE7识别此写法,但不被Firefox识别。 - `*+height:100px;`:同时被IE7和Firefox识别,用于...