编码

在 css 首行设置文件编码为 UTF-8。

@charset "UTF-8";

class 命名

class 名称应当尽可能短,并且意义明确。使用有意义的名称,使用有组织的或目的明确的名称,不要使用表现形式的名称。

不推荐

fw-800 {font-weight:;}
.red {color:red;}

推荐

.heavy {font-weight:;}
.important {color:red;}

使用中划线(-)分隔 class 中的单词。虽然它很不方便的让你双击选择,但是它可以增强理解性。另外属性选择器 [attribute|=value] 也能识别中划线(-),所以最好坚持使用中划线作为分隔符。

不推荐

.slide_hd {}
.slide_bd {}

推荐

.slide-hd {}
.slide-bd {}

基于最近的父 class 或基本 class 作为新 class 的前缀。

不推荐

.header .logo {}
.header .banner {}

推荐

.header-logo {}
.header-banner {}

使用 .js-* 的 class 来标识行为(与样式相对),并且不要将这些 class 写有任何的样式。

减少选择器的嵌套

在写选择器时,要尽可能的减少嵌套层级,一般 2~3 层,不要超过 4 层。

不推荐

.main ul li a span {}

推荐

.main span {}

优化选择器

当构建选择器时应该使用清晰,准确和有语义的 class 名。尽量减少使用标签选择器。如果你只关心你的 class 名,而不是你的代码元素,这样会更容易维护。

不推荐

div.content > header.content-header > h2.title {
font-size: 2em;
}

推荐

.content > .content-header > .title {
font-size: 2em;
}

属性简写

css 提供了各种简写属性(fontbackground 等等),使用简写属性对于代码效率和可读性是有很有用的。

不推荐

border-top-style: none;
font-family: palatino, georgia, serif;
font-size: 100%;
line-height: 1.6;
padding-bottom: 2px;
padding-left: 1px;
padding-right: 1px;
padding-top: 0;

推荐

border-top: none;
font: 100%/1.6 palatino, georgia, serif;
padding: 0 1px 2px;

但是不能滥用简写形式,过度使用简写形式的属性声明会导致代码混乱,并且会对属性值带来不必要的覆盖从而引起意外的副作用。

不推荐

width:100px;
margin:0 auto;

推荐

width:100px;
margin-right:auto;
margin-left:auto;

省略 0 后面的单位

不要在 0 值后面使用单位。

不推荐

padding-bottom: 0px;
margin: 0em;

推荐

padding-bottom: 0;
margin: 0;

使用 16 进制表示颜色值

css 中的颜色值可以使用 16 进制来表示,在可能的情况下,可以进行缩写,比如:#fff#000

hack 的使用

虽然 hacks 能够很方便的解决浏览器之间的兼容问题,但是我们还是不要使用 hacks,尽量从根本上解决问题,比如改变结构等等。

声明顺序

为了保证更好的可读性,我们应该遵循以下顺序:

  1. 定位:position | z-index | top | right | bottom | left | clip
  2. 布局:display | float | clear | visibility | overflow | overflow-x | overflow-y
  3. 尺寸:width | min-width | max-width | height | min-height | max-height
  4. 外边距:margin | margin-top | margin-right | margin-bottom | margin-left
  5. 内边距:padding | padding-top | padding-right | padding-bottom | padding-left
  6. 边框:border | border-top | border-right | border-bottom | border-left | border-radius | box-shadow | border-image
  7. 背景:background | background-color | background-image | background-repeat | background-attachment | background-position | background-origin | background-clip | background-size
  8. 颜色:color | opacity
  9. 字体:font | font-style | font-variant | font-weight | font-size | font-family
  10. 文本:text-transform | white-space | word-break | word-wrap | overflow-wrap | text-align | word-spacing | letter-spacing | text-indent | vertical-align | line-height
  11. 文本修饰:text-decoration | text-shadow
  12. 书写模式:direction | unicode-bidi | writing-mode
  13. 列表:list-style | list-style-image | list-style-position | list-style-type
  14. 表格:table-layout | border-collapse | border-spacing | caption-side | empty-cells
  15. 内容:content | counter-increment | counter-reset | quotes
  16. 用户界面:appearance | text-overflow | outline | outline-width | outline-color | outline-style | outline-offset | cursor | zoom | box-sizing | resize | user-select
  17. 多列:columns | column-width | column-count | column-gap | column-rule | column-rule-widthcolumn-rule-style | column-rule-color | column-span | column-fill | column-break-before | column-break-after | column-break-inside
  18. 伸缩盒:flex
  19. 变换,过渡,动画:transform | transition | animation

媒体查询的位置

将媒体查询放在尽可能相关规则的附近。不要将他们打包放在一个单一样式文件中或者放在文档底部。如果你把他们分开了,将来只会被大家遗忘。

推荐

.element {}
.element-avatar {}
.element-selected {} @media (min-width: 480px) {
.element {}
.element-avatar {}
.element-selected {}
}

带前缀的属性

当使用特定厂商的带有前缀的属性时,通过缩进的方式,让每个属性的值在垂直方向对齐,这样便于多行编辑。

.selector {
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.15);
box-shadow: 0 1px 2px rgba(0,0,0,.15);
}

引号

属性选择器或属性值用双引号(""),而不是单引号('')括起来。url 的值不要使用引号。

不推荐

import url('//cdn.com/foundation.css');
input[type='submit'] {
font-family: 'open sans', arial, sans-serif;
}
body:after {
content: 'pause';
}

推荐

@import url(//cdn.com/foundation.css);
input[type="submit"] {
font-family: "open sans", arial, sans-serif;
}
body:after {
content: "pause";
}

声明结束

为了保证一致性和可扩展性,每个声明应该用分号结束。

不推荐

.demo {
width:100px;
height:100px
}

推荐

.demo {
width:100px;
height:100px;
}

多行规则声明

为了易读性和便于快速编辑,统一将语句分为多行,即使该样式只包含一条声明。

不推荐

.demo {width:100px;height:100px;}

推荐

.demo {
width:100px;
height:100px;
}

中文字体引用

css 中文字体可以用 unicode 格式来表示,比如“宋体”可以用 \5B8B\4F53 来表示。具体参考下表:

中文 英文名 unicode
宋体 SimSun \5B8B\4F53
微软雅黑 Microsoft YaHei \5FAE\8F6F\96C5\9ED1

更多字体点击查看

对于 sass 的嵌套

在 sass 中你可以嵌套选择器,这可以使代码变得更清洁和可读。嵌套所有的选择器,但尽量避免嵌套没有任何内容的选择器。

如果你需要指定一些子元素的样式属性,而父元素将不什么样式属性,可以使用常规的 css 选择器链,这将防止您的脚本看起来过于复杂。

不推荐

.content {
display: block;
} .content > .news-article > .title {
font-size: 1.2em;
}

推荐

.content {
display: block;
> .news-article > .title {
font-size: 1.2em;
}
}

当使用 sass 的嵌套功能的时候,重要的是有一个明确的嵌套顺序。

  1. 当前选择器的 @extend 和 @include
  2. 当前选择器的样式属性
  3. 父级选择器的伪类选择器(:first-letter:hover:active 等等)
  4. 伪类元素(:before 和 :after
  5. 父级选择器的声明样式(.selected.active 等等)
  6. 用 sass 的上下文媒体查询
  7. 子选择器作为最后的部分
.test {
@extend %clearfix;
color:#ccc;
&:hover {
color:#000;
}
&:before {
border:1px solid #eee;
content:"";
}
&.active {
color:#f00;
&:hover {
color:#ff0;
}
}
@media screen and (max-width: 640px) {
display:block;
font-size:2em;
}
> .title {
font-size:1.2em;
}
}

参考文献

【规范】前端编码规范——css 规范的更多相关文章

  1. 前端基础系列——CSS规范(文章内容为转载)

    原作者信息 作者:词晖 链接:http://www.zhihu.com/question/19586885/answer/48933504 来源:知乎 著作权归原作者所有,转载请联系原作者获得授权. ...

  2. 常用样式制作思路 自定义按钮~自适应布局~常见bug seajs简记 初学者必知的HTML规范 不容忽略的——CSS规范

    常用样式制作思路   学习常用样式总结参考来自这里 带点文字链接列表利用:before实现 1 <!DOCTYPE html> 2 <html lang="en" ...

  3. 前端编码规范(4)—— CSS 和 Sass (SCSS) 规范

    CSS and Sass (SCSS) style rules ID and class naming ID和class(类)名总是使用可以反应元素目的和用途的名称,或其他通用名称.代替表象和晦涩难懂 ...

  4. 前端编码规范(2)—— HTML 规范

    HTML 规范 文档类型 推荐使用 HTML5 的文档类型申明: <!DOCTYPE html>. (建议使用 text/html 格式的 HTML.避免使用 XHTML.XHTML 以及 ...

  5. Web前端开发规范【HTML/JavaScript/CSS】

    前言 这是一份旨在增强团队的开发协作,提高代码质量和打造开发基石的编码风格规范,其中包含了 HTML, JavaScript 和 CSS/SCSS 这几个部分.我们知道,当一个团队开始指定并实行编码规 ...

  6. amazeui学习笔记二(进阶开发3)--HTML/CSS规范Rules

    amazeui学习笔记二(进阶开发3)--HTML/CSS规范Rules 一.总结 1.am:以 am 为命名空间 2.模块状态: {命名空间}-{模块名}-{状态描述} 3.子模块: {命名空间}- ...

  7. 前端编码规范之CSS

    "字是门面书是屋",我们不会去手写代码,但是敲出来的代码要好看.有条理,这还必须得有一点约束~ 团队开发中,每个人的编码风格都不尽相同,有时候可能存在很大的差异,为了便于压缩组件对 ...

  8. 前端HTML与CSS编码规范

    HTML 语法 HTML5 doctype 语言属性(Language attribute) 字符编码 IE 兼容模式 引入 CSS 和 JavaScript 文件 实用为王 属性顺序 布尔(bool ...

  9. 前端编码规范 -- css篇

    合理的避免使用ID 一般情况下ID不应该被应用于样式. ID的样式不能被复用并且每个页面中你只能使用一次ID. 使用ID唯一有效的是确定网页或整个站点中的位置. 尽管如此,你应该始终考虑使用class ...

随机推荐

  1. NEO学习笔记,从WIF到地址

    2018开年,先给大家拜个年,Happy Neo Year. 开年总得写点什么,就打算继续开学习笔记系列,一点一点仔细的去分析NEO. 今天说一说从WIF到地址的这一串关系.   简单说就一张图: 或 ...

  2. 最短路:spfa算法

    板子补完计划绝赞继续中( 这篇博客就来写一写spfa(这我居然板子都打错了一次,我太弱啦!) 先来看一下定义:(引自http://blog.csdn.net/juststeps/article/det ...

  3. yii2 数据库和ActiveRecord

    Yii2数据库和 ActiveRecord 类 1.在 common/config/main-local.php 里面配置数据账号和密码. 2.ActiveRecord(活动记录,简称AR类),提供了 ...

  4. C# Socket网络编程精华篇 (转)

    http://www.cnblogs.com/weilengdeyu/archive/2013/03/08/2949101.html 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的 ...

  5. day1-接口测试_jmeter_postman

    1.postman测试接口六种类型,(注意1.每个请求最好使用独立的dome) 1.1 请求获取学生信息接口,请求方式为get,路径:/api/x/x,唯一参数stu_name=XXX;直接在输入地址 ...

  6. /etc/security/limits.conf 文件说明

    /etc/security/limits.conf 是 Linux 资源使用配置文件,用来限制用户对系统资源的使用 语法:<domain>  <type>  <item& ...

  7. python部分面试- 测试维度

    2. 软件测试的维度 1. 正确性:功能 正确 2. 健壮性: 意外的输入,不会崩溃 3. 性能: 大压力, 依然能工作 4. 可靠性: 长时间,不会崩溃 5. 易用性: 目标客户,都易用 6. 安全 ...

  8. poj3616 Milking Time(状态转移方程,类似LIS)

    https://vjudge.net/problem/POJ-3616 猛刷简单dp的第一天第二题. 这道题乍一看跟背包很像,不同的在于它是一个区间,背包是定点,试了很久想往背包上套,都没成功. 这题 ...

  9. C# Task WhenAny和WhenAll 以及TaskFactory 的ContinueWhenAny和ContinueWhenAll的实现

    个人感觉Task 的WaitAny和WhenAny以及TaskFactory 的ContinueWhenAny有相似的地方,而WaitAll和WhenAll以及TaskFactory 的Continu ...

  10. 初学vue出现空格警告的原因及其解决办法

    初学vue自己新建一个vue项目来做学习demo.不过在编写代码时一直出现空格不规范的警告.严重影响初学者的热情.错误如下图所示.(这样的错误很多,但大概翻译成中文的意思都是说空格使用不规范.) 这是 ...