编写好的CSS代码能提升页面的渲染速度。本质上,一条规则都没有引擎解析的最快。MDN上将CSS选择符归拆分成四个主要类别,如下所示,性能依次降低。
- ID 规则
- Class 规则
- 标签规则
- 通用规则
对效率普遍认识是从Steve Souders在2009年出版的《高性能网站建设进阶指南》开始的,虽然Souders的书中罗列的非常详细,你可以在这里查看完整列表引用。你也可以在谷歌的高效的CSS选择器的最佳实践中查看更多的细节。
本文我想分享一些我在编写高性能CSS中用到的简单的例子和指导方针。受MDN的编写高效的CSS指南的启发,并遵循类似的格式。
避免过度约束
作为一般规则,不添加不必要的约束。
// 糟糕 ul#someid {..} .menu#otherid{..} // 好的 #someid {..} #otherid {..}
后代选择符最烂
不仅性能低下而且代码很脆弱,html代码和css代码严重耦合,html代码结构发生变化时,CSS也得修改,这是多么糟糕,特别是在大公司里,写html和css的往往不是同一个人。
// 烂透了 html div tr td {..}
避免链式(交集)选择符
这和过度约束的情况类似,更明智的做法是简单的创建一个新的CSS类选择符。
// 糟糕 .menu.left.icon {..} // 好的 .menu-left-icon {..}
坚持KISS原则
想象我们有如下的DOM:
<ul id="navigator"> <li><a href="#" class="twitter">Twitter</a></li> <li><a href="#" class="facebook">Facebook</a></li> <li><a href="#" class="dribble">Dribbble</a></li> </ul>
下面是对应的规则……
// 糟糕 #navigator li a {..} // 好的 #navigator {..}
使用复合语法
尽可能使用符合语法。
// 糟糕 .someclass { padding-top: 20px; padding-bottom: 20px; padding-left: 10px; padding-right: 10px; background: #000; background-image: url(../imgs/carrot.png); background-position: bottom; background-repeat: repeat-x; } // 好的 .someclass { padding: 20px 10px 20px 10px; background: #000 url(../imgs/carrot.png) repeat-x bottom; }
避免不必要的命名空间
// 糟糕 .someclass table tr.otherclass td.somerule {..} //好的 .someclass .otherclass td.somerule {..}
避免不必要的重复
尽可能组合重复的规则。
// 糟糕 .someclass { color: red; background: blue; font-size: 15px; } .otherclass { color: red; background: blue; font-size: 15px; } // 好的 .someclass, .otherclass { color: red; background: blue; font-size: 15px; }
尽可能精简规则
在上面规则的基础上,你可以进一步合并不同类里的重复的规则。
// 糟糕 .someclass { color: red; background: blue; height: 150px; width: 150px; font-size: 16px; } .otherclass { color: red; background: blue; height: 150px; width: 150px; font-size: 8px; } // 好的 .someclass, .otherclass { color: red; background: blue; height: 150px; width: 150px; } .someclass { font-size: 16px; } .otherclass { font-size: 8px; }
避免不明确的命名约定
最好使用表示语义的名字。一个好的CSS类名应描述它是什么而不是它像什么。
避免 !importants
其实你应该也可以使用其他优质的选择器。
遵循一个标准的声明顺序
虽然有一些排列CSS属性顺序常见的方式,下面是我遵循的一种流行方式。
.someclass { /* Positioning */ /* Display & Box Model */ /* Background and typography styles */ /* Transitions */ /* Other */ }
组织好的代码格式
代码的易读性和易维护性成正比。下面是我遵循的格式化方法。
// 糟糕 .someclass-a, .someclass-b, .someclass-c, .someclass-d { ... } // 好的 .someclass-a, .someclass-b, .someclass-c, .someclass-d { ... } // 好的做法 .someclass { background-image: linear-gradient(#000, #ccc), linear-gradient(#ccc, #ddd); box-shadow: 2px 2px 2px #000, 1px 4px 1px 1px #ddd inset; }
显然,这些只是极少数的规则,是我在我自己的CSS中,本着更高效和更易维护性而尝试遵循的规则。如果你想阅读更多的知识,我建议阅读MDN上的编写高效的CSS和谷歌指南上的优化浏览器渲染。
译者注
本文为译文,原文为“Writing Better CSS”
相关推荐
preboot, 一组 LESS mixin和用于编写更好CSS的变量 预引导 2预引导是 LESS mixin和用于快速编写CSS的变量的集合。 作为的先驱,它是一个轻量级和接口无关的方法,用于对你的下一个网络项目进行访问。 用你觉得合适的...
这个"css教程"显然是为了帮助初学者或有经验的开发者更好地理解和掌握CSS。 在学习CSS时,你需要了解以下几个核心概念: 1. **选择器(Selectors)**:选择器是CSS中的关键,它们用来指定你想要应用样式的HTML元素...
可协助用户更好的编写网页以及CSS样式内容 英文绿色破解版
《CSS和JS代码编写手册》是一份非常实用的编程指南,专为网页开发者设计,旨在帮助他们更好地理解和应用CSS(层叠样式表)与JavaScript(JS)这两种关键的前端技术。这份手册包含了丰富的样式规则、函数及JS语法的...
这样,你可以更好地组织代码,避免全局样式污染,并方便地重用样式。 TypeStyle还支持动态样式和主题。通过使用TypeScript的计算属性和条件语句,你可以根据变量或条件来改变样式。此外,TypeStyle还可以与流行的...
这个“非常好的CSS帮助文档”旨在为初学者和进阶者提供全面的学习资源,帮助他们更好地理解和掌握CSS的核心概念,从而更自由地编写出符合设计需求的网页框架。 一、CSS基础 1. 选择器:CSS的核心在于选择器,它能...
### 在Dreamweaver中编写CSS需要掌握的关键技巧 在网页设计与开发领域,Dreamweaver作为一款强大的网页编辑工具...只有综合运用这些知识,才能在Dreamweaver中更好地编写出高质量的CSS代码,满足现代网站设计的需求。
在实践中,持续学习和适应新的CSS特性,如Flexbox和Grid布局,能够更好地创建现代网页布局。同时,了解CSS的层叠机制,理解哪些规则会覆盖其他规则,对于避免样式冲突至关重要。 通过以上策略,我们可以编写出更加...
Go语言,作为一种高效、简洁的编程语言,被广泛应用于各种领域,包括Web开发。在Web开发中,CSS(层叠样式表)是用于定义网页...通过学习和使用这个项目,你可以增强自己在Web开发领域的技能,更好地理解和操控CSS。
也可能有针对不同组件或页面的特定样式表(如`header.css`、`footer.css`),以便更好地管理和维护代码。 总的来说,CSS是构建企业网站模板的核心技术,它赋予了网页生动的视觉效果和高效的代码管理方式。通过熟练...
在描述中,提到了“很好的css样式列表”和“自己经常使用的”,这暗示了这个压缩包可能包含了一组经过实践检验、效果出色的CSS样式集。对于开发者来说,拥有这样一套资源可以极大地提高工作效率,因为无需从零开始...
2. **导航菜单**:包括下拉菜单、侧边栏导航、汉堡菜单等,提供更好的导航体验。 3. **轮播图**:自动化展示多张图片或内容,节省空间且吸引用户注意力。 4. **表单组件**:增强表单的交互性,如日期选择器、滑块、...
本资源“8款好看的css表格.rar”提供了一系列由国外设计师编写的精美CSS表格示例,这些表格在视觉呈现上极具吸引力,能够为网页增加专业且现代的外观。 CSS表格的设计主要围绕以下几个方面展开: 1. **布局与结构*...
这本书还介绍了CSS预处理器(如Sass和Less)的概念,使开发者能够编写更模块化、可维护的CSS代码。此外,书中涵盖的CSS动画和过渡效果,有助于提升用户体验。 《CSS揭秘》则是一本创新性极强的书籍,它鼓励开发者...
为了更好地支持 HTML、CSS 和 JavaScript 的编辑,你可以安装 WTP (Web Tools Platform) 插件,这是一个专门为 Web 开发设计的工具包。安装方法如下: - 打开 Eclipse,点击“Help”>“Eclipse Marketplace…” - ...
以下就是从"5种方法立刻写出更好的CSS代码"这个主题中提取出的关键知识点: 1. **选择器优化**:有效利用类选择器和ID选择器,避免使用过于具体的元素选择器。减少选择器的复杂度可以提高浏览器解析速度。例如,...
对于初学者来说,这是一个很好的实践项目,因为它涵盖了基础的网页布局、CSS选择器、定位以及响应式设计等核心概念。 首先,让我们理解`div`元素。在HTML中,`<div>`是一个通用的容器标签,用于组合其他HTML元素,...
尼古拉斯的博客 这是我的博客的源代码,我将其托管在,我强烈推荐该服务。... 您可以使用npm轻松安装它,然后编写更好CSS文件。基本的编译语法为: sass static/css/style.sass static/css/style.css
4. **CSS预处理器**:如Sass和Less,它们扩展了CSS的功能,支持变量、嵌套规则、混合(mixins)、函数等,使得CSS编写更高效,代码结构更清晰。 5. **动画与过渡**:CSS3引入了动画和过渡功能,让元素动态变化更为...
接下来,我们将深入探讨CSS编译器的概念、功能以及如何使用,以便更好地理解其价值。 **CSS编译器概述** CSS编译器,又称为CSS预处理器或后处理器,是一种能够将特定语法(如Sass、Less或Stylus)转换为标准CSS的...