HTML快速恢复 之 HTML基础

作者: 平安喜乐698 | 来源:发表于2017-12-09 22:01 被阅读4785次
    目录
        1. HTML
        2. XHTML
        3. HTML5
        4. 参考手册
    
    1. HTML

    简介

    HTML (Hyper Text Markup Language) 超文本标记语言
        并不是一种编程语言,而是一种标记语言(拥有一套标记标签,可编辑用来显示网页) 
    
    优点:
            开发成本低(跨平台开发---节省了硬件、人力、时间成本)
    缺点:
            1.不够原生态(交互不流畅)   
            2.加载速度慢
            3.兼容性问题
    
    相关编程语言
        HTML            :负责 显示界面
        CSS             :负责 修饰界面(控件的样式、大小位置、动画)
        JS(JavaScript) :负责 交互
    开发工具
        WebStorm、Dreamweaver、Editplus、记事本... 
    历史版本
        HTML        1991
        HTML+       1993
        HTML 2.0    1995
        HTML 3.2    1997
        HTML 4.01   1999
        XHTML 1.0   2000
        HTML5       2012
        XHTML5      2013
    
    1. 基本语法
    HTML文档(.html文件)即网页,包含 HTML 标签和纯文本。
    
    HTML 标签
        由尖括号包围的关键词,比如 <html>
        通常成对出现(也有单个如<br/>),比如 <b> 和 </b>。标签对中的第一个标签是开始标签,第二个标签是结束标签(开始和结束标签也被称为开放标签和闭合标签)。
        标签之间的关系: 兄弟标签 | 父子标签
    
    HTML 元素
        从开始标签到结束标签的所有代码(包括标签)。
        元素的内容:开始标签与结束标签之间的内容。
        元素的属性(用来修饰):开始标签中的键值对,如<div id="secondContentId" name="secondContentName">。
    
    简单示例(helloWorld.html)
    
        <!DOCTYPE html>                      <!-- 文档声明标签 -->
        <html>                               <!-- html开始标签 -->
            <head>                               <!-- 页面头部 开始标签-->
                <meta charset="UTF-8">               <!-- 设置属性:编码格式 -->
                <title>helloWorld</title>            <!-- 页面标题 -->
            </head>                              <!-- 页面头部 结束标签 -->
            <body>                               <!-- 页面内容 开始标签-->
            </body>                              <!-- 页面内容 结束标签-->
        </html>                              <!-- html结尾标签 -->
    
    说明:
      1、文档声明标签写法固定。
          表明页面使用哪个 HTML 版本进行编写,必须位于HTML文档的第一行(在 <html> 标签之前)。
      2、
         页面的所有内容都是在写<html></html>页面标签中。
         页面的标题等头部信息写在<head></head>标签中。
         页面的显示内容写在<body></body>标签中。
      3、
        不区分单双引号(当内容中包含双引号则必须使用单引号)
        不区分大小写
    

    1.1 head元素

    可包含<title>、<base>、<link>、<meta>、<script> 、<style>
    

    title元素

    必须包含(用来定义浏览器中本页面的标题)
    
    <title>主页</title>
    

    base元素

    为页面上的所有链接规定默认地址或默认目标
    
    <base href="http://www.w3school.com.cn/images/" />
    <base target="_blank" />
    

    meta元素

    用来描述文档 相关信息
    
    类型/编码
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    作者
    <meta name="author"
    content="cx">
    最后修改
    <meta name="revised"
    content="cx,8/1/17">
     编辑工具
    <meta name="generator"
    content="Dreamweaver">
    描述
    <meta name="description"
    content="HTML examples">
    关键字(搜索引擎使用)
    <meta name="keywords"
    content="HTML, DHTML, CSS, XML, XHTML, JavaScript, VBScript">
    重定向
    <meta http-equiv="Refresh" content="5;url=http://www.w3school.com.cn" />
    

    link元素

    引入外部样式文件
    
    <link rel="stylesheet" type="text/css" href="mystyle.css" />
    

    script元素

    脚本(处理交互)
    
    引入外部脚本文件
    <script type="text/javascript" src="js/myScript.js"></script>
    
    本页脚本文件
    <script>
    document.write("<h1>Hello World!</h1>");
    </script>
    

    style元素

    本页样式
    
    <style type="text/css">
    body {
      background-color:yellow;
    }
    .customClass{
    }
    #customId{
    }
    </style>
    

    1.2 body元素

    <body bgcolor="yellow"  style="background-color:PowderBlue;"></body>   
    
    网页背景
    background="clouds.gif"
    background="http://www.w3school.com.cn/clouds.gif"
    bgcolor="black"
    bgcolor="rgb(0,0,0)"
    bgcolor="yellow"
    

    1.3 其他

    注释标签
    
    <!--
    注释(不会显示在页面)
    (支持:IE Firefox Chrome Safari Opera)
    -->
    
    转义字符
    
         空格              &nbsp;      &#160;
    <    小于号            &lt;         &#60;
    >    大于号            &gt;         &#62;
    &    和号              &amp;       &#38;
    "    引号              &quot;      &#34;
    '    撇号              &apos; (IE不支持)    &#39;
    ¢   分(cent)         &cent;      &#162;
    £    镑(pound)        &pound;    &#163;
    ¥    元(yen)          &yen;      &#165;
    €    欧元(euro)       &euro;     &#8364;
    §    小节              &sect;     &#167;
    ©    版权(copyright)  &copy;     &#169;
    ®    注册商标           &reg;      &#174;
    ™    商标              &trade;    &#8482;
    ×    乘号              &times;    &#215;
    ÷    除号              &divide;    &#247;
    
    颜色
        aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, yellow
        #F0F8FF
    

    W3CSchool颜色参考

    字符编码
    
     ASCII
        万维网早期使用字符集(支持 0-9 的数字,大写和小写英文字母表,以及一些特殊字符)
    
    ISO-8859-1
        现代浏览器的默认字符集(如果网页使用其他字符集,需 <meta> 指定)
        ISO-8859-1 的较低部分(从 1 到 127 之间的代码)是最初的 7 比特 ASCII。
        ISO-8859-1 的较高部分(从 160 到 255 之间的代码)全都有实体名称
    
    Unicode 
        涵盖了世界上的所有字符、标点和符号。
    

    ASCII参考手册

    1. 基础标签

    2.1 文本

    标题(级别1~6)
        <h1 align="right">最大字体的标题</h1>
        元素前后有换行。
        不要为了粗体而使用标题,因为索引擎使用标题为您的网页的结构和内容编制索引。  
        align:left(默认) center right justify
        事件:onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup
    文本容器
        <span>简单文本</span>
    段落文本(元素前后有换行)(可通过<br/>换行)
        <p style="font-family:times;color:green;font-size:30px">段落文本(字体 颜色 大小)</p>
    预编译段落文本(空格换行有效)(元素前后有换行)
        <pre>段落文本<pre/>
    
    
    粗体文本(注意不是bold,big或b或strong)           
        <b>粗体文本<b/>
    斜体文本
        <i>斜体文本<i/>
        <em>斜体文本<em/>
    小字体文本
        <small>小字体文本<small/>    
    下标文本
        <sub>subscript</sub>
    上标文本
        <sup>superscript</sup>
    删除文本
        <del>二十</del>
    下划线文本
        <ins>十二</ins>
    
    
    换行
        <br/>
    分割线
        <hr/>
    空格
        &nbsp;                 
    
    列表(可嵌套)
        ol                      有序列表(子标签li)
        ul                      无序列表(子标签li)
        dl                      说明列表(子标签dt:展示  dd:描述--换一行显示)
    
        ul的type:
            disc 实心圆、circle 空心圆、square 实心方块
        ol的type:
            不写默认 数字、A 大写字母、a 小写字母、I 大写罗马数字、i 小写罗马数字
        例:
            <ol>                
                <li>apple</li>                
                <li>banner</li>
            </ol>
    
            <ul type="disc">  
                <li>apple</li>
                <li>banner</li>
            </ul>
    
            <dl>
                <dt>文本</dt>
                    <dd>文本描述</dd>
                <dt>文本</dt>
                    <dd>文本描述</dd>
            </dl>
    
    编程相关
        <code>代码</code>
        <kbd>Keyboard input</kbd>
        <tt>Teletype text</tt>
        <samp>Sample text</samp>
        <var>变量</var>
    

    2.2 图片

    图片 
        <img src="相对路径/绝对路径/网络路径" alt="图片不显示时显示的文本" width="128" height="128"/>
        支持gif,加载图片会耗时
    
    背景图片
        <body background="相对路径" align="bottom" border="0">
        支持gif,大小不够时会重复显示
        align :middle top bottom left right 
    
    点击图片上的某处区域跳转
        <img src="路径"  usemap="#planetmap" />
        <map name="planetmap" id="planetmap">
            <area shape="circle" coords="180,139,14" href="路径" target ="_blank"/>
        </map>
    

    2.3 链接

    超链接,跳到下一页
        <a href="http://www.baidu.com" target="_blank" style="text-decoration:none">百度</a>   
            _blank:在新的页面打开(默认)
            _self:则为当前页
            _top:跳出当前框架
    
    发邮件(注意不是mail,是mailto)
        <a href="mailto:someone@microsoft.com?cc=someoneelse@microsoft.com&bcc=andsomeoneelse2@microsoft.com&subject=Summer%20Party&body=You%20are%20invited%20to%20a%20big%20summer%20party!">Send e-mail</a>
    
    锚(直接跳转到相应位置,不用来回翻)
        <a name="tips">定义锚</a> 
        <a href="#tips">跳转到锚的位置</a>
        <a href="http://www.w3school.com.cn/html/html_links.asp#tips">跳到该页面的锚所在位置,没有则跳顶部</a>
    

    2.4 布局

    容器div(常用)
        <div style="width:30px ;height:20px ; background-color:white"></div>
        自动换行,不设高度时自适应高
    
    表格table 
            <table background="/i/eg_bg_07.gif" bgcolor="red" border="1" cellpadding="10" cellspacing="10" frame="box">   边框 单元格与内容的间距 单元格与单元格的间距 
                <caption>标题</caption> 标题
                <tr>
                    <th>Heading</th>    表头(粗体,可不要)
                    <th>Another Heading</th>
                </tr>                
                <tr>                    行
                    <td bgcolor="red" align="left">1行1列</td>      列                   
                    <td colspan="2">1行2列</td>      跨2列          
                </tr>                
                <tr>                    
                    <td rowspan="2">2行1列</td>      跨2行               
                    <td background="/i/eg_bg_07.gif">2行1列</td>               
                </tr>
            </table>
    
        frame
          box(上下左右)
          above
          below
          hsides(上下)
          vsides(左右)
    
    1. css 和 javascript

    css

        放在head中,或者放在.css文件中然后引用(.className , div.className , #idName)。
        也可以直接属性style。
    
    【具体见CSS篇】
    
    例:
    
    <!DOCTYPE html>
    <html>
    <head>
    
    <style type="text/css">
    .myClass{
        line-height:30px;
        background-color:black;
        color:white;
        text-align:center;
        margin:20px;
        padding:20px;
        height:300px;
        width:100px;
        float:left;
        clear:both;
        width:100%;
        border:1px solid #d4d4d4;
        font-size:30px;
        font-family:times    
    } 
    
    div.myClass{  针对class为cities且元素类型为div的元素
        background-color:black;
    }
    
    #myId{
        background-color:black;
        color:white;
        text-align:center;
        padding:5px;
    }
    </style>
    
    .css文件(style写在另一个文件里)
    <link rel="stylesheet" type="text/css" href="/html/csstest1.css">
    </head>
    
    <body>
    <div class="myClass"></div> 
    <div id="myId"></div> 
    </body>
    </html>
    

    javascript

        可以放在head,body中,或放在.js文件中然后引用。
    
    <script type="text/javascript">
    document.write("<h1>Hello World!</h1>")
    </script> 
    <!--不支持脚本时显示-->
    <noscript>Sorry, your browser does not support JavaScript!不支持</noscript>
    
    【具体见Javascript篇】
    
    1. 框架
    框架:同一窗口中显示多个页面
    

    frameset

    <frameset cols="25%,50%,25%" noresize="noresize"> 3列 不可拖动改变大小
      <frame src="html相对路径">
      <frame src="html相对路径">
      <frame src="html相对路径" noresize="noresize"> 
    <noframes>
    <body>您的浏览器无法处理框架!</body>
    </noframes>
    </frameset>
    
    
    <frameset rows="120,*"> 2行
      <frame src="html相对路径">
    </frameset>
    
    
    注意:
         <body></body> 标签不能与 <frameset></frameset> 标签同时使用,除非在noframes中。
    

    iframe

    用于在网页内显示网页
    <iframe src="路径" width="200" height="200"  frameborder="0" name="iframeName"></iframe>
    
    // 在iframeName内打开网页
    <a href="http://www.w3school.com.cn" target="iframeName">W3School.com.cn</a>
    
    1. 表单form
    表单
        用于将用户输入的数据提交到服务器
    
    <form id="form1" action="http://www.example.com/test.asp" method="post" onsubmit="return login()" target="_blank" accept-charset="UTF-8"
    ectype="application/x-www-form-urlencoded" autocomplete="off" novalidate>  地址,请求方式(post/get),点击submit按钮执行login方法,在新窗口打开,字符集,编码,不自动完成表单(默认:自动),不验证表单
    
    每一个type必须设置name属性让服务器接收(否则服务器接收不到数据)
    邮箱
    <input type="email" name="email" readonly disabled size="40" maxlength="10" autofocus pattern="[A-Za-z]{3}"/>
    文本(注意不是textfield)
    <input type="text" name="lastname" value="张三李四" size="30" maxlength="50"/>
    密码
    <input type="password" name="pwd"/>
    多选框(注意不是<checkbox>)
    <input type="checkbox" name="che" value="apple" checked="checked"/> apple
    <input type="checkbox" name="che" value="apple2" checked="checked"/> apple2
    单选框
    <input type="radio" name="sex" value="male" checked>Male
    <input type="radio" name="sex" value="female">Female
    提交按钮
    <input type="submit"/>
    重置按钮
    <input type="reset"/>
    隐藏控件
    <input type="hidden"/>
    下拉列表
    <select name="cars">
        <option value="volvo">Apples</option>
        <option  value="volvo" selected>Bananas</option>
        <option value="volvo">Cherries</option>
    </select>
    文本区域
    < textarea name="Comment" rows="60"
    cols="20">
    </textarea>
    按钮
    <input type="button" onclick="alert('Hello World!')" value="Click Me!">
    数字(有上下箭头)
    <input type="number" name="quantity" min="1" max="5" step="3">
    颜色
    <input type="color" name="favcolor" value="#ff0000">
    滑动条(注意不是slider)
    <input type="range" name="points" min="0" max="10" step="1">
    日期(会弹出日历视图)
    <input type="date" name="bday" max="1979-12-31" min="1979-12-31">
    月份和年份
    <input type="month" name="bdaymonth">
    周和年
    <input type="week" name="week_year">
    时间(小时和分钟)
    <input type="time" name="usr_time">
    日期和时间(时间,日,月,年)
    <input type="datetime" name="bdaytime">
    时间,日,月,年
    <input type="datetime-local" name="bdaytime">
    手机号
    <input type="tel" name="usrtel">
    网址
    <input type="url" name="homepage">
    </form>
    
    <input type="text" name="lname" form="form1"/>
    
    step 属性(与 max min 一起)适用于:
        number、range、date、datetime、datetime-local、month、time、week
    
    min 和 max 属性
        min="0" max="10" 设置最小最大值
        适用于:
        number、range、date、datetime、datetime-local、month、time 以及 week
    
    required 属性
        required="required"  该元素内容必填
        适用于:
        text、search、url、tel、email、password、date pickers、number、checkbox、radio、file
    
    placeholder 属性
        placeholder="Search W3School"  提示内容
        适用于:
        text、search、url、tel、email 以及 password
    
    novalidate 属性
        novalidate="true"不再验证 form 或 input 域(不再需要满足那些限制条件如正则等)
        适用于 
        <form> 以及以下类型的 <input> 标签:text, search, url, telephone, email, password, date pickers, range 以及 color.
    
    pattern 属性
        pattern="[A-z]{3}" 内容需满足正则
        适用于:
        text、search、url、tel、email、and password
    
    multiple 属性
        multiple="multiple" 多选,允许选择多个文件
        适用于:
        email 和 file
    
    height 和 width 属性仅用于 <input type="image">
    
    datalist 属性
        适用于text, search, url, telephone, email, date pickers, number, range 以及 color。
        <datalist id="url_list">
        <option label="W3Schools" value="http://www.w3school.com.cn" />
        <option label="Google" value="http://www.google.com" />
        <option label="Microsoft" value="http://www.microsoft.com" />
        </datalist>
    
    autocomplete 属性
        适用于
        <form> 标签,以及以下类型的 <input> 标签:text, search, url, telephone, email, password, datepickers, range 以及 color
    
    autofocus 属性
        autofocus="autofocus"  自动获取焦点
        适用于:
        所有 <input> 标签的类型    
        
    form 属性
        form="user_form"  属于哪个form
        在<form id="user_form"></form>外
        适用于:
        所有 <input> 标签的类型
    
    表单重写属性
        formaction - 重写表单的 action 属性
        formenctype - 重写表单的 enctype 属性
        formmethod - 重写表单的 method 属性
        formnovalidate - 重写表单的 novalidate 属性
        formtarget - 重写表单的 target 属性
        适用于:
        submit 和 image
    
    视频
    <video width="320" height="240" controls="controls">
      <source src="/i/movie.ogg" type="video/ogg">
      <source src="/i/movie.mp4" type="video/mp4">
    Your browser does not support the video tag.
    </video>
    
    

    事件

    Window 事件(适用于body元素)
    
    onafterprint          文档打印之后运行的脚本。
    onbeforeprint         文档打印之前运行的脚本。
    onbeforeunload        文档卸载之前运行的脚本。
    onerror               在错误发生时运行的脚本。
    onhaschange           当文档已改变时运行的脚本。
    onload                页面结束加载之后触发。
    onmessage             在消息被触发时运行的脚本。
    onoffline             当文档离线时运行的脚本。
    ononline              当文档上线时运行的脚本。
    onpagehide            当窗口隐藏时运行的脚本。
    onpageshow            当窗口成为可见时运行的脚本。
    onpopstate            当窗口历史记录改变时运行的脚本。
    onredo                当文档执行撤销(redo)时运行的脚本。
    onresize              当浏览器窗口被调整大小时触发。
    onstorage             在 Web Storage 区域更新后运行的脚本。
    onundo                在文档执行 undo 时运行的脚本。
    onunload              一旦页面已下载时触发(或者浏览器窗口已被关闭)。
    
    form表单事件
    
    onblur           失去焦点时调用。
    onchange         在元素值被改变时运行的脚本。
    oncontextmenu    当上下文菜单被触发时运行的脚本。
    onfocus          当元素获得焦点时运行的脚本。
    onformchange     在表单改变时运行的脚本。
    onforminput      当表单获得用户输入时运行的脚本。
    oninput          当元素获得用户输入时运行的脚本。
    oninvalid        当元素无效时运行的脚本。
    onreset          当表单中的重置按钮被点击时触发。HTML5 中不支持。
    onselect         在元素中文本被选中后触发。
    onsubmit         在提交表单时触发。
    
    Keyboard 事件
    
    onkeydown        在用户按下按键时触发。
    onkeypress       在用户敲击按钮时触发。
    onkeyup          当用户释放按键时触发。
    
    鼠标事件
    
    onclick           元素上发生鼠标点击时触发。
    ondblclick        元素上发生鼠标双击时触发。
    ondrag            元素被拖动时运行的脚本。
    ondragend         在拖动操作末端运行的脚本。
    ondragenter       当元素元素已被拖动到有效拖放区域时运行的脚本。
    ondragleave       当元素离开有效拖放目标时运行的脚本。
    ondragover        当元素在有效拖放目标上正在被拖动时运行的脚本。
    ondragstart       在拖动操作开端运行的脚本。
    ondrop            当被拖元素正在被拖放时运行的脚本。
    onmousedown       当元素上按下鼠标按钮时触发。
    onmousemove       当鼠标指针移动到元素上时触发。
    onmouseout        当鼠标指针移出元素时触发。
    onmouseover       当鼠标指针移动到元素上时触发。
    onmouseup         当在元素上释放鼠标按钮时触发。
    onmousewheel      当鼠标滚轮正在被滚动时运行的脚本。
    onscroll          当元素滚动条被滚动时运行的脚本。
    
    多媒体事件
    
    onabort             在退出时运行的脚本。
    oncanplay           当文件就绪可以开始播放时运行的脚本(缓冲已足够开始时)。
    oncanplaythrough    当媒介能够无需因缓冲而停止即可播放至结尾时运行的脚本。
    ondurationchange    当媒介长度改变时运行的脚本。
    onemptied           当发生故障并且文件突然不可用时运行的脚本(比如连接意外断开时)。
    onended             当媒介已到达结尾时运行的脚本(可发送类似“感谢观看”之类的消息)。
    onerror             当在文件加载期间发生错误时运行的脚本。
    onloadeddata        当媒介数据已加载时运行的脚本。
    onloadedmetadata    当元数据(比如分辨率和时长)被加载时运行的脚本。
    onloadstart         在文件开始加载且未实际加载任何数据前运行的脚本。
    onpause             当媒介被用户或程序暂停时运行的脚本。
    onplay              当媒介已就绪可以开始播放时运行的脚本。
    onplaying           当媒介已开始播放时运行的脚本。
    onprogress          当浏览器正在获取媒介数据时运行的脚本。
    onratechange        每当回放速率改变时运行的脚本(比如当用户切换到慢动作或快进模式)。
    onreadystatechange         每当就绪状态改变时运行的脚本(就绪状态监测媒介数据的状态)。
    onseeked            当 seeking 属性设置为 false(指示定位已结束)时运行的脚本。
    onseeking           当 seeking 属性设置为 true(指示定位是活动的)时运行的脚本。
    onstalled           在浏览器不论何种原因未能取回媒介数据时运行的脚本。
    onsuspend           在媒介数据完全加载之前不论何种原因终止取回媒介数据时运行的脚本。
    ontimeupdate        当播放位置改变时(比如当用户快进到媒介中一个不同的位置时)运行的脚本。
    onvolumechange      每当音量改变时(包括将音量设置为静音)时运行的脚本。
    onwaiting           当媒介已停止播放但打算继续播放时(比如当媒介暂停已缓冲更多数据)运行脚本
    

    全局属性

    accesskey       规定激活元素的快捷键。
    class           规定元素的一个或多个类名(引用样式表中的类)。
    contenteditable    规定元素内容是否可编辑。
    contextmenu     规定元素的上下文菜单。上下文菜单在用户点击元素时显示。
    data-*          用于存储页面或应用程序的私有定制数据。
    dir             规定元素中内容的文本方向。
    draggable       规定元素是否可拖动。
    dropzone        规定在拖动被拖动数据时是否进行复制、移动或链接。
    hidden          规定元素仍未或不再相关。
    id              规定元素的唯一 id。
    lang            规定元素内容的语言。
    spellcheck      规定是否对元素进行拼写和语法检查。
    style           规定元素的行内 CSS 样式。
    tabindex        规定元素的 tab 键次序。
    title           规定有关元素的额外信息。
    translate       规定是否应该翻译元素内容。
    
    2. XHTML
    例:
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Title of document</title>
    </head>
    <body>
    </body>
    </html>
    
    
        XHTML 元素是以 XML 格式编写的 HTML 元素
        XHTML DOCTYPE 是强制性的
        <html> 中的 XML namespace 属性是强制性的
        <html>、<head>、<title> 以及 <body> 也是强制性的
        XHTML 元素必须正确嵌套
        XHTML 元素必须始终关闭
        XHTML 元素必须小写
        XHTML 文档必须有一个根元素
        XHTML 属性必须使用小写
        XHTML 属性值必须用引号包围
        XHTML 属性简写也是禁止的(必须键值对)
    
    如何从 HTML 转换到 XHTML
        向每张页面的第一行添加 XHTML <!DOCTYPE>
        向每张页面的 html 元素添加 xmlns 属性
        把所有元素名改为小写
        关闭所有空元素
        把所有属性名改为小写
        为所有属性值加引号
    
    3. HTML5
    HTML5(最新的 HTML 标准,前一版本:HTML4.0.1)
        所有现代浏览器都支持,跨平台(PC、平板、手机、电视机),无需额外插件。默认字符编码是 UTF-8
    
    新特性
        新的语义元素,比如 <header>, <footer>, <article>, and <section>。
        新的表单控件,比如数字、日期、时间、日历和滑块。
        强大的图像支持(借由 <canvas> 和 <svg>)
        强大的多媒体支持(借由 <video> 和 <audio>)
        强大的新 API,比如用本地存储取代 cooki
    
    定义了八个新的语义 HTML 元素(都是块级元素)。
        把 CSS display 属性设置为 block,以确保老式浏览器中正确的行为
        header, section, footer, aside, nav, main, article, figure {
            display: block; 
        }
    

    4种 属性表示语法

    Empty           <input type="text" value="John Doe" disabled>  键
    Unquoted        <input type="text" value=John Doe>             无引号
    Double-quoted   <input type="text" value="John Doe">           双引号
    Single-quoted   <input type="text" value='John Doe'>           单引号
    

    已从 HTML5 中删除:

    属性:
    script中的type属性
    元素:
    ins
    以下 HTML 4.01 元素
    <acronym>
    <applet>
    <basefont>
    <big>
    <center>
    <dir>
    <font>
    <frame>
    <frameset>
    <noframes>
    <strike>
    <tt>
    

    新的元素

    <article>   定义文章。
    <section>   定义文章(或节)。
    <header>    定义文章或节的页眉。
    <footer>    定义文章或节的页脚。
    <aside>     定义和主内容相关的内容。
    <bdi>       定义与其他文本不同的文本方向。
    <details>   定义用户可查看或隐藏的额外细节。
    <dialog>    定义对话框或窗口。
    <figure>    定义自包含内容(包含:图示、图表、照片、代码清单等等)。
    <figcaption>    定义 <figure> 元素的标题。
    <main>      定义文档的主内容。
    <mark>      定义重要或强调的内容。
    <menuitem>  定义用户能够从弹出菜单调用的命令/菜单项目。
    <meter>     定义已知范围(尺度)内的标量测量。
    <nav>       组织导航链接。
    <progress>  定义任务进度。
    <rp>        定义在不支持 ruby 注释的浏览器中显示什么。
    <rt>        定义关于字符的解释/发音(用于东亚字体)。
    <ruby>      定义 ruby 注释(用于东亚字体)。
    <summary>   定义 <details> 元素的可见标题。
    <time>      定义日期/时间。
    <wbr>       定义可能的折行(line-break)
    hgroup 组合标题元素
    

    新的表单元素

    <datalist>  下拉选项(输入部分对应内容下拉提示,可放在input元素下)。option必须设置value值。
        <datalist id="url_list">
        <option label="hello01" value="http://www.baidu.com" />
        <option label="hello02" value="http://www.baidu.com" />
        <option label="hello03" value="http://www.baidu.com" />
        </datalist>
    
    <keygen>    是密钥对生成器(key-pair generator)。当提交表单时,会生成两个键,一个是私钥,一个公钥。私钥(private key)存储于客户端,公钥(public key)则被发送到服务器。公钥可用于之后验证用户的客户端证书(client certificate)。用于放在表单内。支持浏览器有限
    
    <output>    定义计算结果。
    

    input新的type类型

    color
    date 日历(Safari不支持,会弹出日历视图)
    datetime
    datetime-local
    email 邮箱(不符合邮箱规范时提示)
    month
    number 数字(不符合数字规范时提示)
    range 滑动条
    search
    tel
    time
    url 网址URL(不符合网址规范时提示)
    week
    

    form新的属性

        autocomplete
        novalidate
    

    input新的属性

    autocomplete
    autofocus
    form
    formaction
    formenctype
    formmethod
    formnovalidate
    formtarget
    height 和 width
    list
    min 和 max
    multiple
    pattern (regexp)
    placeholder
    required
    step
    

    添加自定义新元素

    <script>document.createElement("myHero")</script> 此行代码仅适用IE 
    <style>
      myHero {
        display: block;
        background-color: #ddd;
        padding: 50px;
        font-size: 30px;
      } 
    </style> 
    
    <myHero>My First Hero</myHero>
    
    Internet Explorer 8 以及更早的版本,不允许对未知元素添加样式X。解决:
      <!--[if lt IE 9]>
      <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
      <![endif]-->
    
    图片
    <canvas>    定义使用 JavaScript 的图像绘制。
    <svg>       定义使用 SVG 的图像绘制。
    多媒体
    <audio>     定义声音或音乐内容。
    <embed>     定义外部应用程序的容器(比如插件)。
    <source>    定义 <video> 和 <audio> 的来源。
    <track>     定义 <video> 和 <audio> 的轨道。
    <video>     定义视频或影片内容。
    
    语义元素
    
    语义元素: 清楚地向浏览器和开发者描述其意义(如:table,form,img,a)
    非语义元素:<div> 和 <span>
    
    1. 多媒体
        多媒体: 可以是多种不同的格式(听到或看到的任何内容:文字、图片、音乐、音效、录音、电影、动画等等)
    
    视频格式
    
    AVI         .avi    Audio Video Interleave 微软开发。所有 Windows 都支持 AVI 格式。但非 Windows 计算机并不总是能够播放。
    WMV         .wmv    Windows Media 微软开发。如果未安装额外的(免费)组件,就无法播放 Windows Media 电影。一些后期的 Windows Media 电影在所有非 Windows 计算机上都无法播放,因为没有合适的播放器。
    MPEG        .mpg
                .mpeg   Moving Pictures Expert Group 跨平台,大多数浏览器支持。
    QuickTime   .mov    QuickTime 苹果公司开发。QuickTime 电影不能在没有安装额外的(免费)组件的 Windows 计算机上播放。
    RealVideo   .rm
                .ram    RealVideo 由Real Media 针对因特网开发的。该格式允许低带宽条件下(在线视频、网络电视)的视频流。由于是低带宽优先的,质量常会降低。
    Flash       .swf
                .flv    Flash (Shockwave) 由 Macromedia 开发的。需要额外的组件来播放。该组件会预装到 Firefox 或 IE 之类的浏览器上。
    Mpeg-4      .mp4    Mpeg-4 (with H.264 video compression) 是一种针对因特网的新格式。YouTube 推荐使用 MP4。YouTube 接收多种格式,然后全部转换为 .flv 或 .mp4 以供分发。
    
    声音格式
    
    MIDI        .mid
                .midi   MIDI (Musical Instrument Digital Interface) 是一种针对电子音乐设备(比如合成器和声卡)的格式。MIDI 文件仅包含音乐指令,不含有声音(所以 MIDI 文件极其小巧)。
    RealAudio   .rm
                .ram    RealAudio 由 Real Media 针对因特网开发的。该格式也支持视频。该格式允许低带宽条件下的音频流(在线音乐、网络音乐)。由于是低带宽优先的,质量常会降低。
    Wave        .wav    Wave (waveform)由 IBM 和微软开发的。所有运行 Windows 的计算机和所有网络浏览器(除了 Google Chrome)都支持它。无压缩
    WMA         .wma    WMA 格式 (Windows Media Audio),质量优于 MP3,兼容大多数播放器,除了 iPod。WMA 文件可作为连续的数据流来传输,这使它对于网络电台或在线音乐很实用。
    MP3         .mp3
                .mpga   MP3 文件实际上是 MPEG 文件的声音部分。MPEG 格式最初是由运动图像专家组开发的。MP3 是其中最受欢迎的针对音乐的声音格式。
    
    插件(辅助应用程序)
        辅助应用程序也称为插件,可由浏览器启动,html5之前用于播放音频和视频,使用 <object> 或 <embed>  标签来加载的。
        插件有很多用途:播放音乐、显示地图、验证银行账号,控制输入
    

    音视频 属性,方法,事件

    方法    
    
    播放          
        play()    
    暂停       
        pause()       
    重新加载   
        load()      
    是否能播放
        isSupp=myVid.canPlayType('video/mp4;codecs=avc1.42E01E, mp4a.40.2'); 
    添加新的文本轨道
        text1=myVid.addTextTrack("caption");
        text1.addCue(new TextTrackCue("Test text", 01.000, 04.000,"","","",true));
    
    myVid=document.getElementById("video1");
    属性  
    
    获得可用音轨的 AudioTrackList 对象
        myVid.audioTracks
    获得可用视频轨道的 VideoTrackList 对象
        myVid.videoTracks
    获得可用文本轨道的 TextTrackList 对象
        myVid.textTracks
    设置是否自动播放(加载完页面后)
        myVid.autoplay=true;
    设置音量
        myVid.volume=0.2;
    设置视频源
        myVid.src="movie.ogg";
    获取当前视频源路径
        myVid.currentSrc
    ?
        myVid.startDate
    设置当前已播放时间(单位s)
        myVid.currentTime=5;
    获取时长
        myVid.duration
    设置是否循环播放
        myVid.loop=true;
    获取是否播放结束
        myVid.ended
    获取错误码
        myVid.error.code
    
    buffered     返回表示音频/视频已缓冲部分的 TimeRanges 对象
    controller     返回表示音频/视频当前媒体控制器的 MediaController 对象
    controls     设置或返回音频/视频是否显示控件(比如播放/暂停等)
    crossOrigin     设置或返回音频/视频的 CORS 设置
    defaultMuted     设置或返回音频/视频默认是否静音
    defaultPlaybackRate     设置或返回音频/视频的默认播放速度
    mediaGroup     设置或返回音频/视频所属的组合(用于连接多个音频/视频元素)
    muted     设置或返回音频/视频是否静音
    networkState     返回音频/视频的当前网络状态
    paused     设置或返回音频/视频是否暂停
    playbackRate     设置或返回音频/视频播放的速度
    played     返回表示音频/视频已播放部分的 TimeRanges 对象
    preload     设置或返回音频/视频是否应该在页面加载后进行加载
    readyState     返回音频/视频当前的就绪状态
    seekable     返回表示音频/视频可寻址部分的 TimeRanges 对象
    seeking     返回用户是否正在音频/视频中进行查找
    
    事件
    abort     当音频/视频的加载已放弃时
    canplay     当浏览器可以播放音频/视频时
    canplaythrough     当浏览器可在不因缓冲而停顿的情况下进行播放时
    durationchange     当音频/视频的时长已更改时
    emptied     当目前的播放列表为空时
    ended     当目前的播放列表已结束时
    error     当在音频/视频加载期间发生错误时
    loadeddata     当浏览器已加载音频/视频的当前帧时
    loadedmetadata     当浏览器已加载音频/视频的元数据时
    loadstart     当浏览器开始查找音频/视频时
    pause     当音频/视频已暂停时
    play     当音频/视频已开始或不再暂停时
    playing     当音频/视频在已因缓冲而暂停或停止后已就绪时
    progress     当浏览器正在下载音频/视频时
    ratechange     当音频/视频的播放速度已更改时
    seeked     当用户已移动/跳跃到音频/视频中的新位置时
    seeking     当用户开始移动/跳跃到音频/视频中的新位置时
    stalled     当浏览器尝试获取媒体数据,但数据不可用时
    suspend     当浏览器刻意不获取媒体数据时
    timeupdate     当目前的播放位置已更改时
    volumechange     当音量已更改时
    waiting     当视频由于需要缓冲下一帧而停止
    

    视频

        当视频被包含在网页中时,它被称为内联视频。
        当前大多数视频是通过插件来播放视频,并非所有浏览器都拥有同样的插件。
    
    1.
    <embed src="movie.swf" height="200" width="200"/>
    问题:
        如果浏览器不支持 Flash,视频将无法播放。
        iPad 和 iPhone 不能显示 Flash 视频。
        如果将视频转换为其他格式,那么它仍然不能在所有浏览器中播放
        HTML4 不识别 <embed> 标签(页面无法通过验证)。
    
    2.
    <object data="movie.swf" height="200" width="200"/>
    问题:
        如果浏览器不支持 Flash,视频将无法播放。
        iPad 和 iPhone 不能显示 Flash 视频。
        如果将视频转换为其他格式,那么它仍然不能在所有浏览器中播放。
    
    3.html5 (依次识别到成功截止或显示不支持)
    <video width="320" height="240" controls="controls">
      <source src="movie.mp4" type="video/mp4" />
      <source src="movie.ogg" type="video/ogg" />
      <source src="movie.webm" type="video/webm" />
    不支持时显示:Your browser does not support the video tag.
    </video>
    问题:
        必须把视频转换为很多不同的格式。
        <video> 元素在老式浏览器中无效。
        <video> 元素无法通过 HTML 4 和 XHTML 验证。使用 <!DOCTYPE html> (HTML5) 解决验证问题
    
    
    最终解决(3者结合)
    <video width="320" height="240" controls="controls" autoplay="autoplay" loop="loop" preload="auto">
      <source src="movie.mp4" type="video/mp4" />
      <source src="movie.ogg" type="video/ogg" />
      <source src="movie.webm" type="video/webm" />
      <object data="movie.mp4" width="320" height="240">
      <embed src="movie.swf" width="320" height="240" />
      </object>
    </video>
    
    
    优酷解决方案(上传视频至优酷)
    <embed src="http://player.youku.com/player.php/sid/XMzI2NTc4NTMy/v.swf" 
    width="480" height="400" 
    type="application/x-shockwave-flash">
    </embed>
    
    Video
    Ogg    = 带有 Theora 视频编码和 Vorbis 音频编码的 Ogg 文件
    MPEG4  = 带有 H.264 视频编码和 AAC 音频编码的 MPEG 4 文件
    WebM   = 带有 VP8 视频编码和 Vorbis 音频编码的 WebM 文件
    
    
    <script type="text/javascript">
    var myVideo=document.getElementById("video1");
    function playPause(){ 
    myVideo.width=560; 
    if (myVideo.paused){ 
      myVideo.play(); 
    }else{ 
      myVideo.pause(); 
    } 
    </script> 
    
    

    音频

        音频作为网页的组成部分时,被称为内联声音。
        同视频一样,当前大多数音频是通过插件来播放视频,并非所有浏览器都拥有同样的插件。
    
    1.
    <embed height="100" width="100" src="song.mp3" />
    问题:
        <embed> 标签在 HTML 4 中是无效的。页面无法通过 HTML 4 验证。
        不同的浏览器对音频格式的支持也不同。
        如果浏览器不支持该文件格式,未安装插件,则无法播放音频。
        如果把该文件转换为其他格式,仍然无法在所有浏览器中播放。
    
    2.
    <object height="100" width="100" data="song.mp3"></object>
    问题:
        不同的浏览器对音频格式的支持也不同。
        如果浏览器不支持该文件格式,未安装插件,则无法播放音频。
        如果把该文件转换为其他格式,仍然无法在所有浏览器中播放。
    
    3.html5
    <audio controls="controls">
      <source src="song.mp3" type="audio/mp3" />
      <source src="song.ogg" type="audio/ogg" />
    Your browser does not support this audio format.
    </audio>
    问题:
        <audio> 标签在 HTML 4 中是无效的。您的页面无法通过 HTML 4 验证。
        必须把音频文件转换为不同的格式。
        <audio> 元素在老式浏览器中不起作用。
    
    
    最终解决:
    <audio controls="controls" height="100" width="100" autoplay="autoplay" loop="loop" preload="auto">
      <source src="song.mp3" type="audio/mp3" />
      <source src="song.ogg" type="audio/ogg" />
    <embed height="100" width="100" src="song.mp3" />
    </audio>
        必须把音频转换为不同的格式
    
    
    雅虎媒体播放解决
    <a href="/i/song.mp3">播放 mp3</a>
    <a href="/i/bird.wav">播放 wav</a>
    <script type="text/javascript" src="http://mediaplayer.yahoo.com/js"></script>
    

    Windows Media Player 来播放 WMV 影片

    <object width="100%" height="100%"
    type="video/x-ms-asf" url="3d.wmv" data="3d.wmv"
    classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">
    <param name="url" value="3d.wmv">
    <param name="filename" value="3d.wmv">
    <param name="autostart" value="1">
    <param name="uiMode" value="full" />
    <param name="autosize" value="1">
    <param name="playcount" value="1">
    <embed type="application/x-mplayer2" src="3d.wmv" width="100%"
     height="100%" autostart="true" showcontrols="true" 
    pluginspage="http://www.microsoft.com/Windows/MediaPlayer/"></embed>
    </object>
    

    使用 Flash 来播放 SWF 视频

    <object width="400" height="40"
    classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
    codebase="http://fpdownload.macromedia.com/
    pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0">
    <param name="SRC" value="bookmark.swf">
    <embed src="bookmark.swf" width="400" height="40"></embed>
    </object>
    

    使用 QuickTime 来播放 MP4 视频

    <object width="420" height="360"
    classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"
    codebase="http://www.apple.com/qtactivex/qtplugin.cab">
    <param name="src" value="movie.mp4" />
    <param name="controller" value="true" />
    </object>
    

    使用 QuickTime 来播放 Wave 音频

    <object width="420" height="360"
    classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"
    codebase="http://www.apple.com/qtactivex/qtplugin.cab">
    <param name="src" value="bird.wav" />
    <param name="controller" value="true" />
    </object>
    
    1. 绘制图形
    Canvas
    SVG
    

    2.1. canvas画布(绘画)

    使用javascript绘制 2D 图形,仅作为容器(本身不具备绘制能力)
    
        依赖分辨率
        不支持事件处理器
        弱的文本渲染能力
        能够以 .png 或 .jpg 格式保存结果图像
        适合图像密集型游戏(其中的许多对象会被频繁重绘)
    
    <canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;" onmousemove="cnvs_getCoordinates(event)" onmouseout="cnvs_clearCoordinates()">
    Your browser does not support the canvas element.
    </canvas>
    <div id="xycoordinates"></div>
    
    <script type="text/javascript">
    
    1. 获取上下文
    获取画布控件
    var c=document.getElementById("myCanvas");
    获取上下文(用于绘制)
    var cxt=c.getContext("2d");
    
    1. 配置画笔
    设置填充色
    cxt.fillStyle="#FF0000";
    设置边框色
    ctx.strokeStyle="#0000ff";
    
    设置线结束端点样式
    ctx.lineCap="round";
    设置线交汇点样式
    ctx.lineJoin="round";
    设置线宽
    ctx.lineWidth=10;
    设置最大斜接长度
    ctx.miterLimit=5;
    
    设置阴影色
    ctx.shadowColor="black";
    设置阴影模糊级别
    ctx.shadowBlur=20;
    设置阴影偏移(向右20)
    ctx.shadowOffsetX=20;
    设置阴影偏移(向下20)
    ctx.shadowOffsetY=20;
    
    透明度
    ctx.globalAlpha=0.2;
    
    重叠区域
    后者在上
    ctx.globalCompositeOperation="source-over";
    后者在下
    ctx.globalCompositeOperation="destination-over";
    
    1. 绘制
    填充
    ctx.fill();
    描边
    ctx.stroke();
    
    剪切矩形(仅剪切区域有效)
    ctx.rect(50,20,200,120);
    ctx.stroke();
    ctx.clip();
    
    重新开始一条路径
    ctx.beginPath();
    设置起始点
    ctx.moveTo(0,0);
    画线至新点
    ctx.lineTo(300,150);
    闭合路径(连接起始点和终止点)
    ctx.closePath();
    
    
    点是否在当前路径上
    if (ctx.isPointInPath(20,50)){
    };
    
    形变当前绘图(x缩放,x倾斜,y倾斜,y缩放,x移动,y移动)
    ctx.transform(1,0.5,-0.5,1,30,10);
    形变绘图(之前的形变不再显示)
    ctx.setTransform(1,0.5,-0.5,1,30,10);
    
    缩放当前绘图(绘制区域放大)
    ctx.scale(2,2);
    旋转当前绘图
    ctx.rotate(20*Math.PI/180);
    移动当前绘图
    ctx.translate(70,70);
    
    重复绘制元素
    var img=document.getElementById("lamp");
    var pat=ctx.createPattern(img,"repeat");
    ctx.rect(0,0,150,100);
    ctx.fillStyle=pat;
    ctx.fill();
    
    绘制放射性渐变
    var grd=ctx.createRadialGradient(75,50,5,90,60,100);
    grd.addColorStop(0,"red");
    grd.addColorStop(1,"white");
    ctx.fillStyle=grd;
    ctx.fillRect(10,10,150,100);
    
    绘制矩形(画布左上角为坐标原点)
    cxt.fillRect(0,0,150,75);
    描边矩形
    ctx.strokeRect(20,20,150,100);
    
    或
    
    创建矩形
    ctx.rect(20,20,150,100);
    描边
    ctx.stroke();
    填充
    ctx.fill();
    
    清空矩形区域
    ctx.clearRect(20,20,100,50);
    
    画线
    设置开始点
    cxt.moveTo(10,10);
    cxt.lineTo(150,50);
    cxt.lineTo(10,50);
    绘制边框
    cxt.stroke();
    
    绘制二次贝塞尔曲线
    ctx.beginPath();
    ctx.moveTo(20,20);
    ctx.quadraticCurveTo(20,100,200,20);
    ctx.stroke();
    
    绘制三次贝塞尔曲线
    ctx.beginPath();
    ctx.moveTo(20,20);
    ctx.bezierCurveTo(20,100,200,100,200,20);
    ctx.stroke();
    
    画圆
    cxt.beginPath();
    cxt.arc(70,18,15,0,Math.PI*2,true);
    cxt.closePath();
    填充
    cxt.fill();
    
    画弧
    ctx.beginPath();
    ctx.moveTo(20,20);           // 创建开始点
    ctx.lineTo(100,20);          // 创建水平线
    ctx.arcTo(150,20,150,70,50); // 创建弧
    ctx.lineTo(150,120);         // 创建垂直线
    ctx.stroke();      
    
    渐进色
    var grd=cxt.createLinearGradient(0,0,175,50);  渐变区域
    grd.addColorStop(0,"#FF0000");
    grd.addColorStop(1,"#00FF00");
    cxt.fillStyle=grd;
    cxt.fillRect(0,0,175,50);(大于渐变区域则纯色)
    
    图片
    var img=new Image()
    img.src="flower.png"
    cxt.drawImage(img,0,0);
    
    绘制文本
    
    设置上下对齐方式
    ctx.textBaseline="top";
    设置左右对齐方式
    ctx.textAlign="end";
    设置字体
    ctx.font="40px Arial";
    
    填充文本
    ctx.fillText("Hello World",10,50);
    描边文本
    ctx.strokeText("w3school.com.cn",10,90);
    
    获取指定文本宽
    ctx.measureText(txt)
    
    绘制像素
    数据源
    var imgData=ctx.createImageData(100,100);
    for (var i=0;i<imgData.data.length;i+=4){
      imgData.data[i+0]=255;  红
      imgData.data[i+1]=0;    绿
      imgData.data[i+2]=0;   蓝
      imgData.data[i+3]=255;  Alpha
    }
    绘制
    ctx.putImageData(imgData,10,10);
    
    
    获取指定区域像素
    var imgData=ctx.getImageData(10,10,50,50);
    ctx.putImageData(imgData,10,10);
    
    获取宽,高,数据
    imgData.width
    imgData.height
    imgData.data
    
    其他方法
    save()          保存当前环境的状态
    restore()       返回之前保存过的路径状态和属性
    createEvent()
    getContext()
    toDataURL()
    
    function cnvs_getCoordinates(e){
    获取坐标
    x=e.clientX;
    y=e.clientY;
    document.getElementById("xycoordinates").innerHTML="Coordinates: (" + x + "," + y + ")";
    }
     
    function cnvs_clearCoordinates(){
    document.getElementById("xycoordinates").innerHTML="";
    }
    </script>
    

    2.2 SVG(Scalable Vector Graphics)

        使用 XML 格式定义2D图形(可通过文本编辑器来创建和修改,可被搜索、索引、脚本化或压缩)
        可伸缩矢量图形(尺寸改变不失真)
        用于显示网络图片
        是万维网联盟的标准。
    
        不依赖分辨率
        支持事件处理器
        适合带有大型渲染区域的应用程序(比如谷歌地图)
        复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快)
        不适合游戏
    支持:
        Internet Explorer 9、Firefox、Opera、Chrome 以及 Safari 
    
    <svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="190">
      <polygon points="100,10 40,180 190,60 10,60 160,180"
      style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;" />
    </svg>
    
    1. 拖放
        拖放是 HTML5 标准的组成部分:任何元素都是可拖放的。
        支持多数浏览器
    
    <!DOCTYPE HTML>
    <html>
    <head>
    <style type="text/css">
    #div1 {width:198px; height:66px;padding:10px;border:1px solid #aaaaaa;}
    </style>
    <script type="text/javascript">
    function allowDrop(ev){
    允许拖放到本控件(默认不允许)
    ev.preventDefault();
    }
    
    
    function drag(ev){
    设置数据源
    ev.dataTransfer.setData("Text",ev.target.id);
    }
    拖放控件置此控件后调用
    function drop(ev){
    ev.preventDefault();
    var data=ev.dataTransfer.getData("Text");
    ev.target.appendChild(document.getElementById(data));
    }
    </script>
    </head>
    <body>
    
    <p>请把 W3School 的图片拖放到矩形中:</p>
    拖放控件置此控件后,允许可拖放置此控件
    <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
    <br />
    设置图片可拖拽,规定拖动数据源
    <img id="drag1" src="/i/eg_dragdrop_w3school.gif" draggable="true" ondragstart="drag(event)" />
    
    </body>
    </html>
    
    1. 地理定位
    1. 本地存储
        在 HTML5 之前,应用程序数据只能存储在 cookie 中,包括每个服务器请求。本地存储则更安全,并且可在不影响网站性能的前提下将大量数据存储于本地。与 cookie 不同,存储限制要大得多(至少5MB),并且信息不会被传输到服务器
        支持多数浏览器
    
        HTML本地存储提供了2个在客户端存储数据的对象:
            window.localStorage
                 - 存储没有截止日期的数据(当浏览器被关闭时数据不会被删除)
            window.sessionStorage 
                 - 针对一个 session 来存储数据(当浏览器被关闭时数据会被删除)
    
    <div id="result"></div>
    
    <script>
    // 检测浏览器是否支持
    if (typeof(Storage) !== "undefined") {
    
    localStorage
    // 存储数据
        localStorage.setItem("lastname", "Gates");
        // 或
        localStorage.lastname = "Gates";
    
    // 获取数据
        document.getElementById("result").innerHTML = localStorage.getItem("lastname");
        // 或
        document.getElementById("result").innerHTML = localStorage.lastname;
    
    // 删除数据
        localStorage.removeItem("lastname");
    
    
    
    sessionStorage
    // 存储数据
        sessionStorage.clickcount = Number(sessionStorage.clickcount);
    // 获取数据
        document.getElementById("result").innerHTML =  sessionStorage.clickcount;
    } else {
        document.getElementById("result").innerHTML = "抱歉!您的浏览器不支持 Web Storage ...";
    }
    </script>
    
    1. 缓存 (HTML Cache Manifest)
    应用程序缓存为应用带来3优势:
        离线浏览 
        速度 (已缓存可以提高加载速度)
        减少服务器负载 
    
    支持多数浏览器(除了IE)
    
    <!DOCTYPE html>
    启用应用程序缓存
    <html manifest="/example/html5/demo_html.appcache">
    <body>
    <script type="text/javascript" src="/example/html5/demo_time.js">
    </script>
    <p id="timePara"><button onclick="getDateTime()">获得日期和事件</button></p>
    <p><img src="/i/w3school_banner.gif" /></p>
    <p>请打开<a href="/example/html5/html5_html_manifest.html" target="_blank">这个页面</a>,然后脱机浏览,重新加载页面。页面中的脚本和图像依然可用。</p>
    </body>
    </html>
    
        manifest 文件的建议文件扩展名是:".appcache"
        必须在 web 服务器上进行配置MIME-type:text/cache-manifest
        一旦应用被缓存,它就会保持缓存直到发生下列情况:
            用户清空浏览器缓存
            manifest 文件被修改(修改注释)
            由程序来更新应用缓存
    
        manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容)。manifest 文件有三个部分:
            CACHE MANIFEST - 下列出的文件将在首次下载后进行缓存
            NETWORK - 下列出的文件永远需要连接服务器且不会被缓存
            FALLBACK - 下列出的文件规定当页面无法访问时的回退页面(比如 404 页面)
    

    demo_html.appcache

    CACHE MANIFEST
    # 2012-02-21 v1.0.0
    /theme.css
    /logo.gif
    /main.js
    
    NETWORK:
    login.asp
    *:所有
    
    FALLBACK:
    /html/ /offline.html   无法访问时进入/offline.html
    
    1. Web Worker
        当在 HTML 页面中执行脚本时,页面是不可响应(交互)的,直到脚本已完成
        Web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能(可以交互)
    
    支持多数浏览器
    
    无法访问以下(处于外部)
        window 对象
        document 对象
        parent 对象
    
    <script>
    var w;
    
    function startWorker(){
    if(typeof(Worker)!=="undefined"){
      if(typeof(w)=="undefined"){
    创建Web worker 
      w=new Worker("/example/html5/demo_workers.js");
      }
    接收消息时调用
      w.onmessage = function (event) {
        document.getElementById("result").innerHTML=event.data;
        };
      }
    else{
      document.getElementById("result").innerHTML="Sorry, your browser does not support Web Workers...";
      }
    }
    
    function stopWorker(){ 
    终止Web worker 
    w.terminate();
    }
    </script>
    
    demo_workers.js
    
    var i = 0;
    function timedCount() {
        i = i + 1;
        postMessage(i);
        setTimeout("timedCount()",500);
    }
    timedCount();
    
    1. Server-Sent 事件
        网页自动从服务器获得更新(不用主动请求)
        支持:谷歌,火狐,Safari
        不支持:IE
    
    <div id="result"></div>
    <script>
    if(typeof(EventSource)!=="undefined"){
      var source=new EventSource("/example/html5/demo_sse.php");
      source.onmessage=function(event){
        document.getElementById("result").innerHTML+=event.data + "<br />";
        };
      }
    else{
      document.getElementById("result").innerHTML="抱歉,您的浏览器不支持 server-sent 事件 ...";
      }
    </script>
    
    其他事件
    onopen      当通往服务器的连接被打开
    onmessage   当接收到消息
    onerror     当发生错误
    
    PHP 中的代码 (demo_sse.php):
    <?php
    header('Content-Type: text/event-stream');
    header('Cache-Control: no-cache');
    $time = date('r');
    echo "data: The server time is: {$time}\n\n";
    flush();
    ?>
    
    
    ASP 中的代码 (VB) (demo_sse.asp):
    <%
    Response.ContentType = "text/event-stream"
    Response.Expires = -1  部缓存
    Response.Write("data: The server time is: " & now()) 写入数据
    Response.Flush() 刷新网页
    %>
    
    4. 参考手册

    W3C HTML参考手册
    转义参考手册
    符号参考手册
    URL编码参考手册
    语言参考手册
    HTTP 状态参考手册
    标签是否有效参考手册

    相关文章

      网友评论

        本文标题:HTML快速恢复 之 HTML基础

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