• HTML5


    • 新增功能

    1. HTML5新标准中直接添加了拥有具体含义的HTML标签比如:<article><footer><header><nav><section>、<video><progress>(进度条)、<meter>(容量占用条)、<time>(不显示效果)<aside>(文章侧栏)<canvas>

        同时取消了一些标签,如<acronym>, <applet>, <basefont>, <big>, <center>, <dir>, <font>, <frame>, <frameset>, <isindex>, <noframes>, <strike>,<tt>

    2. HTML5的标准中直接添加了智能表单,让这一切都变得那么的简单,比如 calendardatetimeemailurlsearch

    3. 在HTML5标准中原生的就支持音频、视频、画布等技术。让WEB程序更加独立,更好的适应多种形式的客户端。

    4. HTML5 提供了两种在客户端存储数据的新方法

    5. HTML5 的canvas元素使用 JavaScript 在网页上绘制图像。并拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。

    6. 在不影响UI update及浏览器与用户交互的情况下, 前端做大规模运算,只能通过 setTimeout 之类的去模拟多线程 。而新的标准中,JS新增的HTML5 Web Worker对象原生的就支持多线程。

    7. WebSockets是在一个(TCP)接口进行双向通信的技术,PUSH技术类型。WebSocket是html5规范新引入的功能,用于解决浏览器与后台服务器双向通讯的问题,使用WebSocket技术,后台可以随时向前端推送消息,以保证前后台状态统一,在传统的无状态HTTP协议中,这是“无法做到”的。

    8. HTML5(text/html)浏览器将在错误语法的处理上更加灵活。HTML5在设计时保证旧的浏览器能够安全地忽略掉新的HTML5代码。与HTML4.01相比,HTML5给出了解析的完整规则,让不同的浏览器即使在发生语法错误时也能返回完全相同的结果。

    9. 由于项目中经常遇到用Web应用中控制操作本地文件,而之前都是使用一些富客户端技术比如flashActiveXSilverlight等技术。在HTML5的新的提供的 HTML5 File API 让JS可以轻松上阵了。

    10. HTML5仅有一种类型,<!DOCTYPE html>


    • 页面布局变化

       HTML5: 

    代码如下:

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <title>my page</title>
     5     </head>
     6     <body>
     7         <header>header</header>
     8         <nav>nav</nav>
     9         <article>
    10             <section>section</section>
    11         </article>
    12         <aside>aside</aside>
    13         <footer>footer</footer>
    14     </body>
    15 </html>

    • 标签具体解释

    <section>定义文档中的节。它用来表现普通的文档内容或应用区块,但section元素标签并非一个普通的容器元素,它表示一段专题性的内容,一般会带有标题。

    <article>特殊的section标签,它比section具有更明确的语义,它代表一个独立的、完整的相关内容块。当我们描述一件具体的事物的时候,通常鼓励使用article来代替sectionarticle会有标题部分(通常包含在header内),也可以包含footerarticle可以嵌套,内层的article对外层的article标签有隶属关系。

    <nav>可以作为页面导航的链接组,其中的导航元素链接到其它页面或者当前页面的其它部分,使html代码在语义化方面更加精确,同时对于屏幕阅读器等设备的支持也更好。

    <aside>标签用来装载非正文的内容,被视为页面里面一个单独的部分。它包含的内容与页面的主要内容是分开的,可以被删除,而不会影响到网页的内容、章节或是页面所要传达的信息。例如广告,成组的链接,侧边栏等等。

    <header>标签定义文档的页眉,通常是一些引导和导航信息。它不局限于写在网页头部,也可以写在网页内容里面。通常header标签至少包含一个标题标记(h1-h6),还可以包括hgroup标签,还可以包括表格内容、标识、搜索表单、nav导航等。

    <footer>标签定义sectiondocument的页脚,包含了与页面、文章或是部分内容有关的信息,比如说文章的作者或者日期。 它和header标签使用基本一样,可以在一个页面中多次使用,如果在一个区段的后面加入footer,那么它就相当于该区段的页脚了。

    <hgroup>标签是对网页或区段section的标题元素(h1-h6)进行组合。例如,在一区段中你有连续的h系列的标签元素,则可以用hgroup将他们括起来。

    <figure>用于对元素进行组合。多用于图片与图片描述组合。


    • <input>新增类型

    1. number类型

    1 <input type="number" name="demoNumber" min="1" max="100" step="1"/>

    控制输入数据的范围。name: 标识表单提交时的key值,min: 标识当前输入框输入的最小值, max: 标识当前输入框输入的最大值,step: 标识点击增大/减小的时候,增加/减小的步长,value:规定默认值

    2. Email类型

    1 <input type="email" name="email" placeholder="请输入注册邮箱"/>

    系统自动检测是否为邮箱格式

    3. URL类型

    1 <input type="url" placeholder="请输入网址" name="url"/>

    系统自动检测是否为网址格式

    4. range类型

    1 <form oninput="output.value=parseInt(range.value)">
    2     <input type="range" min="0" max="100" step="5" name="range" value="0"/>
    3     <output name="output">0<output/>
    4 </form>

    range是滑动条效果,可以和<output>标签一起使用显示滑动条代表的数值(form标签加上oninput="output.value=parseInt(range.value)")

    5. 日期类型

    datetime类型谷歌浏览器不支持

    6. color类型

    1 <input type="color" name="colordemo"/>

    7. 表单自动提示

    1 <input type="text" autocomplete="on" name="demoAutoComplete" list="autoNames" />
    2 <datalist id="autoNames">
    3   <option  value="实验楼" ></option>
    4   <option  value="HTML5" ></option>
    5   <option  value="input标签" ></option>
    6 </datalist>

    • 表单新增属性

    1.input标签新增属性

    2.form新增属性


    • 文件操作API

    主要是FileList、Blob、File、FileReader几个JS对象:

    FileList:它是File对象的一个集合,在HTML4标准中文件上传控件只接受一个文件,而在新标准中,只需要设置multiple,就支持多文件上传,所以从此标签中获取的files属性就是FileList对象实例。

    Blob: 其实就是一个原始数据对象,它提供了slice方法可以读取原始数据中的某块数据。另外有两个属性:size(数据的大小),type(数据的MIME类型);

    File: 继承自Blob对象,指向一个具体的文件,它还有两个属性:name(文件名),lastModifiedDate(最后修改时间);

    FileReader: 设计用来读取文件里面的数据,提供三个常用的读取文件数据的方法,另外读取文件数据使用了异步的方式,非常高效。 

    实例1:获取上传文件的文件名(需要jQuery)

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4     <title></title>
     5     <script src="Scripts/jquery-1.5.1.js" type="text/javascript"></script>
     6     <script type="text/javascript">
     7         $(function () {
     8             $("#btnGetFile").click(function (e) {
     9                 var fileList = document.getElementById("fileDemo").files;
    10                 for (var i = 0; i < fileList.length; i++) {
    11                     if (!(/image/w+/.test(fileList[i].type))) {
    12                          $("#result").append("<span>type:"+fileList[i].type+"--******非图片类型*****--name:"+fileList[i].name+"--size:"+fileList[i].size+"</span><br />");
    13                     }
    14                     else {
    15                         $("#result").append("<span>type:"+fileList[i].type+"--name:"+fileList[i].name+"--size:"+fileList[i].size+"</span><br />");
    16                     }
    17                 }
    18             });
    19         });
    20     </script>
    21 </head>
    22 <body>
    23     <form action="/home/index" method="POST" novalidate="true">
    24         <input type="file" multiple="multiple" name="fileDemo" id="fileDemo" /><br/>
    25         <input type="button" value="获取文件的名字" id="btnGetFile"/>
    26         <div id="result"></div>
    27     </form>
    28     <hr/>
    29 </body>
    30 </html>

    实例二:读取上传文件内容,然后将文件内容直接读取到浏览器上(注:需要引入jQuery)

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4     <title></title>
     5     <script src="Scripts/jquery-1.5.1.js" type="text/javascript"></script>
     6     <script type="text/javascript">
     7         if(typeof FileReader == "undified") {
     8             alert("您老的浏览器不行了!");
     9         }
    10 
    11         function showDataByURL() {
    12             var resultFile = document.getElementById("fileDemo").files[0];
    13             if (resultFile) {
    14                 var reader = new FileReader();
    15                 reader.readAsDataURL(resultFile);
    16                 reader.onload = function (e) {
    17                     var urlData = this.result;
    18                     document.getElementById("result").innerHTML += "<img src='" + urlData + "' alt='" + resultFile.name + "' />";
    19                 }; 
    20             }
    21         } 
    22 
    23         function showDataByBinaryString() {
    24             var resultFile = document.getElementById("fileDemo").files[0];
    25             if (resultFile) {
    26                 var reader = new FileReader();
    27                 //异步方式,不会影响主线程
    28                 reader.readAsBinaryString(resultFile);
    29                 reader.onload = function(e) {
    30                     var urlData = this.result;
    31                     document.getElementById("result").innerHTML += urlData;
    32                 };
    33             }
    34         }
    35 
    36         function showDataByText() {
    37             var resultFile = document.getElementById("fileDemo").files[0];
    38             if (resultFile) {
    39                 var reader = new FileReader();
    40                 reader.readAsText(resultFile,'gb2312');
    41                 reader.onload = function (e) {
    42                     var urlData = this.result;
    43                     document.getElementById("result").innerHTML += urlData;
    44                 };
    45             }
    46         }
    47 
    48     </script>
    49 </head>
    50 <body>
    51     <input type="file" name="fileDemo" id="fileDemo" multep/>
    52     <input type="button" value="readAsDataURL" id="readAsDataURL" onclick="showDataByURL();"/>
    53     <input type="button" value="readAsBinaryString"  id="readAsBinaryString" onclick="showDataByBinaryString();"/>
    54     <input type="button" value="readAsText"  id="readAsText" onclick="showDataByText();"/>
    55     <div id="result">
    56     </div>
    57 </body>
    58 </html>

    • Canvas

    获取canvas元素 var canvasDom = document.getElementById("demoCanvas");

    获取上下文 var context = canvasDom.getContext('2d');

    画只有线条的矩形框:

    1 context.strokeStyle = "red";
    2 context.strokeRect(10, 10, 190, 100);

    画填充矩形:

    1 context.fillStyle = "blue";
    2 context.fillRect(110,110,100,100);

    画线条:

    1 context.beginPath(); // 开始路径绘制
    2 context.moveTo(20, 20); // 设置路径起点,坐标为(20,20)
    3 context.lineTo(200, 200); // 绘制一条到(200,20)的直线
    4 context.lineTo(400, 20);
    5 context.closePath();//自动绘制一条当前点到起点的直线,形成一个封闭图形,省却使用一次lineto方法
    6 context.lineWidth = 2.0; // 设置线宽
    7 context.strokeStyle = "#CC0000"; // 设置线的颜色 
    8 context.stroke(); // 进行线的着色,这时整条线才变得可见

    画文本:

    fillText(string, x, y)方法是用来绘制文本,它的三个参数分别为文本内容、起点的x坐标、y坐标。使用之前,需用font设置字体、大小、样式(写法类似与CSS的font属性)。与此类似的还有strokeText方法,用来添加空心字。另外注意一点:fillText方法不支持文本断行,即所有文本出现在一行内。所以,如果要生成多行文本,只有调用多次fillText方法。

    context.font = "Bold 50px Arial";// 设置字体
    context.textAlign = "left";// 设置对齐方式
    context.fillStyle = "#005600";// 设置填充颜色
    context.fillText("老马!", 10, 50);// 设置字体内容,以及在画布上的位置
    context.strokeText("blog.itjeek.com!", 10, 100);// 绘制空心字

    画圆:

    arc(x,y,radius,startAngle,endAngle,anticlockwise)方法的x和y参数是圆心坐标,radius是半径,startAngle和endAngle则是扇形的起始角度和终止角度(以弧度表示),anticlockwise表示做图时应该逆时针画(true)还是顺时针画(false)。

    1 context.beginPath();//开始绘制路径
    2 context.arc(60, 60, 50, 0, Math.PI * 2, true); //绘制以 (60,60)为圆心,50为半径长度,从0度到360度(PI是180度),最后一个参数代表顺时针旋转。
    3 context.lineWidth = 2.0;//线的宽度
    4 context.strokeStyle = "#000";//线的样式
    5 context.stroke();//绘制空心的,当然如果使用fill那就是填充了。

    将图片放上画布:

    1 var image = new Image();//创建一张图片
    2 image.src = "Images/a.png";//设置图片的路径
    3 context.drawImage(image, 100, 100);//将图片放上画布,设置坐标

    还有渐变、阴影等,待查。


    • 本地存储

    永久性的本地存储:localStorage:

    1 <script type="text/javascript">
    2     localStorage.setItem("demokey", "http://www.shiyanlou.com");//添加key-value 数据到 sessionStorage
    3     localStorage.getItem("demokey"); //通过key来获取value 
    4     removeItem("demokey")//通过key删除本地数据。 
    5     localStorage.clear();//清空所有的key-value数据。
    6 </script>

    会话级别的本地存储:sessionStorage(它跟浏览器当前会话相关,当会话结束后,数据会自动清除):

    1 <script type="text/javascript">
    2     sessionStorage.setItem("demokey", "http://blog.itjeek.com"); //添加key-value 数据到 sessionStorage
    3     sessionStorage.getItem("demokey"); //通过key来获取value
    4     removeItem(key)//通过key删除本地数据。
    5     sessionStorage.clear(); //清空所有的key-value数据。
    6 </script>

    • 数据库存储

    基本步骤为:

    openDatabase方法打开一个已经存在的数据库,如果数据库不存在,它还可以创建数据库。

    1 var dataBase = openDatabase("student", "1.0", "学生表", 1024 * 1024, function(){});

    几个参数意义分别是:

    transaction方法用于控制事务处理,执行提交操作或回滚操作。executeSql方法执行查询

    1 db.transaction(  function(tx) {           
    2       tx.executeSQL(sqlQuery,[value1,value2..],dataHandler,errorHandler)    
    3   });

    参数说明:

    实例:用“审查元素”的“resource”查看

     1 <!DOCTYPE HTML>
     2 <html>
     3 <meta charset="UTF-8">
     4 <head>
     5     <title></title>
     6     <script src="jquery-1.5.1.js" type="text/javascript"></script>
     7     <script type="text/javascript">
     8         $(function () {//页面加载完成后绑定页面按钮的点击事件
     9             initDatabase();
    10             $("#btnSave").click(function () {
    11                 var txtName = $("#txtName").val();
    12                 var txtTitle = $("#txtTitle").val();
    13                 var txtWords = $("#txtWords").val();
    14                 var db = getCurrentDb();
    15                 //执行sql脚本,插入数据
    16                 db.transaction(function (trans) {
    17                     trans.executeSql("insert into Demo(uName,title,words) values(?,?,?) ", [txtName, txtTitle, txtWords], function (ts, data){}, function (ts, message) {
    18                         alert(message);
    19                     });
    20                 });
    21                 //showAllTheData();
    22             });
    23         });
    24         
    25         //创建数据库
    26         function initDatabase() {
    27             var db = getCurrentDb();//初始化数据库
    28             if(!db) {alert("您的浏览器不支持HTML5本地数据库");return;}
    29             db.transaction(function (trans) {//启动一个事务,并设置回调函数
    30             //执行创建表的Sql脚本
    31                 trans.executeSql("create table if not exists Demo(uName text null,title text null,words text null)", [], function (trans, result) {
    32                 }, function (trans, message) {//消息的回调函数alert(message);});
    33                 });
    34             });
    35         }
    36         
    37         function getCurrentDb() {
    38             //打开数据库,或者直接连接数据库参数:数据库名称,版本,概述,大小
    39             //如果数据库不存在那么创建之
    40             var db = openDatabase("myDb", "1.0", "it's to save demo data!", 1024 * 1024); 
    41             return db;
    42         }
    43         
    44         //显示所有数据库中的数据到页面上去
    45         function showAllTheData() {
    46             $("#tblData").empty();
    47             var db = getCurrentDb();
    48             db.transaction(function (trans) {
    49                 trans.executeSql("select * from Demo ", [], function (ts, data) {
    50                     if (data) {
    51                         for (var i = 0; i < data.rows.length; i++) {
    52                             appendDataToTable(data.rows.item(i));//获取某行数据的json对象
    53                         }
    54                     }
    55                 }, function (ts, message) {alert(message);var tst = message;});
    56             });
    57         }
    58         
    59         //将数据展示到表格里面
    60         function appendDataToTable(data) {
    61             //uName,title,words
    62             var txtName = data.uName;
    63             var txtTitle = data.title;
    64             var words = data.words;
    65             var strHtml = "";
    66             strHtml += "<tr>";
    67             strHtml += "<td>"+txtName+"</td>";
    68             strHtml += "<td>" + txtTitle + "</td>";
    69             strHtml += "<td>" + words + "</td>";
    70             strHtml += "</tr>";
    71             $("#tblData").append(strHtml);
    72         }
    73     </script>
    74 </head>
    75 <body>
    76 <table>
    77             <tr>
    78                 <td>用户名:</td>
    79                 <td><input type="text" name="txtName" id="txtName" required/></td>
    80             </tr>
    81                <tr>
    82                 <td>标题:</td>
    83                 <td><input type="text" name="txtTitle" id="txtTitle" required/></td>
    84             </tr>
    85             <tr>
    86                 <td>留言:</td>
    87                 <td><input type="text" name="txtWords" id="txtWords" required/></td>
    88             </tr>
    89         </table>
    90         <input type="button" value="保存" id="btnSave"/>
    91         <hr/>
    92         <input type="button" value="展示所哟数据" onclick="showAllTheData();"/>
    93         <table id="tblData">
    94         </table>
    95 
    96 </body>
    97 </html>
  • 相关阅读:
    图的存储代码实现
    最小生成树算法
    图的遍历
    图的存储结构
    ftp服务器的配置
    利用c++利用odbc连接mysql数据库
    测试odbc连接sqlsever数据库是否成功的代码
    gk888t打印机安装
    Win10下windows mobile设备中心连接不上的方法无法启动
    js千分位加逗号和四舍五入保留两位小数
  • 原文地址:https://www.cnblogs.com/little-jelly/p/5371205.html
Copyright © 2020-2023  润新知