编辑
nojs主题用到的代码规范
本文访问次数:0
  1. 1. HTML 规范
    1. 1.1. 语法
    2. 1.2. DOCTYPE 声明
    3. 1.3. 语言属性
    4. 1.4. IE 兼容模式
    5. 1.5. 字符编码
    6. 1.6. 引入 CSS 和 JavaScript 文件
    7. 1.7. 最少代码
    8. 1.8. 属性顺序
    9. 1.9. 布尔(boolean)型属性
    10. 1.10. JavaScript 生成的标签
  2. 2. CSS 规范
    1. 2.1. 语法
    2. 2.2. 避免使用 id

nojs主题的所有代码严格按照以下规范开发完成。

HTML 规范

语法

  • 用两个空格代替制表符(tab)。
  • 嵌套的元素缩进一次。
  • 使用双信号定义属性。
  • 不要在自闭合元素的尾部添加斜线。
  • 不要省略可选的结束标签。

例如

<!DOCTYPE html>
<html>
  <head>
    <title>Page title</title>
  </head>
  <body>
    <img src="images/company-logo.png" alt="Company">
    <h1 class="hello-world">Hello, world!</h1>
  </body>
</html>

DOCTYPE 声明

为每个 HTML 页面的第一行添加标准模式的声明
例如

<!DOCTYPE html>
<html>
  <head>
  </head>
</html>

语言属性

为 html 根元素指定 lang 属性,语言代码见两个字符组成的语言代码

<html lang="zh-CN">
  <!-- ... -->
</html>

IE 兼容模式

使用<meta>标签设置兼容模式为edge mode,从而使IE使用最新的版本渲染页面

<meta http-equiv="X-UA-Compatible" content="IE=Edge">

字符编码

使用<meta>标签将字符编码设置为utf-8

<head>
  <meta charset="UTF-8">
</head>

引入 CSS 和 JavaScript 文件

根据 HTML5 规范,在引入 CSS 和 JavaScript 文件时一般不需要指定 type 属性,因为 text/css 和 text/javascript 分别是它们的默认值。

<!-- External CSS -->
<link rel="stylesheet" href="code-guide.css">

<!-- In-document CSS -->
<style>
  /* ... */
</style>

<!-- JavaScript -->
<script src="code-guide.js"></script>

最少代码

尽量使用最少的标签并保持最小的复杂度

<!-- Not so great -->
<span class="avatar">
  <img src="...">
</span>

<!-- Better -->
<img class="avatar" src="...">

属性顺序

  • class
  • id, name
  • data-*
  • src, for, type, href
  • title, alt
  • aria-*, role
<a class="..." id="..." data-modal="toggle" href="#">
  Example link
</a>

<input class="form-control" type="text">

<img src="..." alt="...">

布尔(boolean)型属性

布尔型属性在声明时不赋值

JavaScript 生成的标签

避免使用JavaScript生成标签

CSS 规范

语法

  • 用两个空格来代替制表符(tab)
  • 为选择器分组时,将单独的选择器单独放在一行。
  • 为了代码的易读性,在每个声明块的左花括号前添加一个空格。
  • 声明块的右花括号应当单独成行。
  • 每条声明语句的 : 后应该插入一个空格。
  • 为了获得更准确的错误报告,每条声明都应该独占一行。
  • 所有声明语句都应当以分号结尾。最后一条声明语句后面的分号是可选的,但是,如果省略这个分号,你的代码可能更易出错。
  • 对于以逗号分隔的属性值,每个逗号后面都应该插入一个空格(例如,box-shadow)。
  • 不要在 rgb()rgba()hsl()hsla()rect() 值的内部的逗号后面插入空格。这样利于从多个属性值(既加逗号也加空格)中区分多个颜色值(只加逗号,不加空格)。
  • 对于属性值或颜色参数,省略小于 1 的小数前面的 0 (例如,.5 代替 0.5;-.5px 代替 -0.5px)。
  • 十六进制值应该全部小写,例如,#fff。在扫描文档时,小写字符易于分辨,因为他们的形式更易于区分。
  • 尽量使用简写形式的十六进制值,例如,用 #fff 代替 #ffffff。
  • 为选择器中的属性添加双引号,例如,input[type=”text”]。只有在某些情况下是可选的,但是,为了代码的一致性,建议都加上双引号。
  • 避免为 0 值指定单位,例如,用 margin: 0; 代替 margin: 0px;。
    `
    / Bad CSS /
    .selector, .selector-secondary, .selector[type=text] {
    padding:15px;
    margin:0px 0px 15px;
    background-color:rgba(0, 0, 0, 0.5);
    box-shadow:0px 1px 2px #CCC,inset 0 1px 0 #FFFFFF
    }

/ Good CSS /
.selector,
.selector-secondary,
.selector[type=”text”] {
padding: 15px;
margin-bottom: 15px;
background-color: rgba(0,0,0,.5);
box-shadow: 0 1px 2px #ccc, inset 0 1px 0 #fff;
}


### 声明顺序

按照以下顺序声明元素的属性
1. Positioning
2. Box model
3. Typographic
4. Visual

.declaration-order {
/ Positioning /
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 100;

/ Box-model /
display: block;
float: right;
width: 100px;
height: 100px;

/ Typography /
font: normal 13px “Helvetica Neue”, sans-serif;
line-height: 1.5;
color: #333;
text-align: center;

/ Visual /
background-color: #f5f5f5;
border: 1px solid #e5e5e5;
border-radius: 3px;

/ Misc /
opacity: 1;
}


### 不要使用 @import

与 <link> 标签相比,@import 指令要慢很多,不光增加了额外的请求次数,还会导致不可预料的问题。替代办法有以下几种:

* 使用多个 <link> 元素
* 通过 Sass 或 Less 类似的 CSS 预处理器将多个 CSS 文件编译为一个文件
* 通过 Rails、Jekyll 或其他系统中提供过 CSS 文件合并功能


### 媒体查询(Media query)的位置
将媒体查询放在尽可能相关规则的附近

.element { … }
.element-avatar { … }
.element-selected { … }

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


### 简写形式的属性声明
尽量避免以下属性的简写形式
* padding
* margin
* font
* background
* border
* border-radius

/ Bad example /
.element {
margin: 0 0 10px;
background: red;
background: url(“image.jpg”);
border-radius: 3px 3px 0 0;
}

/ Good example /
.element {
margin-bottom: 10px;
background-color: red;
background-image: url(“image.jpg”);
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}


### class 命名
* class 名称中只能出现小写字符和破折号(dashe)(不是下划线,也不是驼峰命名法)。破折号应当用于相关 class 的命名(类似于命名空间)(例如,.btn 和 .btn-danger)。
* 避免过度任意的简写。.btn 代表 button,但是 .s 不能表达任何意思。
* class 名称应当尽可能短,并且意义明确。
* 使用有意义的名称。使用有组织的或目的明确的名称,不要使用表现形式(presentational)的名称。
* 基于最近的父 class 或基本(base) class 作为新 class 的前缀。
* 使用 .js-* class 来标识行为(与样式相对),并且不要将这些 class 包含到 CSS 文件中。

/ Bad example /
.t { … }
.red { … }
.header { … }

/ Good example /
.tweet { … }
.important { … }
.tweet-header { … }
`

避免使用 id

在css文件中尽量使用class选择器,避免使用id选择器。

没有任何评论