# CSS格式化规则

## 声明顺序

按字母顺序排列声明。

css文件书写按字母顺序排列的方式,容易记忆和维护,以达到一致的代码。

在排序时忽略浏览器特定的前缀。但是,特定 CSS 属性的多个浏览器前缀应按字母顺序排列(如 -moz 书写在 -webkit 前面)。

```css
background: fuchsia;
border: 1px solid;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
color: black;
text-align: center;
text-indent: 2em;
```

## 块内容的缩进

缩进块内容。

将包括嵌套及声明的 [块内容](http://www.w3.org/TR/CSS21/syndata.html#block) 进行缩进,以体现层次并提高可读性。

```css
@media screen, projection {

  html {
    background: #fff;
    color: #444;
  }

}
```

## 声明结束 
   
每个属性后使用分号结束。

以分号结束每个属性,提高一致性和可扩展性。

````{warning}
```css
/* 不推荐 */
.test {
  display: block;
  height: 100px
}
```
````
```css
/* 推荐 */
.test {
  display: block;
  height: 100px;
}
```

## CSS 属性名结束  
   
属性名称的冒号后有一个空格。

为保证一致性,在属性名与属性值之间添加一个空格(但是属性名和冒号间没有空格)。

````{warning}
```css
/* 不推荐 */
h3 {
  font-weight:bold;
}
```
````
```css
/* 推荐 */
h3 {
  font-weight: bold;
}
```

## 声明块间隔
   
在选择器和后面的声明块之间使用一个空格。

最后一个选择器与表示 [声名块](http://www.w3.org/TR/CSS21/syndata.html#rule-sets) 开始的左大花括号在同行,中间有一个字符空格。
   
表示开始的左大花括号和选择器在同行。

````{warning}
```css
/* 不推荐:缺少空间 */
#video{
  margin-top: 1em;
}
  
/* 不推荐:不必要的换行符 */
#video{
  margin-top: 1em;
}
```
````
```css
/* 推荐 */
#video {
  margin-top: 1em;
}
```

## 选择器及声明分离  
   
每个选择器和声明独立成行。

总是让每个选择器和声明单独成行。

````{warning}
```css
/* 不推荐 */
a:focus, a:active {
  position: relative; top: 1px;
}
```
````
```css
/* 推荐 */
h1,
h2,
h3 {
  font-weight: normal;
  line-height: 1.2;
}
```

## CSS 代码块分离
   
使用新空行分离规则。

始终把一个空行(两个换行符)放在代码块规则之间。

```css
html {
  background: #fff;
}

body {
  margin: auto;
  width: 50%;
}
```

## CSS 引号

属性选择器和属性值中使用单引号。
   
在属性选择器及属性值中使用单引号(`''`)而不是双引号(`""`)。在 ``url()`` 中不要使用引号。

特例:如果你确实需要定义 ``@charset`` ,由于 [不允许使用单引号](http://www.w3.org/TR/CSS21/syndata.html#charset) ,故请使用双引号。

````{warning}
```css
/* 不推荐 */
@import url("https://www.google.com/css/maia.css");

html {
  font-family: "open sans", arial, sans-serif;
}
```
````
```css
/* 推荐 */
@import url(https://www.google.com/css/maia.css);

html {
  font-family: 'open sans', arial, sans-serif;
}
```