H5新特性与用法大全

所有主流浏览器都支持H5,IE9以上有选择的支持,IE8 完全不支持
解决办法:
1、创建元素-》转换元素
2、引入第三方插件 html5shiv.min.js

1、语义化标签

header nav footer mian article aside

2、input 新增属性与表单新增元素

 1)新的input type    h4和h5对比!  

            H4中input type :text /password /radio /checkbox/ sybmit/ reset / file /hidden / image/  

             H5中的input type :email/url/number/tel/search /range /color/month/week /date

 2)新的表单元素

            H4中表单元素 :input/textarea/select,option/label  

             H5中新增的表单元素:datalist /progress/meter/output
3)h5中 新增的表单元素 -- datalist 建议列表
<input type="" list="subject">
<datalist id="subject">
	<option value="">
	<option value="">
	<option value="">
<datalist>
4) h5中 新增的表单元素 -- progress 进度条
有两种形式:bootstrap里面有progress插件样式
  <form>
  	网络连接中<progress></progress><br>
  	下载进度<progress id="p3" value="0"></progress>
  	<input type="number" value="1">
  <form>
  <script type="text/javascript">
/*settimeout和setInterval区别在于settimeout执行一次,setInterval每隔一段时间执行一次*/
var t=setInterval(function(){
   var v = p3.value;
   v += 0.1;
   p3.value = v;
   if(v>=1){
    clearInterval(t);
    alert("下载完成");
     }
},500);
 5)  h5中 新增的表单元素 -- meter
机油含量:<meter id="m1" min="0" max="100" low="30" high="70" optimum="40" value="50"></meter>
PM值:<meter id="m2" min="0" max="500" low="100" high="300" optimum="150" value="750"></meter>
meter:度量衡/刻度尺/,用于标示一个所处的范围:不可接受(红色)/可以接受(黄色)/非常优秀(绿色)
<meter min="可取的最小值" max="可取的最大值" low="合理的下限值" high="合理的上限值" optimum="最佳值" value="当前值" ></meter>

3、音频audio和视屏video

一、flash被H5取代体现在哪些方面

flash 绘图(AS/FLEX) =>Canvas/SVG
flash 动画 => 定时器+Canvas
视频和音频播放 => VIDEO/AUDIO
flash 客户端存储 => WebStorage

它本身是一个300*150的行内块元素
备注:写多行source是为了兼容各个浏览器。因为浏览器对视频格式支持不统一,有些浏览器例如有些浏览器支持mp4格式,那么它就播放第一个mp4格式的视频,如果它不支持就检查是不是支持下面的ogg视频,如果支持就播放,不支持的话继续向下,下面没有source了,那么就显示“您的浏览器不支持VIDEO播放!”。

<video id="v2" src="" autoplay controls loop muted poster="2.jpg" preload="auto"></video>

autoplay:false, 是否自动播放 默认false
controls:false,是否显示播放控件,默认为false
loop:false ,是否循环播放,默认为false
muted:false,是否静音播放,默认为false
poster:’’,在播放第一帧之前显示的海报,可以是图片。默认为空没有
preload:视频预加载策略,可取值: auto:预加载视频的元数据以及缓冲一定时长,绝对不可以在手机端使用 (尺寸/时长。第一帧内容,缓冲时长)(预加载浪费流量)
metadata:仅预加载视频的元数据(尺寸/时长,第一帧内容,)没有缓冲时长,适合手机 none:不预加载任何数据
currentTime:当前播放的时长
duration:总时长
paused:true,当前视频是否处于暂停状态 true是暂停,false是播放
volume:1 默认值是1,当前音量
playbackRate:1 ,回放速率 大于1表快放,小于1表慢放
play():播放视频
pause ():暂停播放
成员事件: onplay:当视频开始播放时触发的事件
onpause:当视频暂停时触发的事件
音频播放器和视屏一样,没有海报属性

4、canvas画布

1、创建画布

<canvas width="500" height="400">您的浏览器不支持canvas</canvas>

var ctx = canvas.getContext('2d') //现在只有2d的 得到画布上的画布对象

ctx.beginPath() //开始一条新路径
ctx.closePath() //闭合当前路径
ctx.moveTo(x,y) //移动到指定点
ctx.lineTo(x,y) //从当前点到指定点画直线
ctx.arc(cx,cy,r,start,end) ; //绘制圆拱路径 
//cx cy 是圆心坐标xy r是半径 ,start 开始角度,end结束角度

5、svg绘图

一、SVG绘图 使用标签进行绘图,可以直接绑定事件监听

<svg width="300" height="200" xmlns="http://www.w3.org/2000/svg">
   <rect width="100" height="100"></rect>
</svg>

二、如何js创建一个svg标签!

/var r1 = document.createElement('rect'); 创建不了这个svg元素 因为有年限和命名空间  (就是说这样不行 要用下面的方法创建!!!!)
var r1= document.createElementNS('http://www.w3.org/2000/svg','rect');
r1.setAttribute('width','50');
r1.setAttribute('height',300);
s1.appendChild(r1);

6、地理位置

Geolocation:地理定位,使用JS获取当前浏览器所在的地理坐标(经度,维度,海拔,速度) 数据,用于实现LBS应用(Location Based Service),如饿了么,高德导航…

手机浏览器如何获得定位信息:

1)首选手机中的GPS芯片与卫星通信,定位精度在米
2)次选手机基站进行定位获取,定位精度在公里 (违法的)
PC浏览器如何获得定位信息:
1)通过IP地址进行反向解析,定位精度取决于IP地址库的大小

HTML5中提供了一个新的对象,用于获取当前浏览器的定位信息:
    window.navigator.geolocation{
      getCurrentPosition:fn, //获得当前定位信息
      watchPosition:fn, //监视定位数据的改变
      clearWatch :fn // 取消监视
    }

应用实例:

<!DOCTYPE html>
<html>
<title>HTML5调用百度地图API进行地理定位实例</title>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=134db1b9cf1f1f2b4427210932b34dcb"></script>
</head>
<body style="margin:50px 10px;">
<div id="status" style="text-align: center"></div>
<div style="width:600px;height:480px;border:1px solid gray;margin:30px auto" id="container"></div>
</body>
</html>

<script type="text/javascript">

    window.onload = function() {
        var x,y;
        if(navigator.geolocation) {
            document.getElementById("status").innerHTML = "HTML5 Geolocation is supported in your browser.";
            // 百度地图API功能
            var map = new BMap.Map("container");
            var point = new BMap.Point(x,y);
            map.centerAndZoom(point,12);
            var geolocation = new BMap.Geolocation();
            geolocation.getCurrentPosition(function(r){
                if(this.getStatus() == BMAP_STATUS_SUCCESS){
                    var mk = new BMap.Marker(r.point);
                    map.addOverlay(mk);
                    map.panTo(r.point);
                }
                else {
                    alert('failed'+this.getStatus());
                }
            },{enableHighAccuracy: true})
            return;
        }
    };
</script>

2、扩展:在网页中如何嵌入百度地图

1)注册百度开发者账号 map.baidu.com —> lbsyun.baidu.com
2)创建一个网站;登录百度地图,为网站申请一个地图的AccessKey
3)在自己的网页中嵌入百度地图提供的API,嵌入百度地图

这里不多讲这个如何嵌入了!(要记住用百度地图必须注册账号,然后引用人家的库就对了!)

7、拖放API

draggable=“true” ,图片和链接默认可以拖拽
重点:拖拽事件
被拖拽元素:ondrag/ondragstart/ondragleave/ondragend
目标元素:ondragenter/ondragover/ondrop/ondragleave
preventDefault()阻止默认事件

8、websocket

web socket 是一个可以在服务器与客户端之间建立一个非http的双向连接!

这个连接是实时的,也是永久的。

服务器可以主动推送消息。

服务器不在需要轮询客户端的请求,服务器与客户端之间通信无需重新建立连接。

也就是可持续性的 来回通讯。

var webSocket = new WebSocket (“ws://localhost:8005/socket”);
//url 必须以“ws” 或者“wss” 文字作为开头:因为不是http  是websocket吗,人家自己的标识,加密传送,记住就好了。
webSocket.send() //发送文本数据,只可以发送文本。(使用json对象把js对象转换文本数据后进行发送)
webSocket.close();//关闭切断通讯连接。
webSocket.onmessage= function(event){
  var data=event.data;
}  // 接收服务器传来的消息
webSocket.onopen =function(event){
  //开始通讯时的处理
}
webSocket.onclose =function(event){
  //通讯结束时的处理
}

9、储存

Cookie存储在用户本地终端上的数据。cookie数据始终在同源的http请求中携带,即cookie在浏览器和服务器间来回传递。这使得 cookie 速度很慢而且效率也不高。

//创建
function setCookie(key, value, iDay) {
	var oDate = new Date();
	oDate.setDate(oDate.getDate() + iDay);
	document.cookie = key + '=' + value + ';expires=' + oDate;
}
//删除
function removeCookie(key) {
	setCookie(key, '', -1);//这里只需要把Cookie保质期退回一天便可以删除
}
//获取
function getCookie(key) {
	var cookieArr = document.cookie.split('; ');
	for(var i = 0; i < cookieArr.length; i++) {
		var arr = cookieArr[i].split('=');
		if(arr[0] === key) {
			return arr[1];
		}
	}
	return false
}

HTML5 提供了两种在客户端存储数据的新方法:localStorage sessionStorage
两者都是仅在客户端(即浏览器)中保存,不参与和服务器的通信;
localStorage : 没有时间限制的数据存储,第二天、第二周或下一年之后,数据依然可用。
sessionStorage :针对一个 session 的数据存储,当用户关闭浏览器窗口后,数据会被删除。
localStorage 方法:
localStorage.clear(); //清空
localStorage.length; //数据数量
存储和修改数据:
localStorage.setItem(“name”,“str”);
name若存在即为修改,否则为添加
localStorage.name = “str”;
如果想存储对象类型的数据,需要先用JSON.stringify()将其转成字符串再存 储
读取数据:
localStorage.getItem(“name”);

cookie :一般由服务器生成,可设置失效时间。如果在浏览器端生成Cookie,默认是关闭浏览器后失效,储存4K左右
与服务器端通信: 每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题,使用时需要程序员自己封装,源生的Cookie接口不友好。
localStorage:除非被清除,否则永久保存 。
sessionStorage:仅在当前会话下有效,关闭页面或浏览器后被清除
相同点:
一般为5MB
仅在客户端(即浏览器)中保存,不参与和服务器的通信
源生接口可以接受,亦可再次封装来对Object和Array有更好的支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值