• HTML5使用详解


    1.什么是HTML5
    HTML5是新的HTML标准。
    支持最新的Safari,Chrome,Firefox以及Opera,Ie9支持某些HTML5特性。

    2.新建HTML5页面

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    </body>
    </html>
    

    2.视频(video)

    <video src="movie.ogg" controls="controls">
    </video>
    

    运行结果:

    属性详细,参见http://www.w3school.com.cn/html5/

    3.音频(audio)

    <audio controls="controls">
      <source src="song.ogg" type="audio/ogg">
      <source src="song.mp3" type="audio/mpeg">
    Your browser does not support the audio tag.
    </audio>
    

    运行结果:

    4.拖放(drag和drop)

    <!DOCTYPE HTML>
    <html lang="en-us">
    <head>
    <meta charset="utf-8">
    <style type="text/css">
    #div1 {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>请把下图拖放到矩形中:</p>
    
    <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
    <br />
    <img id="drag1" src="1.png" draggable="true" ondragstart="drag(event)" />
    
    </body>
    </html>
    

    运行结果:

    ev.preventDefault():允许默认设置,默认不允许元素放置drop。

    5.画布(Canvas)
    画布可以理解为一个坐标,通过js绘制各种图形

    <!DOCTYPE HTML>
    <html>
    <body>
    
    <canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;">
    Your browser does not support the canvas element.
    </canvas>
    
    <script type="text/javascript">
    
    var c=document.getElementById("myCanvas");
    var cxt=c.getContext("2d");
    cxt.moveTo(10,10);
    cxt.lineTo(150,50);
    cxt.lineTo(10,50);
    cxt.stroke();
    
    </script>
    
    </body>
    </html>
    

    运行结果:

    6.矢量图形(SVG)

    <!DOCTYPE html>
    <html>
    <body>
    
    <svg version="1.1" height="190">
       <polygon points="100,10 40,180 190,60 10,60 160,180"
       style="fill:red;stroke:blue;stroke-3;fill-rule:evenodd;" />
    </svg>
     
    </body>
    </html>
    

    运行结果:

    7.定位(Geolocation)

    <!DOCTYPE html>
    <html>
    <body>
    <p id="demo">点击这个按钮,获得您的坐标:</p>
    <button onclick="getLocation()">试一下</button>
    <script>
    var x=document.getElementById("demo");
    function getLocation()
      {
      if (navigator.geolocation)
        {
        navigator.geolocation.getCurrentPosition(showPosition);
        }
      else{x.innerHTML="Geolocation is not supported by this browser.";}
      }
    function showPosition(position)
      {
      x.innerHTML="Latitude: " + position.coords.latitude + 
      "<br />Longitude: " + position.coords.longitude;	
      }
    </script>
    </body>
    </html>
    

    navigator.geolocation:是否支持定位
    navigator.geolocation.getCurrentPosition:获取坐标

    8.web存储(localStorage,sessionStorage)
    cookie是随着服务器请求传递的,而localStorage只在请求使用时传递,不是每次都传递,更高效。

    <script type="text/javascript">
    localStorage.lastname="Smith";
    document.write(localStorage.lastname);
    </script>
    

    localStorage会永久保存,sessionStorage是针对一个session进行数据存储,关闭浏览器窗口,数据会被删除。

    9.应用缓存
    缓存在客户端,没有网络连接时进行访问。

    <!DOCTYPE HTML>
    <html manifest="demo.appcache">
    
    <body>
    The content of the document......
    </body>
    
    </html>
    

    manifest缓存配置文件
    分为三部分:
    1)CACHE MANIFEST
    要缓存的文件

    CACHE MANIFEST
    /theme.css
    /logo.gif
    /main.js
    

    2)NETWORK
    需要网络连接的文件

    NETWORK
    login.asp
    

    3)FALLBACK
    无网络连接时,替代文件

    FALLBACK:
    /html5/ /404.html
    

    完整的MANIFEST文件

    CACHE MANIFEST
    # 2012-02-21 v1.0.0
    /theme.css
    /logo.gif
    /main.js
    
    NETWORK:
    login.asp
    
    FALLBACK:
    /html5/ /404.html
    

    什么时候更新缓存?
    1)用户清空浏览器缓存
    2)manifest 文件被修改(参阅下面的提示)
    3)由程序来更新应用缓存

    10.后台任务(Worker)
    web Worker是运行在后台的JavaScript,独立于其他脚本,不会影响页面性能。
    自动计数代码示例如下:
    1)检查是否支持Worker

    if(typeof(Worker)!=="undefined")
      {
      // Yes! Web worker support!
      // Some code.....
      }
    else
      {
      // Sorry! No Web Worker support..
      }
    

    2)创建web worker文件demo_workers.js

    var i=0;
    
    function timedCount()
    {
    i=i+1;
    postMessage(i);
    setTimeout("timedCount()",500);
    }
    
    timedCount();
    

    postMessage():向HTML页面传回一段消息
    3)创建Worker对象

    if(typeof(w)=="undefined")
      {
      w=new Worker("demo_workers.js");
      }
    

    向 web worker 添加一个 "onmessage" 事件监听器:

    w.onmessage=function(event){
    document.getElementById("result").innerHTML=event.data;
    };
    

    4)终止Worker

    w.terminate();
    

    11.服务器发送时间(server-sent event)
    类似websocket长连接,以前的做法是不停的轮询,是否有更新。
    server-sent当服务器端内容更新时,客户端内容会自动获取更新。

    var source=new EventSource("demo_sse.php");
    source.onmessage=function(event)
      {
      document.getElementById("result").innerHTML+=event.data + "<br />";
      };
    

    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}
    
    ";
    flush();
    ?>
    

    12.html5新的输入类型
    email,url,number,range,Date pickers,search,color

    E-mail: <input type="email" name="user_email" />
    

    13.html5新的表单元素
    datalist,keygen,output

    Webpage: <input type="url" list="url_list" name="link" />
    <datalist id="url_list">
    <option label="W3School" value="http://www.W3School.com.cn" />
    <option label="Google" value="http://www.google.com" />
    <option label="Microsoft" value="http://www.microsoft.com" />
    </datalist>
    

    14.html5新的表单属性
    新的form属性:
    autocomplete,novalidate
    新的input属性:
    autocomplete;autofocus;form;form overrides;height 和 width,list;min, max 和 step;multiple;pattern;placeholder;required

  • 相关阅读:
    固定表格宽度被TABLE的95%给弄没效果了
    界面只有一个文本框时,回车就会产生页面提交事件
    控件开发读书笔记
    调整window.open窗口大小并且不闪烁
    对showModalDialog窗口的大小调整
    borderwidth的没效果的原因
    “解决方案资源管理器”中不能自动选择正在编辑的文档
    HTML编辑器中不要跳来跳去
    华硕本本Fn+F2不能打开无线
    VS2008打上SP1后,修正javascript智能提示的两个问题
  • 原文地址:https://www.cnblogs.com/shijingjing07/p/7672715.html
Copyright © 2020-2023  润新知