H5 基础

文档类型

在每一个html页面的第一行添加标准模式的声明,必须使用

<!DOCTYPE html>

语言属性

必须为html根元素制定lang属性,从而为文档设置正确的语言。这将有助于语音合成工具确定其所应该采用的发音,有助于翻译工具确定其翻译时所应遵守的规则等

<html lang="zh">

区分浏览器

参照以下写法

    <!DOCTYPE html>
    <!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="zh"> <![endif]-->
    <!--[if IE 7]>    <html class="no-js lt-ie9 lt-ie8" lang="zh"> <![endif]-->
    <!--[if IE 8]>    <html class="no-js lt-ie9" lang="zh"> <![endif]-->
    <!--[if gt IE 8]><!--> <html class="no-js" lang="zh"> <!--<![endif]-->

这样写的好处:

  • 可以使用class作为全局条件区分低版本的IE浏览器并进行调整,这显然要优于使用CSS Hack
  • 可以避免IE6条件注释引起的高版本IE文件阻塞问题,原文的解决方法是在前面加一个空白的条件注释,但是这里显然将原本无用空白的条件注释变得有意义了
  • 仍然可以通过HTML验证
  • 与Modernizr等特征检测类库使用相同的class,更具备通用性

兼容属性

IE 支持通过特定的<meta>标签来确定绘制当前页面所应该采用的 IE 版本。除非有强烈的特殊需求,否则设置为edge mode,从而通知 IE 采用其所支持的最新的模式

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;color:inherit;background-color:transparent;"><meta http-equiv="X-UA-Compatible" content="IE=Edge" /></code>

字符编码

所有标记都应设置为utf–8,它应该同时指定在HTTP报头和文档头部

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;color:inherit;background-color:transparent;"><meta charset="utf-8"></code>

文档描述

为了更好让搜索引擎找到你的页面,必须写上keywordsdescription

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;color:inherit;background-color:transparent;"><meta name="description" content=""><meta name="keywords" content=""></code>

页面title

必须给每个页面加上有意义的标题

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;color:inherit;background-color:transparent;"><title>HTML5 standardization</title></code>

type属性:省略

将样式表和脚本中的type省略,除非你不是用的cssjavascript,在html5,该值默认是text/csstext/javascript

关注点分离

将结构(markup)、表现样式(style)和行为动作(script)分开处理,尽量使三者之间的关联度降到最小,这样有利于维护

  • 必须将css文件引入并置于head中
  • 必须将js文件引入并置于body底部 ###大小写:只使用小写 所有的代码都应是小写的,包括元素名称、属性,属性值(除非text或CDATA的内容)、选择器、css属性、属性值(字符串除外)
<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;color:inherit;background-color:transparent;"><!-- Not recommended --><A HREF="/">Home</A><!-- Recommended --><img src="hengtian.png" alt="hengtian"><!-- Not recommended -->color: #E5E5E5;<!-- Recommended -->color: #e5e5e5;</code>

缩进

每次缩进使用4个空格不要使用Tab

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;color:inherit;background-color:transparent;">.example {    color: blue;}<ul>    <li>Fantastic</li>    <li>Great</li></ul></code>

减少嵌套

尽可能减少嵌套,减少不必要的标签,如果结构可以满足上下文要求,就不需要有冗余的结构

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;color:inherit;background-color:transparent;"><!-- Not recommended --><div><div>test</div></div><!-- Recommended --><div>test</div><!-- Not recommended --><div><div>test</div></div><!-- Recommended --><div>test</div></code>

标签嵌套规则

1.块级元素 address、blockquote、center、dir、div、dl、dt、dd、fieldset、form、h1~h6、hr、isindex、menu、noframes、noscript、ol、p、pre、table、ul

2.内嵌元素 a、abbr、acronym、b、bdo、big、br、cite、code、 dfn、em、font、i、img、input、kbd、label、q、s、samp、select、small、span、strike、 strong、sub、sup、textarea、tt、u、var

嵌套规则

1. 块元素可以包含内联元素或某些块元素,但内联元素却不能包含块元素,它只能包含其它的内联元素:

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;color:inherit;background-color:transparent;"><div><h1></h1><p></p></div> —— 对 <a href=”#”><span></span></a> —— 对 <span><div></div></span> —— 错</code>

2. 块级元素不能放在<p>里面:

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;color:inherit;background-color:transparent;"><p><ol><li></li></ol></p> —— 错 <p><div></div></p> —— 错</code>

3. 有几个特殊的块级元素只能包含内嵌元素,不能再包含块级元素,这几个特殊的标签是:

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;color:inherit;background-color:transparent;">h1、h2、h3、h4、h5、h6、p、dt</code>

4. 块级元素与块级元素并列、内嵌元素与内嵌元素并列:

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;color:inherit;background-color:transparent;"><div><h2></h2><p></p></div> —— 对 <div><a href=”#”></a><span></span></div> —— 对 <div><h2></h2><span></span></div> —— 错</code>

1.2代码规范

注释

  • 单行注释,需在``前空一格
  • 多行注释,注释起始和结尾都另起一行,注释内容缩进4个空格,不要使用Tab
<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;color:inherit;background-color:transparent;"><!-- This is a one line comment --><p>This is a comment</p><!--    This comment is require more than one line, so we should use block-style indented text      --></code>

HTML有效性验证

使用有效的html标签,并利用工具如W3C html validator进行检查

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;color:inherit;background-color:transparent;"><!-- Not recommended --><title>Demo</title><article>This is  a demo.<!-- Recommended --><title>Demo</title><article>This is a demo.</article></code>

语义性

根据标签的语义来合理使用它 如使用footer元素来定义页脚,section元素来定义文档中的章节 这对代码的执行效率和可读性都非常重要

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;color:inherit;background-color:transparent;"><!-- Not recommended --><div><h1>Journey</h1><p>One day you finally knew what you had to do, and began.</p></div><!-- Recommended --><section><h1>Journey</h1><p>One day you finally knew what you had to do, and began.</p></section></code>

HTML5 data-* 自定义属性

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;color:inherit;background-color:transparent;">添加属性的时候需要去掉前缀data-*,-后为一个单词小写.如下</code>
<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;color:inherit;background-color:transparent;"><div id="J_test" data-age="24">    Click Here</div></code>

字符实体引用

为了良好的阅读性,不要使用实体引用的方式,除了以下几种情况:

  • 键盘上没有该字符
  • 在HTML中有特殊含义的字符,如:<,>,&
  • 空格

常用HTML字符实体(建议使用实体):

字符 名称 实体名 实体数
" 双引号 &quot; &#34;
' 撇号 &apos;(IE不支持) &#39;
& 和号 &amp; &#38;
> 右尖括号(大于号) &gt; &#62;
< 左尖括号(小于号) &lt; &#60;
空格 &nbsp; &#160;
中文全角空格 &#12288;

常用特殊字符实体(不建议使用实体):

字符 名称 实体名 实体数
&yen; &#165;
断竖线 &brvbar;
© 版权 &copy; &#169;
® 注册商标R &reg; &#174;
商标TM &trade; &#8482;
间隔符 &middot; &#183;
« 左双尖括号 &laquo; &#171;
» 右双尖括号 &raquo; &#187;
° &deg; &#176;
× &times; &#215;
÷ &divide; &#247;
千分比 &permil; &#8240;

图片和颜色

  • 给图片添加widthheight,提升页面加载速度
  • 给所有img添加alt属性
  • 不要使用或尽量少用gif文件

避免长句

在IDE中,需要去来回拖动滚动条来查看末尾的代码是很不方便的,所以要在合适的位置来断句。

无内容元素

无内容元素是一种不能包含任何内容的特殊元素,比较常见的无内容元素有:br,hr,img,input,link,meta 此类元素不要使用无闭合标签,且在>前无空格

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

推荐阅读更多精彩内容

  • 一、HTML5 1.1 认识HTML5 HTML5并不仅仅只是作为HTML标记语言的一个最新版本,更重要的是它制定...
    福尔摩鸡阅读 15,864评论 14 51
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,472评论 1 45
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,748评论 1 92
  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 3,887评论 0 0
  • 早上好!能量人生:每日一句正能量[玫瑰][玫瑰] (2018年2月13日 农历十二月二十八 星期二) 一颗带着阳光...
    化北I六段演讲阅读 97评论 0 1