前端开发规范(W3C笔记)

基本原则


结构、样式、行为分离

尽量确保文档和模板只包含HTML结构,样式都放到样式表里,行为都放到脚本里。

缩进

统一两个空格缩进(总之就是缩进统一即可),不要使用Tab或者Tab、空格混搭

文件编码

使用不带BOM的UTF-8编码。

  • 在HTML中指定编码

  • 无需使用@charset指定样式表的编码,它默认为UTF-8

一律使用小写字母


![](google.png)


HOME
/* Recommended */
color: #e5e5e5;

/* Not Recommended */
color: #E5E5E5;

省略外链资源URL协议部分

省略外链资源(图片及其它媒体资源)URL中的http/https协议,使URL成为相对地址,避免Mixed Content问题,减小文件字节数。
其它协议(ftp等)的URL不省略。






/* Recommended */
.example {
  background: url(//www.google.com/images/example);
}

/* Not recommended */
.example {
  background: url(http://www.google.com/images/example);
}

统一注释

HTML注释

  • 模块注释

...
  • 区块注释

CSS注释
组件块和子组件块以及声明块之间使用一空行分隔,子组件块之间三空行分隔

/* ==========================================================================
   组件块
 ============================================================================ */

/* 子组件块
 ============================================================================ */

.selector {
  padding: 15px;
  margin-bottom: 15px;
}

/* 子组件块
 ============================================================================ */

.selector-secondary {
  display: block; /* 注释*/
}

.selector-three {
  display: span;
}

Javascript注释

  • 单行注释
    必须独占一行//后跟一个空格,缩进与下一行被注释说明的代码一致
  • 多行注释
    避免使用/*...*/这样的多行注释。有多行注释内容时,使用多个单行注释
  • 函数/方法注释
  • 函数/方法注释必须包含函数说明,有参数和返回值时必须使用注释标识;
  • 参数和返回值注释必须包含类型信息和说明
  • 当函数是内部函数,外部不可访问时,可以使用 @inner 标识
/**
 * 函数描述
 *
 * @param {string} p1 参数1的说明
 * @param {string} p2 参数2的说明,比较长
 *     那就换行了.
 * @param {number=} p3 参数3的说明(可选)
 * @return {Object} 返回值描述
 */functionfoo(p1, p2, p3){
    var p3 = p3 || 10;
    return {
        p1: p1,
        p2: p2,
        p3: p3
    };
}

文件注释

文件注释用于告诉不熟悉这段代码的读者这个文件中包含哪些东西。 应该提供文件的大体内容, 它的作者, 依赖关系兼容性信息。如下:

/**
 * @fileoverview Description of file, its uses and information
 * about its dependencies.
 * @author [email protected] (Firstname Lastname)
 * Copyright 2015 Meizu Inc. All Rights Reserved.
 */

代码验证

  • 使用W3C HTML Validator来验证你的HTML代码的有效性;
  • 使用W3C CSS Validator来验证你的CSS代码有效性;

代码验证不是最终目的,真的目的在于让开发者在经过多次的这种验证过程后,能够深刻理解到怎样的语法或写法是非标准和不推荐的,即使在某些场景下被迫要使用非标准写法,也可以做到心中有数。

通用约定


标签

  • 自闭合(self-closing)标签,无需闭合(例如:img input br hr 等);
  • 可选的闭合标签(closing tag),需闭合(例如:
  • );
  • 尽量减少标签数量
![](//img.w3cschool.cn/attachments/image/cimg/google.png)


  • Style
  • Guide
![](...) ![](...)

Class与ID

  • class应以功能或内容命名,不以表现形式命名;
  • class与id单词字母小写,多个单词组成时,采用中划线-分隔;
  • 使用唯一的id作为Javascript hook,同时避免创建无样式信息的class;

属性顺序

HTML属性应该按照特定的顺序出现以保证易读性

  • id
  • class
  • name
  • data-xx
  • src, for, type, href
  • title, alt
  • aria-xxx, role




![](...)

引号

属性的定义,统一使用双引号


Google


Google

嵌套

a不允许嵌套div 这种约束属于语义嵌套约束,与之区别的约束还有严格嵌套约束,比如a不允许嵌套a
严格嵌套约束在所有的浏览器下都不被允许;而语义嵌套约束,浏览器大多会容错处理,生成的文档树可能相互不太一样。

语义嵌套约束

你可能感兴趣的:(前端开发规范(W3C笔记))