美文网首页
HTML 编码规范

HTML 编码规范

作者: 你说的独品 | 来源:发表于2017-07-28 15:05 被阅读0次

    1 代码风格

    1.1 缩进于换行

    [强制] 使用4个空格作为一个缩进层级,不允许使用2个空格或者“tab”字符。

    示例:

    <ul>
        <li>first</li>
        <li>second</li>
    </ul>
    

    [建议] 每行不超过120个字符。

    解释:过长的代码不容易阅读与维护。但是考虑HTML的特殊性,不做硬性要求。

    1.2 命名

    [强制] class必须全字母小写,单词间以 - 分隔。

    [强制] class 必选代表相应模块或部件的内容或功能,不得以样式信息进行命名。

    示例:

    <!--good-->
    <div class="sidebar"></div>
    
    <!--bad-->
    <div class=“left”></div>
    

    [强制] 元素‘id’ 必须保证页面唯一。

    解释:同一个页面中,不同的元素包含相同的id,不符合id的属性含义。并且使用documen.getElementById 时可能导致难以追查的问题。

    [建议] 'id'建议单词全字母小写,单词间以‘-’分隔。同项目必须保持风格一致。

    [建议] ‘id’ ‘class’ 命名,在避免冲突并面熟清楚的前提下尽可能短。

    示例:

    <!--good--->
    ·  <div id="nav"></div>
    <!--bad-->
    <div id="naviga"> </div>
    
    <!--good-->
    <p class="comment"></p>
    <!--bad-->
    <p class="com"></p>
    
    <!--good-->
    <span class="author"></span>
    <!--bad-->
    <span class="red"></span>
    
    

    1.3 标签

    [强制] 标签名必须使用小写字母。

    示例:

    <!--good-->
    <p> Hello StyleGuide</p>
    
    <!--bad-->
    <P>Hello StyleGuide</P>
    
    

    [强制] 对于无需自闭和的标签,不允许自闭和。

    解释:常见的无需自闭和的标签有 input, br,img,hr等。

    示例:

    <!--good-->
    <input type="text" name="title">
    
    <!--bad-->
    <input type="type" name="title" />
    

    [强制] 对‘HTML5’中规定允许省略的闭合标签,不允许省略闭合标签。

    示例:

    <!--good-->
    <ul>
        <li>first</li>
        <li>second</li>
    </ul>
    
    
    <!--bad-->
    <ul>
        <li> first
        <li> second
    </ul>
    

    [强制] 标签使用必须符合标签嵌套规则。

    解释:
    下面是常见的标签语义:

    • p - 段落
    • h1,h2,h3 - 层级标题
    • strong, em - 强调
    • ins - 插入
    • del - 删除
    • addr - 缩写
    • code - 代码标识
    • cite - 引述来源作品的标题
    • q - 引用
    • blockquote - 一段或长篇的引用
    • ul - 无序列表
    • ol - 有序列表
    • dl, dt, dd - 定义列表

    示例:

    <!--good-->
    <p>Esprima serves as an important
    <strong>building block</strong>
    for some JavaScript language tools.</p>
    
    <!-- bad -->
    <div>Esprima serves as an important
    <span class="strong">building block</span>
    for some JavaScript language tools.
    </div>
    

    [建议] 标签的使用应尽量简洁,减少不必要的标签。

    示例:

    <!-- good -->
    ![](image.png)
    
    <!-- bad -->
    <span class="avatar">
        ![](image.png)
    </span>
    

    1.4 属性

    [强制] 属性名必须使用小写字母。

    示例:

    <!--good-->
    <tabbe cellspacing=''0''>...</table>
    
    <!--bad-->
    <table cellSpaing="0">...</table>
    

    [强制] 属性值必须用双引号包围。

    解释:
    不允许使用单引号,不允许不使用引号。

    示例:

    <!-- good -->
    <script src="esl.js"></script>
    
    <!-- bad -->
    <script src='esl.js'></script>
    <script src=esl.js></script>
    

    [建议] 布尔类型的属性,建议不添加属性值。

    示例:

    <input type="text" disabled>
    <input type="checkbox" value="1" checked>
    

    [建议] 自定义属性建议以‘XXX-’为前缀,推荐使用'data-'。

    解释:
    使用前缀有助于区分自定义属性和标准定义的属性。

    示例:

    <ol data-ui-type="Select"></ol>
    

    2 通用

    2.1 DOCTYPE

    [强制] 使用‘HTML5’的‘DOCTYPE’来启动标准模式,建议使用大写的‘DOCTYPE’。

    示例:

    <!DOCTYPE html>
    

    [建议] 启用IE Edge 模式。

    示例:

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

    [建议] 在‘HTML’标签上设置正确的‘lang’属性。

    解释:有助于提高页面大的可访问性。如:让语音合成工具确定其所应该采用的发音,令翻译工具确定其翻译语言等。

    示例:

    <html lang="zh-CN">
    

    2.2 编码

    [强制] 页面必须使用精简形式,明确指定字符编码。指定字符编码的‘meta’必须是‘head’的第一个直接子元素。

    解释:
    HTML5 Charset 能用吗 一文。

    示例:

    
    <html>
        <head>
            <meta charset="UTF-8">
            ......
        </head>
        <body>
            ......
        </body>
    </html>
    

    [建议] 'HTML'文件使用无'BOM'的‘UTF-8’编码。

    解释:
    utf-8编码具有更广泛的适应性。BOM在使用程序或工具处理文件时可能造成不必要的干扰。

    2.3 CSS 和 JavaScript 引入

    [强制] 引入‘css’时必须指明‘rel=stylesheet’。

    示例:

    <link rel="stylesheet" src="page.css">
    

    [建议] 引入‘css’和‘Javascript’时无须指明‘type’属性。

    解释:
    ‘text/css’和‘text/JavaScript’是type的默认值。

    [建议] 展现定义放置于外部‘css’中,行为定义放置于外部‘JavaScript’中。

    解释:结构-样式-行为的代码分离,有助于提高代码的可阅读性和维护性都有好处。

    [建议] 在‘head’中引入页面需要的所有‘css’资源。

    解释:
    在页面渲染的过程中,新的css可能导致
    元素的样式重新计算和绘制,页面闪烁。

    [建议] JavaScript应该放在页面的末尾,或采用异步加载。

    解释:
    将script放在页面的中间将阻断页面的渲染。出于性能方面的考虑,如非必要,请遵守此条建议。

    示例:

    <body>
        <!-- a lot of elements -->
        <script src="init-behavior.js"></script>
    </body>
    

    [建议] 移动环境或只针对现代浏览器设计的 Web 应用,如果引用外部资源的 URL 协议部分与页面相同,建议省略协议前缀。

    解释:

    使用 protocol-relative URL 引入 CSS,在 IE7/8 下,会发两次请求。是否使用 protocol-relative URL 应充分考虑页面针对的环境。

    示例:

    <script src="//s1.bdstatic.com/cache/static/jquery-1.10.2.min_f2fb5194.js"></script>
    

    3 head

    3.1 title

    [强制] 页面必须包含title标签声明标题。

    [强制] title必须作为head的直接元素,并紧随charset声明之后。

    解释:
    title 中如果包含ASCII之外的字符,浏览器需要知道字符编码类型才能进行编码,否则可能导致乱码。
    示例:

    <head>
        <meta charset="UTF-8">
        <tilte>页面标题</title>
    </head>
    

    3.2 favicon

    [强制] 保证favicon可访问。

    解释:
    在未指定favicon时,大多数浏览器会请求web Server根目录下的favicon.ico。为了保证favicon可访问,避免404,必须遵守以下两种方法之一:
    1.在Web Server 根目录放置 favicon.ico文件。
    2.使用link指定favicon。
    示例:

    <link rel="shortcut icon" href="path/to/favicon.ico">
    

    3.3 viewport

    [建议] 若页面欲对移动设备友好,需设定页面的‘viewport’。

    解释:
    viewport meta tag 可以设置可视区域的宽度和初始缩放大小,避免在移动设备上出现页面展示不正常。
    比如,在页面宽度小于980px时,若需要ios设备友号,应设置viewport的width值来适应你的页面宽度。同样因为不同移动设备分辨率不同,在设置时,应当使用device-width和device-height变量。

    另外,为了使 viewport 正常工作,在页面内容样式布局设计上也要做相应调整,如避免绝对定位等。关于 viewport 的更多介绍,可以参见 Safari Web Content Guide的介绍

    4 图片

    [强制] 禁止imgsrc取值为空。延迟加载图片也要增加默认的src

    解释:
    src取值为,会导致部分浏览器重新加载一次当前页面,参考:https://developer.yahoo.com/performance/rules.html#emptysrc

    [建议] 避免为img添加不必要的title属性。

    解释:
    多余的title影响看图体验,并且增加了页面尺寸。

    [建议] 为重要图片添加alt 属性。

    解释:
    可以提高图片加载失败是的用户体验。

    [建议] 添加widthheight 属性,以避免页面抖动。

    [建议] 有下载需求的图片采用img标签实现,无需下载的图片采用css背景图片实现。

    解释:

    1. 产品 logo、用户头像、用户产生的图片等有潜在下载需求的图片,以 img 形式实现,能方便用户下载。
    2. 无下载需求的图片,比如:icon、背景、代码使用的图片等,尽可能采用 css 背景图实现。

    5 表单

    5.1控件标题

    [强制] 有文本标题的控件必须使用label标签将其与其相关标题相关联。

    解释:
    有两种方式:
    1、将控件置于 label 内。
    2、label的for属性指向控件的id。
    推荐使用第一种,减少不必要的id,如果dom架构不允许直接嵌套,则应用第二种。
    示例:

    <label><input type="checkbox" name="confirm" value="on"> 我已确认上述条款</label>
    
    <label for="username">用户名:</label> <input type="textbox" name="username" id="username">
    

    5.2 按钮

    [强制] 使用button 元素时必须指明type属性值。

    解释:
    button元素的默认type为submit,如果被置于from元素中,点击后将导致表单提交。为显示区分其作用方便理解,必须给出type属性。

    示例:

    <button type="submit">提交</button>
    <button type="button">取消</button>
    

    [建议] 尽量不要把使用按钮元素的name属性。

    解释:
    由于浏览器兼容性的问题,使用按钮的name属性会带来许多难以发现的问题。具体情况可参考此文

    [建议] 在针对移动设备开发的页面,根据内容类型指定输入框的type属性。

    解释:
    根据内容类型指定输入框类型,能获得更友好的输入体验。
    示例:

    <input type="date">
    

    6 模板中的HTML

    [建议] 模板中的缩进优先保证HTML代码的缩进规则。

    示例:

    <!-- good -->
    {if $display == true}
    <div>
        <ul>
        {foreach $item_list as $item}
            <li>{$item.name}<li>
        {/foreach}
        </ul>
    </div>
    {/if}
    
    <!-- bad -->
    {if $display == true}
        <div>
            <ul>
        {foreach $item_list as $item}
            <li>{$item.name}<li>
        {/foreach}
            </ul>
        </div>
    {/if}
    

    [建议] 模板代码应以保证HTML单个标签语法的正确性为基本原则。

    示例:

    <!-- good -->
    <li class="{if $item.type_id == $current_type}focus{/if}">{ $item.type_name }</li>
    
    <!-- bad -->
    <li {if $item.type_id == $current_type} class="focus"{/if}>{ $item.type_name }</li>
    

    [建议] 在循环处理模板数据数据结构造表格时,若要求每行输出固定的个数,建议先将数据分组,之后再循环输出。

    相关文章

      网友评论

          本文标题:HTML 编码规范

          本文链接:https://www.haomeiwen.com/subject/eyaykxtx.html