【规范】前端编码规范——css 规范
编码
在 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 提供了各种简写属性(font、background 等等),使用简写属性对于代码效率和可读性是有很有用的。
不推荐
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,尽量从根本上解决问题,比如改变结构等等。
声明顺序
为了保证更好的可读性,我们应该遵循以下顺序:
- 定位:position|z-index|top|right|bottom|left|clip
- 布局:display|float|clear|visibility|overflow|overflow-x|overflow-y
- 尺寸:width|min-width|max-width|height|min-height|max-height
- 外边距:margin|margin-top|margin-right|margin-bottom|margin-left
- 内边距:padding|padding-top|padding-right|padding-bottom|padding-left
- 边框:border|border-top|border-right|border-bottom|border-left|border-radius|box-shadow|border-image
- 背景:background|background-color|background-image|background-repeat|background-attachment|background-position|background-origin|background-clip|background-size
- 颜色:color|opacity
- 字体:font|font-style|font-variant|font-weight|font-size|font-family
- 文本:text-transform|white-space|word-break|word-wrap|overflow-wrap|text-align|word-spacing|letter-spacing|text-indent|vertical-align|line-height
- 文本修饰:text-decoration|text-shadow
- 书写模式:direction|unicode-bidi|writing-mode
- 列表:list-style|list-style-image|list-style-position|list-style-type
- 表格:table-layout|border-collapse|border-spacing|caption-side|empty-cells
- 内容:content|counter-increment|counter-reset|quotes
- 用户界面:appearance|text-overflow|outline|outline-width|outline-color|outline-style|outline-offset|cursor|zoom|box-sizing|resize|user-select
- 多列:columns|column-width|column-count|column-gap|column-rule|column-rule-width|column-rule-style|column-rule-color|column-span|column-fill|column-break-before|column-break-after|column-break-inside
- 伸缩盒:flex
- 变换,过渡,动画: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 的嵌套功能的时候,重要的是有一个明确的嵌套顺序。
- 当前选择器的 @extend和@include
- 当前选择器的样式属性
- 父级选择器的伪类选择器(:first-letter,:hover,:active等等)
- 伪类元素(:before和:after)
- 父级选择器的声明样式(.selected,.active等等)
- 用 sass 的上下文媒体查询
- 子选择器作为最后的部分
.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;
    }
}
参考文献
- Web Styleguide - Style guide to harmonize HTML, Javascript and CSS / Sass coding style
- http://www.css88.com/archives/5505
【规范】前端编码规范——css 规范的更多相关文章
- 前端基础系列——CSS规范(文章内容为转载)
		原作者信息 作者:词晖 链接:http://www.zhihu.com/question/19586885/answer/48933504 来源:知乎 著作权归原作者所有,转载请联系原作者获得授权. ... 
- 常用样式制作思路    自定义按钮~自适应布局~常见bug       seajs简记      初学者必知的HTML规范     不容忽略的——CSS规范
		常用样式制作思路 学习常用样式总结参考来自这里 带点文字链接列表利用:before实现 1 <!DOCTYPE html> 2 <html lang="en" ... 
- 前端编码规范(4)—— CSS 和 Sass (SCSS) 规范
		CSS and Sass (SCSS) style rules ID and class naming ID和class(类)名总是使用可以反应元素目的和用途的名称,或其他通用名称.代替表象和晦涩难懂 ... 
- 前端编码规范(2)—— HTML 规范
		HTML 规范 文档类型 推荐使用 HTML5 的文档类型申明: <!DOCTYPE html>. (建议使用 text/html 格式的 HTML.避免使用 XHTML.XHTML 以及 ... 
- Web前端开发规范【HTML/JavaScript/CSS】
		前言 这是一份旨在增强团队的开发协作,提高代码质量和打造开发基石的编码风格规范,其中包含了 HTML, JavaScript 和 CSS/SCSS 这几个部分.我们知道,当一个团队开始指定并实行编码规 ... 
- amazeui学习笔记二(进阶开发3)--HTML/CSS规范Rules
		amazeui学习笔记二(进阶开发3)--HTML/CSS规范Rules 一.总结 1.am:以 am 为命名空间 2.模块状态: {命名空间}-{模块名}-{状态描述} 3.子模块: {命名空间}- ... 
- 前端编码规范之CSS
		"字是门面书是屋",我们不会去手写代码,但是敲出来的代码要好看.有条理,这还必须得有一点约束~ 团队开发中,每个人的编码风格都不尽相同,有时候可能存在很大的差异,为了便于压缩组件对 ... 
- 前端HTML与CSS编码规范
		HTML 语法 HTML5 doctype 语言属性(Language attribute) 字符编码 IE 兼容模式 引入 CSS 和 JavaScript 文件 实用为王 属性顺序 布尔(bool ... 
- 前端编码规范 -- css篇
		合理的避免使用ID 一般情况下ID不应该被应用于样式. ID的样式不能被复用并且每个页面中你只能使用一次ID. 使用ID唯一有效的是确定网页或整个站点中的位置. 尽管如此,你应该始终考虑使用class ... 
随机推荐
- NEO学习笔记,从WIF到地址
			2018开年,先给大家拜个年,Happy Neo Year. 开年总得写点什么,就打算继续开学习笔记系列,一点一点仔细的去分析NEO. 今天说一说从WIF到地址的这一串关系. 简单说就一张图: 或 ... 
- 最短路:spfa算法
			板子补完计划绝赞继续中( 这篇博客就来写一写spfa(这我居然板子都打错了一次,我太弱啦!) 先来看一下定义:(引自http://blog.csdn.net/juststeps/article/det ... 
- yii2 数据库和ActiveRecord
			Yii2数据库和 ActiveRecord 类 1.在 common/config/main-local.php 里面配置数据账号和密码. 2.ActiveRecord(活动记录,简称AR类),提供了 ... 
- C# Socket网络编程精华篇 (转)
			http://www.cnblogs.com/weilengdeyu/archive/2013/03/08/2949101.html 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的 ... 
- day1-接口测试_jmeter_postman
			1.postman测试接口六种类型,(注意1.每个请求最好使用独立的dome) 1.1 请求获取学生信息接口,请求方式为get,路径:/api/x/x,唯一参数stu_name=XXX;直接在输入地址 ... 
- /etc/security/limits.conf 文件说明
			/etc/security/limits.conf 是 Linux 资源使用配置文件,用来限制用户对系统资源的使用 语法:<domain> <type> <item& ... 
- python部分面试- 测试维度
			2. 软件测试的维度 1. 正确性:功能 正确 2. 健壮性: 意外的输入,不会崩溃 3. 性能: 大压力, 依然能工作 4. 可靠性: 长时间,不会崩溃 5. 易用性: 目标客户,都易用 6. 安全 ... 
- poj3616 Milking Time(状态转移方程,类似LIS)
			https://vjudge.net/problem/POJ-3616 猛刷简单dp的第一天第二题. 这道题乍一看跟背包很像,不同的在于它是一个区间,背包是定点,试了很久想往背包上套,都没成功. 这题 ... 
- C# Task WhenAny和WhenAll 以及TaskFactory 的ContinueWhenAny和ContinueWhenAll的实现
			个人感觉Task 的WaitAny和WhenAny以及TaskFactory 的ContinueWhenAny有相似的地方,而WaitAll和WhenAll以及TaskFactory 的Continu ... 
- 初学vue出现空格警告的原因及其解决办法
			初学vue自己新建一个vue项目来做学习demo.不过在编写代码时一直出现空格不规范的警告.严重影响初学者的热情.错误如下图所示.(这样的错误很多,但大概翻译成中文的意思都是说空格使用不规范.) 这是 ... 
