CSS 规范

代码风格

代码格式化

样式书写一般有两种,团队约定使用展开格式
一种是紧凑格式 (Compact)

.jdc{ display: block;width: 50px;}

一种是展开格式(Expanded)

.jdc{
    display: block;
    width: 50px;
}

代码大小写

样式选择器,属性名,属性值关键字全部使用小写字母书写,属性字符串允许使用大小写。

/* 推荐 */
.jdc{
    display:block;
}
    
/* 不推荐 */
.JDC{
    DISPLAY:BLOCK;
}
  • 注意:如果是使用了css modules ,则使用驼峰命名

选择器

  • 尽量少用通用选择器 *
  • 不使用 ID 选择器
  • 不使用无具体语义定义的标签选择器
/* 推荐 */
.jdc {}
.jdc li {}
.jdc li p{}
/* 不推荐 */
*{}
#jdc {}
.jdc div{}

代码缩进

  • 统一使用两个空格进行代码缩进,使得各编辑器表现一致(各编辑器有相关配置)

分号

每个属性声明末尾都要加分号;

.jdc {
    width: 100%;
    height: 100%;
}

代码易读性

  • 括号与类名之间一个空格,冒号与属性值之间一个空格

推荐:

.jdc { 
    width: 100%; 
}

不推荐:

.jdc{ 
    width:100%;
}
  • 逗号分隔的取值,逗号之后一个空格

推荐:

.jdc {
    box-shadow: 1px 1px 1px #333, 2px 2px 2px #ccc;
}

不推荐:

.jdc {
    box-shadow: 1px 1px 1px #333,2px 2px 2px #ccc;
}
  • 为单个css选择器或新申明开启新行

推荐:

.jdc, 
.jdc_logo, 
.jdc_hd {
    color: #ff0;
}
.nav{
    color: #fff;
}

不推荐:

.jdc,jdc_logo,.jdc_hd {
    color: #ff0;
}.nav{
    color: #fff;
}
  • 颜色值 rgb() rgba() hsl() hsla() rect() 中逗号后需有空格,小数取值不要带有0

推荐:

.jdc {
    color: rgba(255, 255, 255, .5);
}

不推荐:

.jdc {
    color: rgba(255,255,255,0.5);
}
  • 属性值十六进制数值需要保持完整性,尽量不要使用简写

推荐:

.jdc {
    color: #ffffff;
}

不推荐:

.jdc {
    color: #fff;
}
  • 不要为 0 指明单位

推荐:

.jdc {
    margin: 0 10px;
}

不推荐:

.jdc {
    margin: 0px 10px;
}

属性值引号

  • css属性值需要用到引号时,统一使用单引号
/* 推荐 */
.jdc { 
    font-family: 'Hiragino Sans GB';
}
/* 不推荐 */
.jdc { 
    font-family: "Hiragino Sans GB";
}

边框样式写法

线条粗细 线条样式 颜色

border: 1px solid #d9d9d9;

属性书写顺序

建议遵循以下顺序:

  1. 布局定位属性:display / position / float / clear / visibility / overflow
  2. 自身属性:width / height / margin / padding / border / background
  3. 文本属性:color / font / text-decoration / text-align / vertical-align / white- space / break-word
  4. 其他属性(CSS3):content / cursor / border-radius / box-shadow / text-shadow / background:linear-gradient …
.jdc {
    display: block;
    position: relative;
    float: left;
    width: 100px;
    height: 100px;
    margin: 0 10px;
    padding: 20px 0;
    font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
    color: #333;
    background: rgba(0,0,0,.5);
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    -o-border-radius: 10px;
    -ms-border-radius: 10px;
    border-radius: 10px;
}

CSS3浏览器私有前缀写法

CSS3 浏览器私有前缀在前,标准前缀在后

.jdc {
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    -o-border-radius: 10px;
    -ms-border-radius: 10px;
    border-radius: 10px;
}
  • 如果框架使用了auto-prefix,则不需要处理浏览器私有前缀

注释规范

单行注释

注释内容第一个字符和最后一个字符都是一个空格字符,单独占一行,行与行之间相隔一行

推荐:

/* Comment Text */
.jdc{}
/* Comment Text */
.jdc{}

不推荐:

/*Comment Text*/
.jdc{
    display: block;
}
.jdc{
    display: block;/*Comment Text*/
}

模块注释

注释内容第一个字符和最后一个字符都是一个空格字符,/* 与 模块信息描述占一行,多个横线分隔符-与*/占一行,行与行之间相隔两行

推荐:

/* Module A 
---------------------- */
.mod_a {}


/* Module B
 ---------------------- */
.mod_b {}

不推荐:

/*Module A ---------------------- */
.mod_a {}


/* Module B ---------------------- */
.mod_b {}

文件信息注释

在样式文件编码声明 @charset 语句下面注明页面名称、作者、创建日期等信息

@charset "UTF-8";
/**
 * @desc File Info
 * @author Author Name
 * @date 2015-10-10
 */

覆盖规范

  • 尽可能少用 importent
  • vue 单文件组件统一使用 css/less/sass scoped
  • 每个页面/组件需要有一个全局唯一的标识 id/class,属于它下面的样式都需要加上该唯一标识
  • 避免全局修改已有样式,必须具体到页面上(通过权重)
  • 禁用全匹配*选择器(特殊情况除外,如初始化)

vue 单文件组件修改样式不生效可使用 /deep/ 或 >>>

媒体查询

对于内部管理系统,商务多使用 ThinkPad 笔记本,屏幕分辨率为 1366*768。建议使用Chrome devtool进行适配

优先 PC 端

默认按最大尺寸进行布局,当尺寸缩小时逐步变成移动端布局

body {
  background: gray;
}
@media screen and (max-width: 1366px) {
  body {
    background: red;
  }
}
@media screen and (max-width: 1200px) {
  body {
    background: yellow;
  }
}
@media screen and (max-width: 920px) {
  body {
    background: green;
  }
}
@media screen and (max-width: 768px) {
  body {
    background: black;
  }
}

优先移动端

默认按最小尺寸进行布局,当尺寸放大时逐步变成 PC 端布局

body {
  background: gray;
}
@media (min-width: 768px) {
  body {
    background: red;
  }
}
@media (min-width: 920px) {
  body {
    background: green;
  }
}
@media (min-width: 1200px) {
  body {
    background: yellow;
  }
}
@media (min-width: 1366px) {
  body {
    background: red;
  }
}

如果需要做打印样式进行适配,需要使用@media print

@media print {
  body {
    background: #fff;
  }
}

单位规范

CSS 单位有两种,分别是绝对单位和相对单位。

常用绝对单位

  • px:像素 (计算机屏幕上的一个点)
  • cm:厘米
  • in:英寸
  • pt:磅 (1 pt 等于 1/72 英寸)

常用相对单位

  • %:父元素百分比
  • vw:视口宽度百分比
  • vh:视口高度百分比
  • em:当前字体倍数
  • rem:根元素字体倍数
  • rpx:微信小程序专用,规定屏幕宽为 750rpx

使用较多的单位有 px、%、rem 三种,建议 PC 端用 px 单位、移动端用 rem,需要具体控制尺寸还是使用 px
备注:如果需要计算不同单位下的值,可以使用 css3 方法 calc()_