标准.jpg

https://codeguide.bootcss.com/

黄金定律

永远遵循同一套编码规范 -- 可以是这里列出的,也可以是你自己总结的。

不管有多少人共同参与同一项目,一定要确保每一行代码都像是同一个人编写的。

HTML

我只选择我之前没有注意到的或者错误的做法。
  • 标签不要大写,即便是doctype标签。
  • 用两个空格来代替制表符(tab)。
  • 嵌套元素应当缩进一次(即两个空格)。
  • 对于属性的定义,永远全部使用双引号,绝不要使用单引号。
  • 不要在自闭合(self-closing)元素的尾部添加斜线,<img src="url" alt="">
  • 不要省略可选的结束标签(closing tag)(例如,
  • 或 )。
  • 为每个 HTML 页面的第一行添加<!doctype html>
  • <html lang="zh-CN">
  • <meta http-equiv="x-ua-compatible" content="ie=edge">
  • <meta charset="UTF-8">
  • 在引入 CSS 和 JavaScript 文件时一般不需要指定 type 属性
  • 编写 HTML 代码时,尽量避免多余的父元素。很多时候,这需要迭代和重构来实现。请看下面的案例:

    <!-- Not so great -->
    <span class="avatar">
    <img src="...">
    </span>
    
    <!-- Better -->
    <img class="avatar" src="...">
  • 通过 JavaScript 生成的标签让内容变得不易查找、编辑,并且降低性能。能避免时尽量避免。
  • HTML 属性应当按照以下给出的顺序依次排列,确保代码的易读性。
    class
    id, name
    data-*
    src, for, type, href, value
    title, alt
    role, aria-*

CSS

选择器:class;声明快:{...},声明语句:padding: 1rem;
  • 为选择器分组时,将单独的选择器单独放在一行
  • 在每个声明块的左花括号前添加一个空格
  • 声明块的右花括号应当单独成行
  • 每条声明语句的 : 后应该插入一个空格
  • 每条声明都应该独占一行
  • 所有声明语句都应当以分号结尾
  • 对于以逗号分隔的属性值,每个逗号后面都应该插入一个空格(例如,box-shadow: 0 1px 2px #ccc, inset 0 1px 0 #fff;
  • 不要在 rgb()、rgba()、hsl()、hsla() 或 rect() 值的内部的逗号后面插入空格。这样利于从多个属性值(既加逗号也加空格)中区分多个颜色值(只加逗号,不加空格)。background-color: rgba(0,0,0,.5);
  • 对于属性值或颜色参数,省略小于 1 的小数前面的 0
  • 十六进制值应该全部小写,例如,#fff
  • 尽量使用简写形式的十六进制值,例如,用 #fff 代替 #ffffff
  • 为选择器中的属性添加双引号,例如,input[type="text"]
  • 避免为 0 值指定单位,例如,用 margin: 0; 代替 margin: 0px;
  • 声明顺序

    1. Positioning
    2. Box model
    3. Typographic
    4. Visual
    5. Misc
    .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
  • 将媒体查询(Media query)放在尽可能相关规则的附近
  • 当使用特定厂商的带有前缀的属性时,通过缩进的方式,让每个属性的值在垂直方向对齐,这样便于多行编辑。
  • 对于只包含一条声明的样式,为了易读性和便于快速编辑,建议将语句放在同一行。.span1 { width: 60px; }
  • 在需要显示地设置所有值的情况下,应当尽量限制使用简写形式的属性声明。

    /* 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 文件中。

选择器

  • 对于通用元素使用 class ,这样利于渲染性能的优化
  • 对于经常出现的组件,避免使用属性选择器(例如,[class^="..."]
  • 选择器要尽可能短,并且尽量限制组成选择器的元素个数,建议不要超过 3
  • 只有在必要的时候才将 class 限制在最近的父元素内(也就是后代选择器)(例如,不使用带前缀的 class 时 -- 前缀类似于命名空间)。这里没理解

代码组织

  • 以组件为单位组织代码段。
  • 制定一致的注释规范。
  • 使用一致的空白符将代码分隔成块,这样利于扫描较大的文档。
  • 如果使用了多个 CSS 文件,将其按照组件而非页面的形式分拆,因为页面会被重组,而组件只会被移动。