海枫科技前端编码风格规范之Html规范

原则

1.规范。保证代码规范,趋html5,远xhtml,保证结构表现行为相互分离。
2.简洁。保证代码的最简化,避免多余的空格、空行,保持代码的语义化,尽量使用具有语意的元素,避免使用样式属性和行为属性。任何时候都要用尽量简单、尽量少的元素解决问题。

语义化:比如head元素来定义头部标题,p元素来定义文字段落,用a元素来定义链接锚点等等。
有根据有目的地使用html元素,对于可访问性、代码重用、代码效率来说意义重大。

3.实用。遵循标准,但是不能以牺牲实用性为代价。
4.忠诚。选择一套规范,然后始终遵循。不管代码由多少人参与,都应该看起来像一个人 的一样。

语法

1.小写。html标签、html属性全部小写。
2.嵌套。所有元素必须正确嵌套。
3.闭合。双标签必须闭合,单标签(自关闭标签)不闭合。
错误书写:

<br/> <hr/>

正确书写:

<br> <hr>

注释

1.详尽注释。解释代码解决问题、解决思路、是否为新方案等。
2.模块注释。建议不使用模块结束注释。
html文件中的注释:

<div class="news"> 建议不使用结束模块的注释,因为这样太丑,并且加重文件负荷

jsp文件中的注释:

<%-- --%>

3.待办注释。

<%-- TODO:待办事项 --%>

文档

1.文档类型使用html5标准文档类型,文档类型声明之前,不允许出现任何非空字符。不允许添加<meta>强制改变文档模式。

推荐使用 HTML5 的文档类型声明 <!DOCTYPE html> (建议使用 text/html 格式的 HTML。避免使用 XHTML。XHTML 以及它的属性,比如application/xhtml+xml 在浏览器中的应用支持与优化空间都十分有限)

2.html元素上指定lang属性。显示页面语言,有助于语言合成工具来确定怎样发音,以及翻译工具决定使用的规则,等等。
3.指定明确的字符编码。让浏览器轻松、快速的确定适合网页内容的渲染方式。
4.IE兼容模式。Internet Explorer支持使用兼容性<meta>标签来指定使用什么版本的IE来渲染页面。如果不是特殊需要,通常通过edge mode来通知IE使用最新的兼容模式。

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

5.head部分的顺序:a.<meta>元素,b.<title>元素,c.样式表。
6.可以使用IE条件注释的方式兼容IE,但是不要添加额外的样式表。
错误的书写:

`

`

正确的书写:

<html class="ie8" lang="zh-cn"> <![endif] --> <html class="ie7" lang="zh-cn"> <![endif] -->

7.现在双核浏览器:360、搜狗、QQ等浏览器可以让网页默认使用webkit内核渲染,代码如下:

<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"> //使用chrome内核渲染。没有则以最高版本IE渲染

属性

1.双引号属性值,不要使用单引号。
2.省略type属性。使用style、link、script,不用指定type属性,因为text/css和text/javascript分别是他们的默认值。
3.省略Boolean属性值。Boolean属性不用添加取值,disabled,checked,selected等。
4.省略url类属性资源协议头。
5.属性顺序。html属性应该按照特定的顺序出现以保证易读性。class->id,name,自定义属性->data-->src,for,type,href->title,alt->aria-,role。
6.自定义属性。自定义属性格式为hyphone-开头,后跟原生属性,如:

<div hyphone-id="id" hyphone-name="name" hyphone-width="width"></div>

7.多媒体元素添加替代属性。图像增加alt属性,音视频增加替代文字。

元素

1.避免冗余标签。
2.段落文字用<p>,避免使用<br>
3.列表项放在<ul>、<ol>、<dl>,不要使用一系列的<div><p>
4.form button应制定type类型,使用type="submit"、type="reset"type="button"
5.table布局中有效使用<thead>、<tbody>、<th>。可以把<tfoot>放在<tbody>前提高加载速度。

格式

1.soft tab【2个英文格式的空格】。
2.嵌套缩进。
3.删除行位空格。
4.块元素、列表元素、表格元素都放在新行。
5.inline元素视情况换行。
6.努力保持每行长度小于120列,如果太长可换行。
如果由于换行的空格引发了不可预计的问题,那将所有元素并入一行也是可以接受的,格式警告总好过错误警告。
错误书写:

`
<img class="block-element" id="unicorn"
src="http://hyphoneit.com/images/img.jpg" alt="unicron,
rainbows, poop and stuff"

`

正确书写:

`
<img
class="block-element"
id="unicorn"
src="http://hyphoneit.com/images/img.jpg"
alt="unicron, rainbows, poop and stuff"

`

脚本加载

出于性能考虑,脚本异步加载很关键。

一段脚本放置在<head>内,比如<script src="hyphone.js"></script>,其加载会一直阻塞DOM解析,直至它完全地加载和执行完毕。这会造成页面显示的延迟。特别是一些重量级的脚本,对于用户体验来说是一个巨大的影响。

异步加载脚本可缓解这种性能影响。

如果只需兼容IE10+,可将html5的async属性加至脚本中,它可防止阻塞DOM的解析,甚至可以将脚本引用写在<head>里也没有影响。
如需兼容老旧的浏览器,实践表明可使用动态注入的脚本加载器。可以考虑使用yepnope或labjs。注入脚本的一个问题是:一直要等到CSS对象文档已就绪,它们才开始加载(短暂滴再CSS加载完毕之后),这就对需要及时触发的JS造成一定的延迟,多少也影响了用户体验。

综上所述,兼容老旧浏览器(IE9-)时,应遵循以下规则:

脚本引用写在body结束标签之前,并带上async属性。
title,alt->aria-*,role。
>6.自定义属性。自定义属性格式为hyphone-开头,后跟原生属性,如:
>>>> <div hyphone-id="id" hyphone-name="name" hyphone-width="width"></div> >>

>7.多媒体元素添加替代属性。图像增加alt属性,音视频增加替代文字。

#元素
>1.避免冗余标签。
>2.段落文字用<p>,避免使用<br>
>3.列表项放在<ul>、<ol>、<dl>,不要使用一系列的<div><p>
>4.form button应制定type类型,使用type="submit"、type="reset"type="button"
>5.table布局中有效使用<thead>、<tbody>、<th>。可以把<tfoot>放在<tbody>前提高加载速度。

#格式
>1.soft tab【2个英文格式的空格】。
>2.嵌套缩进。
>3.删除行位空格。
>4.块元素、列表元素、表格元素都放在新行。
>5.inline元素视情况换行。
>6.努力保持每行长度小于120列,如果太长可换行。
>如果由于换行的空格引发了不可预计的问题,那将所有元素并入一行也是可以接受的,格式警告总好过错误警告。
>错误书写:
>>>> <img class="block-element" id="unicorn" >> src="http://hyphoneit.com/images/img.jpg" alt="unicron, >> rainbows, poop and stuff" >> > >>

>正确书写:
>>>> <img >> class="block-element" >> id="unicorn" >> src="http://hyphoneit.com/images/img.jpg" >> alt="unicron, rainbows, poop and stuff" >> > >>

#脚本加载
>出于性能考虑,脚本异步加载很关键。
>>一段脚本放置在<head>内,比如<script src="hyphone.js"></script>,其加载会一直阻塞DOM解析,直至它完全地加载和执行完毕。这会造成页面显示的延迟。特别是一些重量级的脚本,对于用户体验来说是一个巨大的影响。

>异步加载脚本可缓解这种性能影响。
>>如果只需兼容IE10+,可将html5的async属性加至脚本中,它可防止阻塞DOM的解析,甚至可以将脚本引用写在<head>里也没有影响。
如需兼容老旧的浏览器,实践表明可使用动态注入的脚本加载器。可以考虑使用yepnope或labjs。注入脚本的一个问题是:一直要等到CSS对象文档已就绪,它们才开始加载(短暂滴再CSS加载完毕之后),这就对需要及时触发的JS造成一定的延迟,多少也影响了用户体验。

>综上所述,兼容老旧浏览器(IE9-)时,应遵循以下规则:
>>脚本引用写在body结束标签之前,并带上async属性。
这虽然在老旧浏览器中不会异步加载脚本,单它只阻塞了body结束标签之后的DOM解析,这就大大降低了其阻塞影响。而在现代浏览器中,脚本将在DOM解析器发现body尾部的script标签才进行加载,此时加载属于异步加载,不会阻塞DOM解析。

推荐书写方法:

<!DOCTYPE html> <head> <link rel="stylesheet" href="hyphone.css"> </head> <body> <script src="hyphone.js" async></script> </body> </html>

关注点分离

理解web中如何和为何区分不同的关注点,这很重要。这里的关注点主要指的是:信息(HTML结构)、外观(CSS)和行为(JavaScript)。为了使它们成为可维护的干净整洁的代码,我们要尽可能的将它们分离开来。
严格地保证结构、表现、行为三者分离,并尽量使三者之间没有太多的交互和联系。

即,尽量在文档和模板中只包含结构性的HTML;而将所有表现代码,移入样式表中;将所有动作行为,移入脚本中。在此之外,为使得它们之间的联系尽可能的小,在文档和模板中也尽量少地引入样式和脚本文件。
清晰的分层意味着:
1.不使用超过一到两张样式表( common.css, self.css
2.不使用超过一到两个脚本(学会用合并脚本)
3.不使用行内样式(<style>.no-good{}</style>
4.不在元素上使用style属性(<hr style="border-top:5px solid black">
5.不使用行内脚本(<script>alert('no good')</script>
不使用表象元素(<b>、<u>、<center>、<font>
不使用表象class名(red,left,center

错误书写:

<!DOCTYPE html> <head> <link rel="stylesheet" href="base.css"> <link rel="stylesheet" href="grid.css"> <link rel="stylesheet" href="type.css"> <link rel="stylesheet" href="modules/user.css"> </head> <body> <h1 style="font-size:3rem"></h1> <b>海枫科技</b> <center>海枫科技</center> <script> alert('海枫科技'); </script> <div class="red">海枫科技</div> </body> </html>

正确书写:

<!DOCTYPE html> <head> <link rel="stylesheet" href="common.css"> <link rel="stylesheet" href="modules/user.css"> </head> <body> <h1 class="title"></h1> <div class="sub-title">海枫科技</div> <span class="comment">海枫科技</span> <div class="important">海枫科技</div> <script src="hyphone.js" async><script> </body> </html>

HTML内容至上

不要让非内容信息污染了你的HTML。现在貌似有一种倾向:通过HTML来解决设计问题,这是显然不对的。HTML就应该只关注内容。
HTML标签的目的,就是为了不断地展示内容信息。

不要引入一些特定的HTML结构来解决一些视觉设计问题
不要讲img元素当做专门用来做视觉设计的元素

不推荐的书写:

<span class="text-box"> <span class="square"></span> Hellow Hyphone! </span> .text-box > .square{ display: inline-block; width: 1rem; height: 1rem; background-color: red; }

推荐书写:

<span class="text-box"> Hellow Hyphone! </span> .text-box:before{ content: ""; display: inline-block; width: 1rem; height: 1rem; background-color: red; }

图片和SVG图形能被引入到HTML中的唯一理由是它们呈现出了与内容相关的一些信息。

不推荐的书写:

<span class="text-box"> ![](square.svg) Hellow Hyphone! </span>

推荐书写:

<span class="text-box"> Hellow Hyphone! </span> .text-box:before{ content: ""; display: inline-block; width: 1rem; height: 1rem; background: url(square.svg) no-repeat; background-size: 100%; }

命名规范

文件名称命名统一用小写的英文字母,不得包含汉字空格数字和特殊符号等,遵循两个原则:1.方便理解;2.方便查找。
不推荐

产品.html index_%.html about-us.html 1.html

推荐

product.html index.html about.html

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

推荐阅读更多精彩内容