1,认识Html5
前面我们学习的html是什么?
Html4.0 网页开发: html 结构 4.0
Css ->样式 2.0
Js 行为用户交互
HTML5 是html4.0 升级版(狭义)
结构 Html5 、样式 css3 、行为: API 都有所增强
HTML5并不仅仅只是做为HTML标记语言的一个最新版本,更重要的是它制定了Web应用开发的一系列标准,成为第一个将Web做为应用开发平台的HTML语言。
HTML5广义的概念: 代表着浏览器技术发展的一阶段,HTML5+CSS3+js API 一套前端技术的组合;
2,语义标签
<nav> 表示导航
<header> 表示页眉
<footer> 表示页脚
<section> 表示区块
<article> 表示文章如文章、评论、帖子、博客
<aside> 表示侧边栏如文章的侧栏
<figure> 表示媒介内容分组与 ul > li 做个比较
<mark> 表示标记 (带用“UI”,不怎么用)
<progress> 表示进度 (带用“UI”,不怎么用)
<time> 表示日期
本质上新语义标签与<div>、<span>没有区别,只是其具有表意性,使用时除了在HTML结构上需要注意外,其它和普通标签的使用无任何差别,可以理解成<div class="nav"> 相当于 <nav>。不要好奇,它只是一个标签!
尽量避免全局使用header、footer、aside等语义标签。
3,兼容问题
在不支持HTML5新标签的浏览器里,会将这些新的标签解析成行内元素(inline)对待,所以我们只需要将其转换成块元素(block)即可使用,但是在IE9版本以下,并不能正常解析这些新标签,但是却可以识别通过document.createElement('tagName')创建的自定义标签,于是我们的解决方案就是将HTML5的新标签全部通过document.createElement('tagName')来创建一遍,这样IE低版本也能正常解析HTML5新标签了,在实际开发中我们更多采用的是通过检测IE浏览器的版本来加载三方的一个JS库来解决兼容问题。
4,表单
email 输入email格式
tel 手机号码
url 只能输入url格式
number 只能输入数字。Step步长
search 搜索框
range 范围 滑动条value min max
color 拾色器
time 时间
date 日期 不是绝对的
--datetime 时间日期
month 月份
week 星期
部分类型是针对移动设备生效的,且具有一定的兼容性,在实际应用当中可选择性的使用。
5,表单元素
数据列表 :例:
keygen元素:
keygen元素的作用是提供一种验证用户的可靠方法。
keygen元素是密钥对生成器(key-pair generator)。当提交表单时,会生成两个键, 一个是私钥,一个公钥。
私钥(private key)存储于客户端,公钥(public key)则被发送到服务器。公钥可用于之后验证用户的客户端证书(client certificate)。
<label for=""> 加密类型: <keygen/> </label>
output 输出信息,不可当作数据提交
<label for=""> 推荐人:<output>春哥</output> </label>
meter 度量器:
<label for="#"> <meter value="50" max="100" min="0" low="30" high="80"></meter> </label>
progress进度条
<progress value="40" max="100" min="0"></progress>
6,表单属性
placeholder 占位符
autofocus 自动聚焦
autocomplete 用于表单元素,也可用于表单自身,自动完成填充, on 开(默认) off 取消提示
multiple 文件上传多选或多个邮箱地址,多选
required 必填项
novalidate 关闭表单的默认验证功能,可用于<form>标签
pattern: 自定义正则验证 pattern="\D+";
pattern 正则表达式验证表单
form 指定表单项属于哪个form,处理复杂表单时会需要
7,表单事件
oninput:当用户输入时 触发
oninvalid:当验证不通过是触发-->设置验证不通过时的提示文字
8,多媒体
在HTML5之前,在网页上播放音频/视频的通用方法是利用Flash来播放,但是大多情况下,并非所有用户的浏览器都安装了Flash插件,由此使得处理音频/视频播放变的非常复杂,并且移动设备的浏览器并不支持Flash插件。
音频:audio
autoplay 自动播放
controls 是否显不默认播放控件
loop 循环播放
preload 预加载 同时设置autoplay时些属性失效
由于版权等原因,不同的浏览器可支持播放的格式是不一样的
兼容:
多浏览器支持:
视频:video
autoplay 自动播放
controls 是否显示默认播放控件
loop 循环播放
preload 预加载,同时设置了autoplay,此属性将失效
width 设置播放窗口宽度
height 设置播放窗口的高度
由于版权等原因,不同的浏览器可支持播放的格式是不一样的
兼容:
多浏览器支持:
9,DOM扩展
获取元素:
document.getElementsByClassName ('class') 通过类名获取元素,以类数组形式存在。
document.querySelector(‘div’) 通过CSS选择器获取元素,符合匹配条件的第1个元素。
document.querySelectorAll('selector')通过CSS选择器获取元素,以类数组形式存在。
类名操作:
Node.classList.add('class')添加class
Node.classList.remove('class') 移除class
Node.classList.toggle('class') 切换class,有则移除,无则添加
Node.classList.contains('class') 检测是否存在class
自定义属性:
在HTML5中我们可以自定义属性,其格式如下data-*=""
例如:
data-info="我是自定义属性",通过Node.dataset['info']我们便可以获取到自定义的属性值。
Node.dataset是以类对象形式存在的,当我们如下格式设置时,则需要以驼峰格式才能正确获取,data-my-name="itcast",获取Node.dataset['myName']
10 ,多媒体新增API
方法:load() 加载、play() 播放、pause() 暂停,webkitRequestFullScreen全屏
属性:currentTime 视频播放的当前进度、
duration:视频的总时间
paused:视频播放的状态.
事件:
oncanplay:事件在用户可以开始播放视频/音频(audio/video)时触发。
ontimeupdate:通过该事件来报告当前的播放进度.
onended:播放完时触发
11,拖拽
在HTML5的规范中,我们可以通过为元素增加draggable="true"来设置此元素是否可以进行拖拽操作,其中图片、链接默认是开启的。
页面中设置了draggable="true"属性的元素
页面中任何一个元素都可以成为目标元素
拖拽元素
ondrag 应用于拖拽元素,整个拖拽过程都会调用
ondragstart 应用于拖拽元素,当拖拽开始时调用
ondragleave 应用于拖拽元素,当鼠标离开拖拽元素时调用
ondragend 应用于拖拽元素,当拖拽结束时调用
目标元素
ondragenter 应用于目标元素,当拖拽元素进入时调用
ondragover 应用于目标元素,当停留在目标元素上时调用
ondrop 应用于目标元素,当在目标元素上松开鼠标时调用
ondragleave 应用于目标元素,当鼠标离开目标元素时调用
12,历史
提供window.history,对象我们可以管理历史记录,可用于单页面应用,SinglePageApplication,可以无刷新改变网页内容。
旧版本浏览器..
history.back() 回退
history.forward()前进
13,地理定位
1、IP地址
2、三维坐标GPS(Global Positioning System,全球定位系统)
3、 Wi-Fi
4、 手机信号
5、用户自定义数据
如下图对不同获取方式的优缺点进行了比较,浏览器会自动以最优方式去获取用户地理信息。
API详解:
navigator.getCurrentPosition(successCallback, errorCallback, options) 获取当前地理信息
navigator.watchPosition(successCallback, errorCallback, options) 重复获取当前地理信息
1、当成功获取地理信息后,会调用succssCallback,并返回一个包含位置信息的对象position。Coords(坐标)
position.coords.latitude纬度
position.coords.longitude经度
2、当获取地理信息失败后,会调用errorCallback,并返回错误信息error
3、可选参数 options 对象可以调整位置信息数据收集方式
14,web存储
随着互联网的快速发展,基于网页的应用越来越普遍,同时也变的越来越复杂,为了满足各种各样的需求,会经常性在本地存储大量的数据,传统方式我们以document.cookie来进行存储的,但是由于其存储大小只有4k左右,并且解析也相当的复杂,给开发带来诸多不便,HTML5规范则提出解决方案。
Storage 存储
window.sessionStorage
window.localStorage
(向本地保存数据,有可能在浏览器内存里面,有可能在硬盘上面.)
1、设置、读取方便
2、容量较大,sessionStorage约5M、localStorage约20M
3、只能存储字符串,可以将对象JSON.stringify() 编码后存储
1、生命周期为关闭浏览器窗口
2、在同一个窗口下数据可以共享
1、永久生效,除非手动删除
2、可以多窗口共享
setItem(key,value) 设置存储内容
getItem(key) 读取存储内容
removeItem(key) 删除键值为key的存储内容
clear() 清空所有存储内容
key(n) 以索引值来获取存储内容
15,全屏
HTML5规范允许用户自定义网页上任一元素全屏显示。
requestFullscreen()开启全屏显示
cancleFullscreen()关闭全屏显示
不同浏览器需要添加前缀如:
webkitRequestFullScreen、mozRequestFullScreen
webkitCancleFullScreen、mozCancleFullScreen
通过document.fullScreen检测当前是否处于全屏
不同浏览器需要添加前缀
document.webkitIsFullScreen、document.mozFullScreen
全屏伪类
:full-screen .box {}、:-webkit-fu2ll-screen{}、:moz-full-screen{}
var docElm = document.documentElement;
if (docElm.requestFullscreen) { docElm.requestFullscreen(); }
else if (docElm.mozRequestFullScreen) { docElm.mozRequestFullScreen(); }
else if (docElm.webkitRequestFullScreen) { docElm.webkitRequestFullScreen(); }
16,网络状态
我们可以通过window.onLine来检测,用户当前的网络状况,返回一个布尔值
window.online用户网络连接时被调用
window.offline用户网络断开时被调用
window.addEventListener("online",function(){ alert("已经建立了网络连接") })
window.addEventListener("offline",function(){ alert("已经失去了网络连接") })
17,应用缓存
HTML5中我们可以轻松的构建一个离线(无网络状态)应用,只需要创建一个cache manifest文件
可配置需要缓存的资源
网络无连接应用仍可用
本地读取缓存资源,提升访问速度,增强用户体验
减少请求,缓解服务器负担
一个普通文本文件,其中列出了浏览器应缓存以供离线访问的资源,推荐使用.appcache为后缀名,添加MIME类型AddTypetext/cache-manifest .appcache
例如我们创建了一个名为demo.appcache的文件,然后在需要应用缓存在页面的根元素(html)添加属性manifest="demo.appcache",路径要保证正确。
网友评论