`
leiyonglin
  • 浏览: 50124 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

css选择符的性能

阅读更多

大部分情况下,大家都关注js性能,那么css性能又如何呢?

针对css的性能,有一些最佳实践:

1、把样式表放在文档head标签中

2、不要在ie中使用css表达式

3、避免使用过多的行内样式

 

浏览器尝试把css选择符和文档中的元素匹配起来,css选择符的编写方式决定了浏览器必须执行的匹配次数,某些选择符会导致浏览器尝试更多匹配,因此开销比简单选择符更高。

下面介绍css选择符大致按照最简单(最小开销)到最复杂(最大开销)顺序列出:

 

1、ID选择符: #top{}

2、类选择符:.top{}

3、类型选择符:a{}

4、相邻兄弟选择符:h1 + #top{}

5、子选择符 #top > a

6、后代选择符: #top a{}

7、通配选择符 :*{}

8、属性选择符:[href="#index"] {}

9、伪类和伪元素:a:hover{}

 

看如下规则:

#top a{}

多数人可能猜想浏览器是从左到右匹配规则,因此推测这条规则开销不高,因为页面中有唯一的#top,然后去匹配几个a,所以这样的选择符应该是相当高效的。事实上,CSS选择符是从右到左进行匹配 ,浏览器从右开始,遍历文档中所有的a,然后匹配每个链接的父节点和文档树去查找 a 的祖先元素是否id 为top。

那么如何编写高效的css选择符,下面是一些实践指南:

1、避免使用通配规则

2、不要限定id选择符

在页面中一个ID只能对应一个元素,所以类似 div#top是没有必要的,应简化为#top

3、不要限定类选择符

例如把 li.chapter 改成 .li-chapter 会更好

4、不要试图编写 #top ul li a{} 这样的长选择符,最好创建一个 .list{} 这样的类选择符并把它添加到适当的元素上

5、避免使用后台选择符

6、避免使用子选择符

7、质疑子选择符的用途

检查所有子选择符,然后尽可能用具体的类取代他们

8、依靠继承

 

分享到:
评论

相关推荐

    高性能网站建设进阶

    本书是《高性能网站建设指南》姊妹篇。作者Steve Souders是前Google Web性能布道者和前Yahoo!首席性能工程师。在本书中Souders与8位专家分享了提升网站性能的实践和实用建议,主要包括...简化CSS选择符,以及其他技术。

    CSS中的选择符实际使用指南

    在我最早开始写css的时候,其代码上的高自由度就一直很令我困惑。...评判标准就是可维护性(Maintainability)和性能(Performance),用比较通俗的话说,好的css,要对开发者的工作友好(dev-friendly),也要对浏览

    前端性能优化.pptx

    代码级别的优化,例如 Javascript中的DOM 操作优化、CSS选择符优化、图片优化以及 HTML结构优化等等来讲述前端性能优化的多个方式。 目录结构如下: 一、WEB性能优化相关理论 二、前端性能优化的目的 三、前端性能...

    CSS3:对Sublime Text的最全面CSS支持

    生产:提供了性能,描述符,@ -rules,功能和选择全套完井。 完成是高度针对您所写的内容。 现代的:标记错误,旧CSS。 没有突出显示不必要的带前缀属性。 捕获很多错误。 鼓励最佳做法。 忠实:非常严格地遵循W3C...

    Even Faster Web Sites: Performance Best Practices for Web Developers (PDF 电子书)

     • 浏览器——你将发现:避免或取代iframe的方法、简化CSS选择符,以及其他技术。  对于当前的富媒体网站和Web 2.0应用程序来说,速度至关重要。在本书中,你将学习如何节省宝贵的网站加载时间,使其更快地响应...

    CSS 网站性能优化笔记

    1、尽可能的除去空白区域 一般而言,空白区域字符(空格、制表符、换行符等)都可以安全删除。 2、除去注释 除了在客户端给IE和doctype声明的条件注释外,几乎所有的注释都可以安全去除掉。 3、使用最短格式的颜色...

    css代码优化的12个技巧

    编写好的CSS代码,有助提升页面的渲染速度。本质上,引擎需要解析的CSS规则越少,性能越好。MDN上将CSS选择符归类成四个主要类别,如下所示,性能依次降低

    weasyprint_test:Weasyprint性能和CSS支持的简单测试

    CSS支持我向我自己证明了打印页边距和分页符,以及更多诸如Flexbox布局和转换这样的“高级” CSS : weasyprint支持。 不幸的是,尚不支持writing-mode: vertical-lr ,但weasyprint恳请让我知道! weasyprint - ...

    小黄瓜.zipJQuery插件

    8月,jQuery的第一个稳定版本,并且已经支持CSS选择符、事件处理和AJAX交互。 2007年7月,jQuery 1.1.3版发布,这次小版本的变化包含了对jQuery选择符引擎执行速度的显著提升。从这个版本开始,jQuery的性能达到了...

    蓝色的.zipJQuery插件

    8月,jQuery的第一个稳定版本,并且已经支持CSS选择符、事件处理和AJAX交互。 2007年7月,jQuery 1.1.3版发布,这次小版本的变化包含了对jQuery选择符引擎执行速度的显著提升。从这个版本开始,jQuery的性能达到了...

    CSS编写规范的相关建议

    后代选择符最烂 不仅性能低下而且代码很脆弱,html代码和css代码严重耦合,html代码结构发生变化时,CSS也得修改,这是多么糟糕,特别是在大公司里,写html和css的往往不是同一个人。 CSS Code复制内容到剪贴板 //...

    css-style-guide

    现有的样式指南要么优先考虑CSS性能,要么使错误的部分变得简单,要么以丑陋HTML为代价创建漂亮CSS。 指引 一般的 制表符在空间。 有人认为: . my-selector { first-property : 1 ; second-property : 2 ; ...

    stylus-boilerplate:完整且可扩展的 Stylus CSS 框架

    Stylus Boilerplate 是一个纯粹的 UI 框架,专为性能和兼容性而构建。 它适用于关心设计人员和开发人员,旨在通过简单的模块化方法解决这些问题。 与类似,该项目使用占位符,以减少重复代码。 但是您不会被迫采用...

    editplus 代码编辑器html c++ jsp css

    (4)选择“制表符”,添加代表制表符的“\t”。 (5)移动光标,将当前插入点移到“]”之后,然后选择“匹配 0 次或更多”,该操作会添加星号字符“*”。星号表示,其前面的括号“[]”内的空格符或制表符,在一行中...

    jQuery基础教程(第四版)

    第9章重温关于选择符和遍历的知识,讲解了如何优化选择符的性能,如何操作DOM元素栈,以及编写插件扩展选择和遍历功能。 第10章深入讨论委托、截流等大幅提供事件处理性能的技术。同时,还将介绍通过扩展jQuery创建...

    最新jquery.1.8.1

    此外,选择器引擎Sizzle修复了一些边缘问题和bug,包括对于多个选择符(~ > +)的改进、更好地检测浏览器bug等。 5. XSS防护 $()方法可以创建HTML元素,如果被用来传递一个[removed]标签,则可以运行脚本。...

    移动端经验速递手册下载

    :checked与兄弟选择符一起使用的bug 为什么flex布局不生效 为什么小于12px字号不生效 chrome中body使用rem失效 不要对html设置百分比大小的字号 经验 禁止保存或拷贝图像 取消touch高亮 禁止选中内容 快速回弹滚动 ...

    Responsive-Image-Placeholders:使用一些基本的 CSS、JavaScript 和一些动画,很容易避免重新计算布局的性能损失并提供流畅的用户体验

    响应式图像占位符使用一些基本的 CSS、JavaScript 和一些动画,可以很容易地避免重新计算布局对性能的影响,并提供流畅的用户体验。执照本作品已根据。

    最新JQuery版本1.8

    此外,选择器引擎Sizzle修复了一些边缘问题和bug,包括对于多个选择符(~ > +)的改进、更好地检测浏览器bug等。 5. XSS防护 $()方法可以创建HTML元素,如果被用来传递一个[removed]标签,则可以运行脚本。...

    jquery-smart-vimeo-embed:仅使用其 ID 将 Vimeo 视频添加到您的网站。 自动检索视频缩略图,仅在点击时加载视频,最大限度地提高页面性能

    jQuery 智能 Vimeo 嵌入 仅使用其 ID 将 Vimeo 视频添加到您的网站。 自动检索视频缩略图,仅在点击时加载视频,最大限度... 使用包含 Vimeo ID 的data-vimeo-id属性创建占位符图像。 < img src =" http://placeho

Global site tag (gtag.js) - Google Analytics