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

HTML 部分

语法

  • 对于属性的定义,确保全部使用双引号,绝不要使用单引号。
  • 为每个 HTML 页面的第一行添加标准模式(standard mode)的声明,这样能够确保在每个浏览器中拥有一致的展现。
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. </head>
  5. </html>

语言属性

  • 根据 HTML5 规范:
    强烈建议为 html 根元素指定 lang 属性,从而为文档设置正确的语言。这将有助于语音合成工具确定其所应该采用的发音,有助于翻译工具确定其翻译时所应遵守的规则等等。
  1. <html lang="zh-CN">
  2. <!-- ... -->
  3. </html>

IE 兼容模式

  • IE 支持通过特定的 标签来确定绘制当前页面所应该采用的 IE 版本。除非有强烈的特殊需求,否则最好是设置为 edge mode,从而通知 IE 采用其所支持的最新的模式。
  1. <meta http-equiv="X-UA-Compatible" content="IE=Edge">

字符编码

  • 通过明确声明字符编码,能够确保浏览器快速并容易的判断页面内容的渲染方式。这样做的好处是,可以避免在 HTML 中使用字符实体标记(character entity),从而全部与文档编码一致(一般采用 UTF-8 编码)。
  1. <head>
  2. <meta charset="UTF-8">
  3. </head>

引入 CSS 和 JavaScript 文件

  • 根据 HTML5 规范,在引入 CSS 和 JavaScript 文件时一般不需要指定 type 属性,因为 text/css 和 text/javascript 分别是它们的默认值。
  1. <!-- External CSS -->
  2. <link rel="stylesheet" href="code-guide.css">
  3. <!-- In-document CSS -->
  4. <style>
  5. /* ... */
  6. </style>
  7. <!-- JavaScript -->
  8. <script src="code-guide.js"></script>

属性顺序

  • HTML 属性应当按照以下给出的顺序依次排列,确保代码的易读性。

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

  1. <a class="..." id="..." data-modal="toggle" href="#">
  2. Example link
  3. </a>
  4. <input class="form-control" type="text">
  5. <img src="..." alt="...">

布尔(boolean)型属性

  • 布尔型属性可以在声明时不赋值。XHTML 规范要求为其赋值,但是 HTML5 规范不需要。

元素的布尔型属性如果有值,就是 true,如果没有值,就是 false。

  1. <input type="text" disabled>
  2. <input type="checkbox" value="1" checked>
  3. <select>
  4. <option value="1" selected>1</option>
  5. </select>

减少标签的数量

  • 编写 HTML 代码时,尽量避免多余的父元素。很多时候,这需要迭代和重构来实现。
  1. <!-- Not so great -->
  2. <span class="avatar">
  3. <img src="...">
  4. </span>
  5. <!-- Better -->
  6. <img class="avatar" src="...">

CSS

语法

  • 为选择器分组时,将单独的选择器单独放在一行。
  • 为了代码的易读性,在每个声明块的左花括号前添加一个空格。
  • 声明块的右花括号应当单独成行。
  • 每条声明语句的 : 后应该插入一个空格。
  • 为了获得更准确的错误报告,每条声明都应该独占一行。
  • 所有声明语句都应当以分号结尾。最后一条声明语句后面的分号是可选的,但是,如果省略这个分号,你的代码可能更易出错。
  • 对于以逗号分隔的属性值,每个逗号后面都应该插入一个空格(例如,box-shadow)。
  • 十六进制值应该全部小写,例如,#fff。在扫描文档时,小写字符易于分辨,因为他们的形式更易于区分。
  • 尽量使用简写形式的十六进制值,例如,用 #fff 代替 #ffffff。
  • 为选择器中的属性添加双引号,例如,input[type="text"]。
  • 避免为 0 值指定单位,例如,用 margin: 0; 代替 margin: 0px;。
  1. /* Bad CSS */
  2. .selector, .selector-secondary, .selector[type=text] {
  3. padding:15px;
  4. margin:0px 0px 15px;
  5. background-color:rgba(0, 0, 0, 0.5);
  6. box-shadow:0px 1px 2px #CCC,inset 0 1px 0 #FFFFFF
  7. }
  8. /* Good CSS */
  9. .selector,
  10. .selector-secondary,
  11. .selector[type="text"] {
  12. padding: 15px;
  13. margin-bottom: 15px;
  14. background-color: rgba(0,0,0,.5);
  15. box-shadow: 0 1px 2px #ccc, inset 0 1px 0 #fff;
  16. }

声明顺序

  • 相关的属性声明应当归为一组,并按照下面的顺序排列:

    1. Positioning
  1. Box model
  2. Typographic
  3. Visual
  • 由于定位(positioning)可以从正常的文档流中移除元素,并且还能覆盖盒模型(box model)相关的样式,因此排在首位。盒模型排在第二位,因为它决定了组件的尺寸和位置。

  • 其他属性只是影响组件的内部(inside)或者是不影响前两组属性,因此排在后面。

  1. .declaration-order {
  2. /* Positioning */
  3. position: absolute;
  4. top: 0;
  5. right: 0;
  6. bottom: 0;
  7. left: 0;
  8. z-index: 100;
  9. /* Box-model */
  10. display: block;
  11. float: right;
  12. width: 100px;
  13. height: 100px;
  14. /* Typography */
  15. font: normal 13px "Helvetica Neue", sans-serif;
  16. line-height: 1.5;
  17. color: #333;
  18. text-align: center;
  19. /* Visual */
  20. background-color: #f5f5f5;
  21. border: 1px solid #e5e5e5;
  22. border-radius: 3px;
  23. /* Misc */
  24. opacity: 1;
  25. }

媒体查询(Media query)的位置

  • 将媒体查询放在尽可能相关规则的附近。不要将他们打包放在一个单一样式文件中或者放在文档底部。如果你把他们分开了,将来只会被大家遗忘。下面给出一个典型的实例。
  1. .element { ... }
  2. .element-avatar { ... }
  3. .element-selected { ... }
  4. @media (min-width: 480px) {
  5. .element { ...}
  6. .element-avatar { ... }
  7. .element-selected { ... }
  8. }

单行规则声明

  • 对于只包含一条声明的样式,为了易读性和便于快速编辑,建议将语句放在同一行。对于带有多条声明的样式,还是应当将声明分为多行。

这样做的关键因素是为了错误检测 -- 例如,CSS 校验器指出在 183 行有语法错误。如果是单行单条声明,你就不会忽略这个错误;如果是单行多条声明的话,你就要仔细分析避免漏掉错误了。

  1. /* Single declarations on one line */
  2. .span1 { width: 60px; }
  3. .span2 { width: 140px; }
  4. .span3 { width: 220px; }
  5. /* Multiple declarations, one per line */
  6. .sprite {
  7. display: inline-block;
  8. width: 16px;
  9. height: 15px;
  10. background-image: url(../img/sprite.png);
  11. }
  12. .icon { background-position: 0 0; }
  13. .icon-home { background-position: 0 -20px; }
  14. .icon-account { background-position: 0 -40px; }

简写形式的属性声明

  • 在需要显示地设置所有值的情况下,应当尽量限制使用简写形式的属性声明。常见的滥用简写属性声明的情况如下:

    padding
    margin
    font
    background
    border
    border-radius

  1. /* Bad example */
  2. .element {
  3. margin: 0 0 10px;
  4. background: red;
  5. background: url("image.jpg");
  6. border-radius: 3px 3px 0 0;
  7. }
  8. /* Good example */
  9. .element {
  10. margin-bottom: 10px;
  11. background-color: red;
  12. background-image: url("image.jpg");
  13. border-top-left-radius: 3px;
  14. border-top-right-radius: 3px;
  15. }

class 命名

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

代码组织

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

编程规范 html部分的更多相关文章

  1. Batsing的网页编程规范(HTML/CSS/JS/PHP)

    特别注意!!!我这里的前端编程规范不苟同于Bootstrap的前端规范. 因为我和它的目的不同,Bootstrap规范是极简主义,甚至有些没有考虑到兼容性的问题. 我的规范是自己从编程实践中总结出来的 ...

  2. JAVA编程规范(下)

    JAVA编程规范(下) 2016-03-27 6. 代码的格式化 6.1 对代码进行格式化时,要达到的目的 1.     通过代码分割成功能块和便于理解的代码段,使代码更容易阅读和理解: 2.     ...

  3. JAVA 编程规范(上)

    2016-03-20 J120-CHARLIEPAN JAVA 编程规范(上) 1.      应用范围 本规范应用于采用J2EE规范的项目中,所有项目中的JAVA代码(含JSP,SERVLET,JA ...

  4. 使Eclipse符合Java编程规范

    编程规范是很重要的东西,能让团队的代码易于阅读和维护,也便于日后的功能扩展. 工欲善其事必先利其器!作为一个Java程序员,与Eclipse打交道可能是一辈子的事情.将Eclipse设置为符合公司编程 ...

  5. flex+AS3编程规范

    flex+AS3编程规范 Flex+AS3编码规范 http://www.cnblogs.com/jiahuafu/   1.  缩写: 尽量避免使用缩写,使用缩写时尽量和Flex保持一致.但要记住一 ...

  6. Python编程规范(PEP8)

    Python编程规范(PEP8) 代码布局 缩进 对于每一次缩进使用4个空格.使用括号.中括号.大括号进行垂直对齐,或者缩进对齐. 制表符还是空格? 永远不要将制表符与空格混合使用.Python最常用 ...

  7. Python 编程规范-----转载

    Python编程规范及性能优化 Ptyhon编程规范 编码 所有的 Python 脚本文件都应在文件头标上 # -*- coding:utf-8 -*- .设置编辑器,默认保存为 utf-8 格式. ...

  8. JavaScript编程规范

    最近看NodeJS中,有一部分写JS约定俗成的编程规范(附录B,详情参考附件),感觉在实际工作中能用到, 大致意思分享给大家,详情参考附件: 1.缩进:建议两空格 作为Node.js代码的缩进标记: ...

  9. 华为C语言编程规范

    DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd ...

  10. 中兴软件编程规范C/C++

    Q/ZX 深圳市中兴通讯股份有限公司企业标准 (设计技术标准) Q/ZX 04.302.1–2003      软件编程规范C/C++                               20 ...

随机推荐

  1. POJ 1740 A New Stone Game(普通博弈)

    A New Stone Game 题意: 对于n堆石子,每堆若干个,两人轮流操作,每次操作分两步,第一步从某堆中去掉至少一个,第二步(可省略)把该堆剩余石子的一部分分给其它的某些堆.最后谁无子可取即输 ...

  2. CF 219D Choosing Capital for Treeland 树形DP 好题

    一个国家,有n座城市,编号为1~n,有n-1条有向边 如果不考虑边的有向性,这n个城市刚好构成一棵树 现在国王要在这n个城市中选择一个作为首都 要求:从首都可以到达这个国家的任何一个城市(边是有向的) ...

  3. MST_prim

    刚刚发了mst 的kruskal,现在再来一发,说一说prim咯. prim适用于稠密图. 与kruskal不同,prim是从一个点开始,不断加入新的点直至连通所有点. 讲讲prim的过程,我们假定有 ...

  4. LPC1768之中断

    一外中断:只有特定的4个外中断引脚, 1 在特定的引脚上,引脚功能要选对应的外中断功能 2设定的触发条件(高低电平.上升/下降沿) 3 NVIC设定,特定的通道. 二GPIO中断: 1只有GPIO0和 ...

  5. Uvision5不能进行软件仿真

    Uvision5不能进行软件仿真不能进行软件仿真,报错: error 65: access violation at 0x40021000 : no 'read' permission(软件仿真出错) ...

  6. $.ajax()中dataType

    $.ajax()中dataType的默认值为TEXT,如果没有指明json,而返回来的数据又就是json格式,则无法显示.!!

  7. [JavaScript] JS中对Base64的解析

    JS中对Base64的解析 <script type="text/javascript"> /** * UTF16和UTF8转换对照表 * U+00000000 – U ...

  8. 使用jaxp对比xml进行DOM解析

    /*DOM解析编程 •遍历所有节点 •查找某一个节点 •删除结点 •更新结点 •添加节点 /* package cn.itcast.jaxp; import java.io.File; import ...

  9. js 未结束的字符串常量错误解决方法

    1.JAVASCRIPT引用时,使用的字符语言不一致. 比如:<script type=”text/javascript” src=”xxx.js” charset=”UTF-8″>.xx ...

  10. 打开10.10.3上SSD的TRIM-黑苹果之路

    对SSD没有研究,同事提出苹果对非官方的SSD不开启TRIM,上网度了一把,对TRIM不明觉厉. 一.TRIM是怎么回事:http://bbs.feng.com/read-htm-tid-187088 ...