0

0

HTML编码规范

藏色散人

藏色散人

发布时间:2019-10-29 11:55:44

|

3599人浏览过

|

来源于zuzuche

转载

HTML编码规范

html编码规范

本文档的目标是使HTML代码风格保持一致,容易被理解和被维护,如果自己没有这种习惯,请好好选择你的IDE,别再用“文本编辑器”。

1 代码风格

1.1 缩进与换行

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

立即学习前端免费学习笔记(深入)”;

示例:

  • first
  • second

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

解释:

过长的代码不容易阅读与维护。但是考虑到 HTML 的特殊性,不做硬性要求,sublime、phpstorm、wenstorm等都有标尺功能。

1.2 命名

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

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

示例:


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

解释:

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

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

[建议] id、class 命名,在避免冲突并描述清楚的前提下尽可能短。

示例:






[强制] 同一页面,应避免使用相同的 name 与 id。

解释:

IE 浏览器会混淆元素的 id 和 name 属性, document.getElementById 可能获得不期望的元素。所以在对元素的 id 与 name 属性的命名需要非常小心。

一个比较好的实践是,为 id 和 name 使用不同的命名法。

示例:


1.3 标签

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

示例:


Hello StyleGuide!

Hello StyleGuide!

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

解释:

常见无需自闭合标签有input、br、img、hr等。

示例:




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

示例:


  • first
  • second
  • first
  • second

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

解释:

比如 div 不得置于 p 中,tbody 必须置于 table 中。

示例:


[建议] HTML 标签的使用应该遵循标签的语义。

解释:

下面是常见标签语义

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

示例:


Esprima serves as an important building block for some JavaScript language tools.

Esprima serves as an important building block for some JavaScript language tools.

[建议] 在 CSS 可以实现相同需求的情况下不得使用表格进行布局。

解释:

在兼容性允许的情况下应尽量保持语义正确性。对网格对齐和拉伸性有严格要求的场景允许例外,如多列复杂表单。

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

示例:


HTML编码规范


    HTML编码规范

1.4 属性

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

示例:


...
...

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

解释:

不允许使用单引号,不允许不使用引号。

示例:





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

示例:






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

解释:

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

示例:

    2 通用

    2.1 DOCTYPE

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

    示例:

    [建议] 启用 IE Edge 和 Chrome Frame 模式。

    示例:

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

    解释:

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

    示例:

    [建议] 开启双核浏览器的 webkit 内核进行渲染。

    解释:

    见浏览器内核控制Meta标签说明文档 一文。

    示例:

    [建议] 开启浏览器的DNS预获取。

    解释:

    减少DNS请求次数、对DNS进行预获取。

    示例:

    
    
    

    2.2 编码

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

    解释:

    见 HTML5 Charset能用吗 一文。

    网奇.NET网络商城系统
    网奇.NET网络商城系统

    系统优势: 1、 使用全新ASP.Net+c#和三层结构开发. 2、 可生成各类静态页面(html,htm,shtm,shtml和.aspx) 3、 管理后台风格模板自由选择,界面精美 4、 风格模板每月更新多套,还可按需定制 5、 独具的缓存技术加快网页浏览速度 6、 智能销售统计,图表分析 7、 集成国内各大统计系统 8、 多国语言支持,内置简体繁体和英语 9、 UTF-8编码,可使用于全球

    下载

    示例:

    
        
            
            ......
        
        
            ......
        
    

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

    解释:

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

    2.3 CSS和JavaScript引入

    [强制] 引入 CSS 时必须指明 rel="stylesheet"。

    示例:

    [建议] 引入 CSS 和 JavaScript 时无须指明 type 属性。

    解释:

    text/css 和 text/javascript 是 type 的默认值。

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

    解释:

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

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

    解释:

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

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

    解释:

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

    示例:

    
        
        
    

    [强制] 引用静态资源的 URL 协议部分与页面相同,建议省略协议前缀。

    示例:

    3 Head

    3.1 title

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

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

    解释:

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

    示例:

    
        
        
        
        
        页面标题
    

    4 图片

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

    解释:

    src 取值为空,会导致部分浏览器重新加载一次当前页面,参考:

    https://developer.yahoo.com/performance/rules.html#emptysrc

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

    解释:

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

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

    解释:

    可以提高图片加载失败时的用户体验。

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

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

    解释:

    产品 logo、用户头像、用户产生的图片等有潜在下载需求的图片,以 img 形式实现,能方便用户下载。

    无下载需求的图片,比如:icon、背景、代码使用的图片等,尽可能采用 css 背景图实现。

    5 表单

    5.1 控件标题

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

    解释:

    有两种方式:

    将控件置于 label 内。

    label 的 for 属性指向控件的 id。

    推荐使用第一种,减少不必要的 id。如果 DOM 结构不允许直接嵌套,则应使用第二种。

    示例:

    
     

    5.2 按钮

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

    解释:

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

    示例:

    
    

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

    解释:

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

    5.3 可访问性 (A11Y)

    [建议] 负责主要功能的按钮在 DOM 中的顺序应靠前。

    解释:

    负责主要功能的按钮应相对靠前,以提高可访问性。如果在 CSS 中指定了 float: right 则可能导致视觉上主按钮在前,而 DOM 中主按钮靠后的情况。

    示例:

    
    
    

    [建议] 当使用 JavaScript 进行表单提交时,如果条件允许,应使原生提交功能正常工作。

    解释:

    当浏览器 JS 运行错误或关闭 JS 时,提交功能将无法工作。如果正确指定了 form 元素的 action 属性和表单控件的 name 属性时,提交仍可继续进行。

    示例:

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

    解释:

    根据内容类型指定输入框类型,能获得能友好的输入体验。

    示例:

    
    
    
    

    6 模板中的 HTML

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

    示例:

    
    
    
    • {name}
    • {$item.name}

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

    示例:

    
    
  1. {type_name}
  2. >{type_name}
  3. [建议] 模板代码应以保证结束符的闭合名

    示例:

    
    
    
    • {name}:¥{unit_price}
    • {name}:¥{unit_price}

    [建议] 在循环处理模板数据构造表格时,若要求每行输出固定的个数,建议先将数据分组,之后再循环输出,模板只是做数据展示,别加插太多业务逻辑(其他数据构造同理)。

    示例:

    
    
    {name}:¥{unit_price}
    {name}:¥{unit_price}
    {name}:¥{price}
    {name}: ¥{unit_price} ¥{total_price}

    相关专题

    更多
    Java JVM 原理与性能调优实战
    Java JVM 原理与性能调优实战

    本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

    6

    2026.01.20

    PS使用蒙版相关教程
    PS使用蒙版相关教程

    本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

    59

    2026.01.19

    java用途介绍
    java用途介绍

    本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

    80

    2026.01.19

    java输出数组相关教程
    java输出数组相关教程

    本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

    38

    2026.01.19

    java接口相关教程
    java接口相关教程

    本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

    10

    2026.01.19

    xml格式相关教程
    xml格式相关教程

    本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

    13

    2026.01.19

    PHP WebSocket 实时通信开发
    PHP WebSocket 实时通信开发

    本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

    17

    2026.01.19

    微信聊天记录删除恢复导出教程汇总
    微信聊天记录删除恢复导出教程汇总

    本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

    155

    2026.01.18

    高德地图升级方法汇总
    高德地图升级方法汇总

    本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

    160

    2026.01.16

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    【李炎恢】ThinkPHP8.x 后端框架课程
    【李炎恢】ThinkPHP8.x 后端框架课程

    共50课时 | 4.5万人学习

    php初学者入门课程
    php初学者入门课程

    共10课时 | 0.6万人学习

    PHP基础入门课程
    PHP基础入门课程

    共33课时 | 2万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号