编辑
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. 声明顺序
    3. 2.3. 不要使用 @import
    4. 2.4. 媒体查询(Media query)的位置
    5. 2.5. 简写形式的属性声明
    6. 2.6. class 命名
    7. 2.7. 避免使用 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

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

  • 使用多个 元素
  • 通过 Sass 或 Less 类似的 CSS 预处理器将多个 CSS 文件编译为一个文件
  • 通过 Rails、Jekyll 或其他系统中提供过 CSS 文件合并功能
<!-- Use link elements -->
<link rel="stylesheet" href="core.css">

<!-- Avoid @imports -->
<style>
  @import url("more.css");
</style>

媒体查询(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选择器。

需要输入验证码才能留言

没有任何评论