`
yanhaijing
  • 浏览: 14828 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

编写更好的CSS

    博客分类:
  • css
css 
阅读更多

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

  1. ID 规则
  2. Class 规则
  3. 标签规则
  4. 通用规则

对效率普遍认识是从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

 支持我继续翻译吧。

更多文章请访问的我的博客

 关注我的微博吧

2
2
分享到:
评论
2 楼 yanhaijing 2014-01-09  
justjavac 写道
收到多少捐赠了?

0
1 楼 justjavac 2014-01-09  
收到多少捐赠了?

相关推荐

    preboot, 一组 LESS mixin和用于编写更好CSS的变量.zip

    preboot, 一组 LESS mixin和用于编写更好CSS的变量 预引导 2预引导是 LESS mixin和用于快速编写CSS的变量的集合。 作为的先驱,它是一个轻量级和接口无关的方法,用于对你的下一个网络项目进行访问。 用你觉得合适的...

    css教程,CSS编写

    这个"css教程"显然是为了帮助初学者或有经验的开发者更好地理解和掌握CSS。 在学习CSS时,你需要了解以下几个核心概念: 1. **选择器(Selectors)**:选择器是CSS中的关键,它们用来指定你想要应用样式的HTML元素...

    可协助用户更好的编写网页以及CSS样式内容 英文绿色破解版

    可协助用户更好的编写网页以及CSS样式内容 英文绿色破解版

    CSS和JS代码编写手册

    《CSS和JS代码编写手册》是一份非常实用的编程指南,专为网页开发者设计,旨在帮助他们更好地理解和应用CSS(层叠样式表)与JavaScript(JS)这两种关键的前端技术。这份手册包含了丰富的样式规则、函数及JS语法的...

    利用TypeStyle编写CSS可以像TypeScript编写JavaScript一样流利

    这样,你可以更好地组织代码,避免全局样式污染,并方便地重用样式。 TypeStyle还支持动态样式和主题。通过使用TypeScript的计算属性和条件语句,你可以根据变量或条件来改变样式。此外,TypeStyle还可以与流行的...

    非常好的CSS帮助文档,让你更好的学习

    这个“非常好的CSS帮助文档”旨在为初学者和进阶者提供全面的学习资源,帮助他们更好地理解和掌握CSS的核心概念,从而更自由地编写出符合设计需求的网页框架。 一、CSS基础 1. 选择器:CSS的核心在于选择器,它能...

    在Dreamweaver中编写CSS需要掌握的技巧.

    ### 在Dreamweaver中编写CSS需要掌握的关键技巧 在网页设计与开发领域,Dreamweaver作为一款强大的网页编辑工具...只有综合运用这些知识,才能在Dreamweaver中更好地编写出高质量的CSS代码,满足现代网站设计的需求。

    编写优秀 CSS 代码的 8 个策略.rar_css

    在实践中,持续学习和适应新的CSS特性,如Flexbox和Grid布局,能够更好地创建现代网页布局。同时,了解CSS的层叠机制,理解哪些规则会覆盖其他规则,对于避免样式冲突至关重要。 通过以上策略,我们可以编写出更加...

    Go-go-css用Go编写的一个非常简单CSS解析器

    Go语言,作为一种高效、简洁的编程语言,被广泛应用于各种领域,包括Web开发。在Web开发中,CSS(层叠样式表)是用于定义网页...通过学习和使用这个项目,你可以增强自己在Web开发领域的技能,更好地理解和操控CSS。

    CSS编写的企业网站模板

    也可能有针对不同组件或页面的特定样式表(如`header.css`、`footer.css`),以便更好地管理和维护代码。 总的来说,CSS是构建企业网站模板的核心技术,它赋予了网页生动的视觉效果和高效的代码管理方式。通过熟练...

    好看的css样式

    在描述中,提到了“很好的css样式列表”和“自己经常使用的”,这暗示了这个压缩包可能包含了一组经过实践检验、效果出色的CSS样式集。对于开发者来说,拥有这样一套资源可以极大地提高工作效率,因为无需从零开始...

    CSS插件工具箱--使用JavaScript和HTML5编写的100个CSS动态网站插件

    2. **导航菜单**:包括下拉菜单、侧边栏导航、汉堡菜单等,提供更好的导航体验。 3. **轮播图**:自动化展示多张图片或内容,节省空间且吸引用户注意力。 4. **表单组件**:增强表单的交互性,如日期选择器、滑块、...

    8款好看的css表格.rar

    本资源“8款好看的css表格.rar”提供了一系列由国外设计师编写的精美CSS表格示例,这些表格在视觉呈现上极具吸引力,能够为网页增加专业且现代的外观。 CSS表格的设计主要围绕以下几个方面展开: 1. **布局与结构*...

    css揭秘、css权威指南,精通css

    这本书还介绍了CSS预处理器(如Sass和Less)的概念,使开发者能够编写更模块化、可维护的CSS代码。此外,书中涵盖的CSS动画和过渡效果,有助于提升用户体验。 《CSS揭秘》则是一本创新性极强的书籍,它鼓励开发者...

    eclipse下编写HTML;js;css;jsp

    为了更好地支持 HTML、CSS 和 JavaScript 的编辑,你可以安装 WTP (Web Tools Platform) 插件,这是一个专门为 Web 开发设计的工具包。安装方法如下: - 打开 Eclipse,点击“Help”&gt;“Eclipse Marketplace…” - ...

    5种方法立刻写出更好的CSS代码.rar

    以下就是从"5种方法立刻写出更好的CSS代码"这个主题中提取出的关键知识点: 1. **选择器优化**:有效利用类选择器和ID选择器,避免使用过于具体的元素选择器。减少选择器的复杂度可以提高浏览器解析速度。例如,...

    div css编写的际象棋源码

    对于初学者来说,这是一个很好的实践项目,因为它涵盖了基础的网页布局、CSS选择器、定位以及响应式设计等核心概念。 首先,让我们理解`div`元素。在HTML中,`&lt;div&gt;`是一个通用的容器标签,用于组合其他HTML元素,...

    blog:我的个人网站的开放源代码,用Flask用python编写

    尼古拉斯的博客 这是我的博客的源代码,我将其托管在,我强烈推荐该服务。... 您可以使用npm轻松安装它,然后编写更好CSS文件。基本的编译语法为: sass static/css/style.sass static/css/style.css

    CSS电子书 CSS电子书 三合一

    4. **CSS预处理器**:如Sass和Less,它们扩展了CSS的功能,支持变量、嵌套规则、混合(mixins)、函数等,使得CSS编写更高效,代码结构更清晰。 5. **动画与过渡**:CSS3引入了动画和过渡功能,让元素动态变化更为...

    css编译器-网站制作者的好工具

    接下来,我们将深入探讨CSS编译器的概念、功能以及如何使用,以便更好地理解其价值。 **CSS编译器概述** CSS编译器,又称为CSS预处理器或后处理器,是一种能够将特定语法(如Sass、Less或Stylus)转换为标准CSS的...

Global site tag (gtag.js) - Google Analytics