前端开发规范:HTML规范

一个项目应该永远遵循同一套编码规范
不管有多少人共同参与同一项目,确保每一行代码都像是同一个人编写的

前端开发规范:HTML规范
相关链接:

前端开发规范:HTML规范
前端开发规范:CSS规范
前端开发规范:JavaScript规范

整体结构

HTML基础设施
  • 文件应以“<!DOCTYPE ......>”首行顶格开始,推荐使用“<!DOCTYPE html>”。
    如果想跟其他标签一样使用小写,可以使用:<!doctype html>
    DOCTYPE标签是一种标准通用标记语言的文档类型声明,目的是要告诉标准通用标记语言解析器,它应该使用什么样的文档类型定义(DTD)来解析文档。
    如果页面添加了<!DOCTYP>就等同于开启了标准模式,浏览器会按照W3C标准解析渲染页面。
    没有DOCTYPE文档类型声明会开启浏览器的怪异模式,浏览器会按照自己的解析方式渲染页面,在不同的浏览器下面会有不同的样式。
  • 必须申明文档的编码charset,且与文件本身编码保持一致,推荐使用UTF-8编码<meta charset="utf-8"/>。
  • 根据页面内容和需求填写适当的keywords和description。
    (不过淘宝、Tmall、京东只有京东写了keywords和description)
  • 页面title不可缺少。
  • HTML只关注内容:其只做内容信息展示,不要引入一些特定的 HTML 结构来解决一些视觉设计问题,不要将img元素当做专门用来做视觉设计的元素,样式效果尽可能应用css解决。
  • 适当使用mate标签。附上淘宝、Tmall、京东mate标签参考(文末)
结构顺序和视觉顺序基本保持一致
  • 按照从上至下、从左到右的视觉顺序书写HTML结构。
  • 有时候为了便于搜索引擎抓取,我们也会将重要内容在HTML结构顺序上提前。
  • 用div代替table布局,但表现具有明显表格形式的数据,首选table。
结构、表现、行为三者分离,避免内联
  • 使用link将css文件引入,并置于head中。
  • 使用script将js文件引入,并置于body底部。
    如果你的项目只需要兼容ie10+或者只是在移动端访问,那么可以使用HTML5的新属性async,将脚本文件放在<head>内。
<!-- 通用 -->
<html>
  <head>
    <link rel="stylesheet" href="xxx.css">
  </head>
  <body>
    <!-- 内容 -->
    <script src="xxx.js" async></script>
  </body>
</html>
<!-- 只兼容现代浏览器推荐 -->
<html>
  <head>
    <link rel="stylesheet" href="xxx.css">
<script src="xxx.js" async></script>
  </head>
  <body>
    <!-- 内容 -->
  </body>
</html>



在此之外,为使得它们之间的联系尽可能的小,在文档和模板中也尽量少地引入样式和脚本文件,建议:

  1. 不使用超过一到两张样式表
  2. 不使用超过一到两个脚本(学会用合并脚本)
  3. 不使用行内样式(<style>.no-good {}</style>)
  4. 不在元素上使用 style 属性(<hr style="border-top: 5px solid black">)
  5. 不使用行内脚本(<script>alert('no good')</script>)
  6. 不使用表象元素(i.e. <b>, <u>, <center>, <font>, <b>)
  7. 不使用表象 class 名(i.e. red, left, center)
保持良好的简洁的树形结构
  • 每一个块级元素都另起一行,每一行都使用Tab缩进对齐(head和body的子元素不需要缩进)。删除冗余的行尾的空格。
  • 使用4个空格代替1个Tab。
  • 你也可以在大的模块之间用空行隔开并添加适当注释,使模块更清晰。
  • 推荐使用小写字母,小写风格看起来更加清爽,容易识别和编写
  • 不推荐省略 <html> 、 <body>、<head> 标签

代码格式

说明文案的注释方法

采用类似标签闭合的写法,与HTML统一格式;注释文案两头空格,与CSS注释统一格式。

  • 开始注释:(文案两头空格)。
  • 结束注释:(文案前加“/”符号,类似标签的闭合)。
  • 允许只有开始注释
<body>
<!-- 侧栏内容区 -->
<div class="m-side">
    <div class="side">
        <div class="sidein">
            <!-- 热门标签 -->
            <div class="sideblk">
                <div class="m-hd3"><h3 class="tit">热门标签</h3> </div>
                ...
            </div>
            <!-- 最热TOP5 -->
            <div class="sideblk">
                <div class="m-hd3">
                    <h3 class="tit">最热TOP5</h3> 
                    <a href="#" class="s-fc02 f-fr">更多»</a>
                </div>
                ...
            </div>
        </div>
    </div>
</div>
<!-- /侧栏内容区 -->
</body>
严格的嵌套
  • 尽可能以最严格的xhtml strict标准来嵌套,比如内联元素不能包含块级元素等等。
  • 正确闭合标签且必须闭合。
  • 结构上如果可以并列书写,就不要嵌套。
    如果可以写成<div></div><div></div>那么就不要写成<div><div></div></div>
  • 如果结构已经可以满足视觉和语义的要求,那么就不要有额外的冗余的结构。
    比如<div><h2></h2></div>已经能满足要求,那么就不要再写成<div><div><h2></h2></div></div>
严格的属性
  • 属性和值全部小写,每个属性都必须有一个值,每个值必须加双引号。
  • 没有值的属性必须使用自己的名称做为值(checked、disabled、readonly、selected等等)。
  • 可以省略style标签和script标签的type属性。
  • 一个标签上引用的className不要过多,越少越好。
    比如不要出现这种情况:<div class="class1 class2 class3 class4"></div>
  • 对于一个语义化的内部标签,应尽量避免使用className。
    比如在这样一个列表中,li标签中的itm应去除:<ul class="m-help"><li class="itm"></li><li class="itm"></li></ul>
内容类型决定使用的语义标签

在网页中某种类型的内容必定需要某种特定的HTML标签来承载,也就是我们常常提到的根据你的内容语义化HTML结构。
如:<time></time> <address></address>

加强“资源型”内容的可访问性和可用性
  • 在资源型的内容上加入描述文案,比如在audio内加入文案和链接,给img添加alt属性等。
    因为<img>标签的 alt 属性指定了替代文本,用于在图像无法显示或者用户禁用图像显示时,代替图像显示在浏览器中的内容。假设由于下列原因用户无法查看图像,alt 属性可以为图像提供替代的信息:
        1.网速太慢
        2.src 属性中的错误
        3.浏览器禁用图像
        4.用户使用的是屏幕阅读器
    从SEO角度考虑,浏览器的爬虫爬不到图片的内容,所以我们要有文字告诉爬虫图片的内容。
  • 减少JavaScript 生成标签:通过 JavaScript 生成的标签让内容变得不易查找、编辑,并且降低性能。能避免时尽量避免。
加强“不可见”内容的可访问性

背景图上的文字应该同时写在html中,并使用css使其不可见,有利于搜索引擎抓取你的内容,也可以在css失效的情况下看到内容。



淘宝、Tmall、京东mate标签参考

<!--淘宝网触屏版-->
<meta charset="utf-8">
<meta name="data-spm" content="a215s">
<meta content="yes" name="apple-mobile-web-app-capable">
<meta content="yes" name="apple-touch-fullscreen">
<meta content="telephone=no,email=no" name="format-detection">
<meta name="App-Config" content="fullscreen=yes,useHistoryState=yes,transition=yes">
<meta name="viewport" content="initial-scale=0.5, maximum-scale=0.5, minimum-scale=0.5, user-scalable=no">
<!--天猫TMALL-->
<meta charset="utf-8">
<meta name="aplus-terminal" content="1">
<meta name="apple-mobile-web-app-title" content="TMALL">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
<meta name="spm-id" content="a223j.8443192">
<meta name="format-detection" content="telephone=no, address=no">
<meta name="aplus-waiting" content="MAN">
<!--JD-->
<meta name="author" content="m.jd.com">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0,user-scalable=no,minimal-ui">
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<meta name="author" content="m.jd.com">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">
<meta http-equiv="Expires" content="-1">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Pragma" content="no-cache">
<meta name="full-screen" content="yes">
<meta name="browsermode" content="application">
<meta name="x5-fullscreen" content="true">
<meta name="x5-page-mode" content="app">
<meta name="description" content="京东JD.COM-专业的综合.....商城购物体验! ">
<meta name="Keywords" content="网上购物,手机,笔记本,电脑.....京东商城">



参考引用:
nec http://nec.netease.com/standard/html-structure.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342