1.使用HTML5来DIY彩虹播放器
◆html5新增的语义化标签,多媒体盒子标签 figure,专门用来放视频标签、音频标签、图片标签等,
视频
◆
document.querySelector("button:nth-child(3)")
,是可以获取到元素的,html5新增的获取dom对象的api是支持css3新的选择器的。
◆这是css字图图标的一个库http://fontawesome.dashgame.com/,使用的时候只需要引用相应的文件,然后只有引用类即可,实现的原理是,内部给这个类添加了一个伪元素,所以只要添加这个类,就会产生一个伪元素,伪元素的content属性,赋值了字体图标的值,所以就会显示出一个图标来,注意看清楚css文件中是怎么写的,因为不同版本的css文件中代码有不同的地方,如3.2版本的都会自动给你设置字体,而4.7版本的需要你自己设置字体,或者多添加一个字体的类
使用font-awesome字体图标框架
★谷歌浏览器在设置video标签的currentTime属性时无效,并且会把currentTime属性赋值为0,但是火狐可以,所以自己制作视频控制条时还是会存在兼容性的问题
视频对象.play() //表示播放
视频对象.pause() //表示暂停
视频对象.οncanplay=function(){}//表示视频加载完毕可以播放的时候
视频对象.duration //表示获取视频的总时间长度,单位为秒
视频对象.οntimeupdate=function(){}//表示视频播放时,当前的播放时间变化的时候
视频对象.currentTime //表示获取视频当前已经播放的时间,其实也可以设置,但是谷歌浏览器中无法设置,设置后会被清零。
视频对象.webkitRequestFullScreen() //表示视频全屏
★彩虹播放器:这个播放器有一点点好看。
使用html5的video的API制作自定义播放器
自定义视频播放器
2.在HTML5中,任何元素都可以拖拽,但是默认可以拖拽的元素有图片和超链接,其它元素如果想实现拖拽,可以通过给元素设置
draggable="true"
,这样就开启了元素拖拽的功能
◆拖拽元素的事件监听◇
ondrag
应用于拖拽元素,整个拖拽过程都会一直在调用
◇
ondragstart
应用于拖拽元素,当拖拽开始时调用
◇
ondragleave
应用于拖拽元素,当鼠标离开了原来那个不会动元素的范围内时调用,但是鼠标还是按住了拖拽的那个元素,只不过是离开了那个元素原本位置的范围。
◇
ondragend
应用于拖拽元素,当拖拽结束时调用
◆拖拽到某个目标元素的监听事件◇
ondragenter
应用于目标元素,当拖拽元素进入时调用(也是针对鼠标,当鼠标按住拖拽的元素时,鼠标移入到目标元素的范围内,才会触发这个事件)
◇
ondragleave
应用于目标元素,当鼠标离开目标元素时调用(也是针对鼠标,当鼠标按住拖拽的元素时,鼠标移入到目标元素的范围内后,再移出目标元素范围内,才会触发这个事件)
◇
ondragover
应用于目标元素,当停留在目标元素上时调用(也是针对鼠标,当鼠标按住拖拽的元素时,鼠标移入到目标元素的范围内,只要在目标元素的范围内,就会连续触发这个事件),这个事件默认行为是不接受拖拽元素的,如果想让目标元素接受拖拽元素的话,需要在事件方法中的事件驱动里加一句
event.preventDefault
取消事件的默认行为,只有这样
ondrop
事件才会触发,当前目标元素接受拖拽元素。
◇
ondrop
应用于目标元素,当在目标元素上松开鼠标时调用
★使用html5的拖拽来DIY效果:拖拽彩虹球
使用html5的拖拽(drag)API
1
2
3
4
5
6
7
8
3.取消事件的默认行为 ,在js中可以使用
event.preventDefault()
和函数末尾的
return false
,这两种都可以取消事件的行为,但是都有兼容性的问题
//取消事件的默认行为
if (event.preventDefault) {
event.preventDefault();
} else {
return false;
}
,在jquery中使用
event.preventDafault()
可以取消事件的默认行为,兼容性很好。
4..HTML5中全屏显示API:允许页面上的任一元素全屏显示
◆元素.requetFullscreen() 开启全屏显示
◆元素.cancleFullscreen() 关闭全屏显示
◆但是兼容性问题值得注意,不同的浏览器需要添加前缀:
webkitRequestFullScrenn();//谷歌
mozRequestFullScrenn();//火狐
webkitCancleFullScreen() ;//谷歌
mozCancleFullScreen();//火狐
◆html5全屏的兼容性写法
//兼容性写法
if (box.requestFullscreen) {
box.requestFullscreen();
} else if (box.webkitRequestFullScreen) {
box.webkitRequestFullScreen();
} else if (box.mozRequestFullScreen) {
box.mozRequestFullScreen();
} else {
alert("您的浏览器暂时不支持html5全屏效果");
}
◆
使用html5的全屏API
5.HTML5中的Web存储
◆在html4中使用
document.cookie
来存储本地的数据 ,可以用来存储大小约4kb的数据,解析起来很不方便,cookie一般用于存储用户名和密码。
◆html5中的Storage 存储◇sessionStorage:会话存储,存到浏览器缓存中
window.sessionStorage
设置与读取方便,容量为5M,只能够存乎此字符串,可以使用
JSON.stringfy()
将对象编码后存储,生命周期为关闭浏览器窗口,在同一个窗口下数据可以共享。
使用html5中的web存储(sessionStorage)
◇localStorage:本地存储,存到本地磁盘中
window.localStorage
设置与读取方便,容量为20M,只能够存取字符串,可以使用
JSON.stringfy()
将对象编码后存储,永久生效,除非手动删除,可以多窗口共享
使用html5中的web存储(localStorage)
◇Storage使用的方法
setItem(key,value) //设置存储内容,
getItem(key)// 读取存储内容,
removeItem(key) //删除键值为key的存储内容,
clear() //清空所有存储内容,
key(n) //以索引值来获取存储内容的键
◇使用Storage记住密码
使用html5中的localStorage实现记住密码的功能
★WebSQL、IndexDB已经被w3c 放弃了..,因为生命周期差异,存储空间差异。
6.HTML5中的检测网络状态
◆在线
window.ononline
用户网络连接时被调用 ,但是很多浏览器早已不支持这种写法了,所以只能够使用这种方式
window.addEventListener("online", function () {});
◆离线
window.onoffline
用户网络断开时被调用,但是很多浏览器早已不支持这种写法了,所以只能够使用这种方式
window.addEventListener("offline", function () {});
◆无论是online还是offline,都是惰性的事件,只有突然间来网或者突然间断网才会有效果,否则无效。
◆navigator.onLine
window.navigator.onLine
用户网络只要是连接的,返回值就为true。
◆
使用html5的检测网络状态的事件
7.HTML5的应用缓存,在html5可以轻松的构建一个离线(无网络状态)应用,只需要创建一个cache manifest文件即可
◆可配置需要缓存的资源
◆网络无连接应用也可以用
◆本地读取缓存资源,提高访问速度,增强用户体验
◆减少请求,缓解服务器负担
◆创建一个文件,文件后缀名为 .appcache,文件中书写的格式
CACHE MANIFEST
# 注释以#开头
#下面是要缓存的文件
CACHE:
http://baidu.com/Upload/Image/01.jpg
http://baidu.com/Upload/Image/02.jpg
#指定必须联网才能访问的文件
NETWORK:
http://baidu.com/Upload/Image/03.jpg
http://baidu.com/Upload/Image/04.jpg
#当当前页面无法访问时回退的页面
FALLBACK:
http://baidu.com/404.html
,让html文件与这个缓存文件关联起来
,只需要在html标签中加入一个属性然后属性值为这个文件的名字即可。
◆这个文件里的内容是写死的,但是可以使用一些文件流程序来动态生成这个文件。
◆
使用html5中的应用程序缓存技术
8.HTML5中的地理定位,在html5中使用地理信息的API来获取用户的地理信息,这样就可以基于用户位置开发互联网应用,既基于位置服务(Location Base Service)
◆获取地理信息的方式【
◇IP地址
◇三维坐标:GRS(Global Positioning System 全球定位系统)、Wi-Fi、 手机信号
◇用户自定义数据
】
◆获取地理信息的方式比【
◇IP地址:优点:任何地方都可以使用,在服务器端处理。缺点:不精确(经常出错,一般精确到城市级),运算代价大。
◇GRS:优点:很精确。缺点:定位时间长,耗电量大,室内效果差,需要额外硬件设备支持。
◇Wi-Fi:优点:精确,在室内使用简单、快捷。缺点:在乡村这些Wi-Fi接入点少的地区无法使用。
◇手机信号:优点:相当精确可在室内使用简单、快捷。缺点:需要能够访问手机或其modem设备。
◇用户自定义数据:优点:可获得比程序定位服务更准确的位置数据,用户自行输入可能比自动检测更快。缺点:可能不准确,特别是当用户位置变更后。
】
◆在html5地理定位API进行定位时,必须要得到用户的明确许可,这是html5中地理定位的协议里提供的保护用户隐私的机制。
★注意,pc端需要电脑设置了允许浏览器有定位的权限才能够定位成功,否则就会定位失败。
★
navigator.geolocation.getCurrentPosition(successCallback, errorCallback, options)
获取当前地理信息,
navigator.geolocation.watchPosition(successCallback, errorCallback, options)
重复获取当前地理信息。
当成功获取地理信息后,会调用succssCallback,并返回一个包含位置信息的对象position。Coords(坐标)position.coords.latitude//纬度
position.coords.longitude//经度
,当获取地理信息失败后,会调用errorCallback,并返回错误信息error
◆
navigator.geolocation
表示通过bom对象中的navigator对象来获取地理定位的对象
◆使用方式
navigator.geolocation.getCurrentPosition(function(position){
console.log("定位成功");
console.log("经度:"+position.coords.longitude+"纬度"+position.coords.latitude);
},function(error){
console.log("定位失败");
console.log(error);
});
◆获取到了经纬度之后,就可以通过一些地图API(百度地图、谷歌地图、高德地图)来具体进行定位
◆获取经纬度
使用html5中的定理定位API获取经纬度
◆获取经纬度后使用百度地图API
普通地图&全景图
◆一个查询全球定位信息的网站:http://www.gpsspg.com/(全球定位信息查询:经纬度、手机号、基站、身份证号、行政区)