TML5属于上一代HTML的升级语言,设计HTML5最主要的目的是为了在移动设备上支持多媒体!!!
好处:跨平台:
例如:比如你开发了一款HTML5的游戏,你可以很轻易地移植到UC的开放平台、Opera的游戏中心、Facebook应用平台,甚至可以通过封装的技术发放到App Store或Google Play上,所以它的跨平台性非常强大,这也是大多数人对HTML5有兴趣的主要原因。
缺点:
pc端浏览器支持不是特别友好,造成用户体验不佳(随着移动端的发展不断扩大和win10(ie10)的大量推广,这一缺点将被无限缩小)
新特性:
1. 取消了过时的显示效果标记 <font></font> 和 <center></center>等...
2. 新语义标签的引入
3. 新表单元素引入
4. canvas标签(图形设计)
5. 本地数据库(本地存储)
6. 一些API
1.HTML5新语义标签
HTML5新标签的数量在25个左右具体也没有找到详细的资料来查看(每个网站显示的数量都不一样)
虽然新增的标签很多但是实际上用到的应该只有十个左右MDN上有一句话
“HTML 使用“标记”来注明文本、图片和其他内容,以便于在 Web 浏览器中显示。HTML 标记包含一些特殊“元素”如 <head>,<title>,<body>,<header>,<footer>,<article>,<section>,<p>,<div>,<span>,<img> 等等。”
这其中大部分有HTML5以前的标签也有HTML5的而这些刚好就是我们常用的标签,不常用的也许不必太过了解布局DIV也可以不是么?
另外推荐大家在使用新语义标签的时候尽量每个独立的页面只使用一个标签作为包裹,语义化的作用就是seo(具体可百度),就是让搜索引擎知道网上到底有些什么,如header 、main、footer标签等等,当然你也可以写100个!
以下总结出HTML5常用的标签: “header” “nav” “main”“article” “address”“section”“aside” “footer”
如果忘记了这些标签的意思可以访问 MDN、W3C、或者CSND,当然博客园上搜搜可能会更快 。
2.HTML5的重点标签之video和audio
<video></video> 视频
属性:controls 显示控制栏
属性:autoplay 自动播放
属性:loop 设置循环播放
<audio></audio> 音频
属性:controls 显示控制栏
属性:autoplay 自动播放
属性:loop 设置循环播放
video标签支持的格式 http://www.w3school.com.cn/html5/html_5_video.asp
多媒体标签在网页中的兼容效果方式(每个浏览器支持的情况不同所以需要做兼容性处理)
(以下source属性只会生效一个 即 if=true 之后 就不执行了)
3.HTML5中的智能表单控件
<input type="email">
type值=
email: 输入合法的邮箱地址
url: 输入合法的网址
number: 只能输入数字
range: 滑块
color: 拾色器
date: 显示日期
month: 显示月份
week : 显示第几周
time: 显示时间
(智能表单,会自动对输入的内容做基本校验,内容不符合基本校验则拒绝提交请求
表单属性
◆form属性:
autocomplete=on | off 自动完成
novalidate=true | false 是否关闭校验
◆ input属性:
autofocus : 自动获取焦点
multiple: 实现多选效果
placeholder : 占位符 (提示信息)
required:必填项
本地存储
随着互联网的快速发展,基于网页的应用越来越普遍,同时也变的越来越复杂,为了满足各种各样的需求,会经常性在本地存储大量的数据,传统方式我们以document.cookie来进行存储的,但是由于其存储大小只有4k左右,并且解析也相当的复杂,给开发带来诸多不便,HTML5规范则提出解决方案,使用sessionStorage和localStorage存储数据。
localStorage:
1. 永久生效
2. 多窗口共享
3. 容量大约为20M
◆window.localStorage.setItem(key,value) 设置存储内容
◆window.localStorage.getItem(key) 获取内容
◆window.localStorage.removeItem(key) 删除内容
◆window.localStorage.clear() 清空内容
sessionStorage:
1. 生命周期为关闭当前浏览器窗口
2. 可以在同一个窗口下访问
3. 数据大小为5M左右
◆window.sessionStorage.setItem(key,value)
◆window.sessionStorage.getItem(key)
◆window.sessionStorage.removeItem(key)
◆window.sessionStorage.clear()
required如何修改默认提示选项
需要两个几个参数
placeholder=默认提示用户输入
oninvalid事件=当用户输入不符合规则的时候提示的内容随意改setCustomValidity 就是用来修改 requered值的函数
oninput事件=约等于chuange事件 立即执行
4.HTML5中新的一些API
以前获取节点通过
document.getElementById("ID名称")这些还有className,name,tagname等等方式获取返回当前节点
H5新增的节点获取方法只有两个
document.querySelector("选择器"); 返回节点
document.querySelectorAll("选择器"); 返回数组
可以完美的代替以前或者节点的方式,如果无需兼容ie10以下的话
H5中对class的操作
classList.add("类名")
添加class类名 不返回任何值 如果你把它赋值给一个变量 得到结果是undefined
classList.remove("类名"); 删除
classList.contains("类名");
检查has className 是否存在返回布尔值 即true and false
classList.toggle("active");
查询active 是否存在,存在就删除,不存在就添加 ,省去了if判断!返回布尔值如果执行多条 即 true false true false.
自定义属性 (小案例分析体验自定义属性) data-自定义属性名
1. 获取自定义属性 Dom.dataset 返回的是一个对象
Dom.dataset.属性名 或者 Dom.dataset[属性名]
注:属性名无需加data如自定义属性名=data-canvas 那么获取的时候 直接dataset.canvas即可 设置同理
2. 设置自定义属性
Dom.dataset.自定义属性名=值 或者 Dom.dataset[自定义属性名]=值;
文件读取 FileReader
FileReader 接口有3个用来读取文件方法返回结果在result中
readAsBinaryString ---将文件读取为二进制编码
readAsText ---将文件读取为文本
readAsDataURL ---将文件读取为DataURL
FileReader 提供的事件模型
onabort 中断时触发
onerror 出错时触发
onload 文件读取成功完成时触发
onloadend 读取完成触发,无论成功或失败
onloadstart 读取开始时触发
onprogress 读取中
获取当前网络状态
window.navigator.onLine 返回一个布尔值 网没问题返回true否则返回false
网络状态事件 (大部分为不支持和废弃状态也许移动端用的比较多)
1. window.ononline
2. window.onoffline
获取地理定位
获取一次当前位置
window.navigator.geolocation.getCurrentPosition(success,error);
success成功之后获取位置信息 否则抛出错误,比如获取位置信息被拒绝
1. coords.latitude 维度
2. coords.longitude 经度
实时获取当前位置
window.navigator.geolocation.watchPosition(success,error);
以上内容或有不足,欢迎各位指出补充,谢谢。
HTML5新增的新特性在实际开发中体现的优势已经不言而喻。
今天这篇文章我们主要讲解HTML中新增的与本地存储有关的localStorage和sessionStorage两种API,在之前的一篇文章《HTML5新特性之localStorage与sessionStorage使用技巧》中,已经讲解过它们的相关算法。
今天我们就来细看下HTML5新增的localStorage和sessionStorage的理论知识点,这在前端面试中基本是必问的问题,一定要好好看下。
HTML5
在讲解localStorage和sessionStorage之前,我们可以先看下Cookie,Cookie同样是用于本地存储对象的,随着HTTP协议诞生至今。
cookie
其实在浏览器端已经有了Cookie用于本地存储数据,为什么还要在HTML5中新增localStorage和sessionStorage两个API呢?那么我们就先来看看Cookie具有的一些特性吧。
Cookie一般存储与服务端交互的信息,由于数据量小,一般不超过4KB大小。
Cookie在请求发起后,不管服务端需不需要Cookie值,都会随着请求头发送至服务器端,造成了不必要的带宽了浪费。
Cookie有效时间是随意设置的,可能很短至几分钟,也有可能很长至几个月,具有不确定性。
既然Cookie有诸多限制,那么Cookie是否能被HTML5的本地存储新特性所代替呢?
当然也是不能的。
Cookie作为HTTP协议的一部分,有其存在的重要意义,是无法代替的。
我们可以这样理解,HTML5中新增的localStorage和sessionStorage是对本地存储功能的扩充。主要解决的就是本地存储数据量小的问题。
localStorage和sessionStorage作为HTML5新增的特性之一,已经被广泛用于实际开发中。
其中两者的API都很简单
通过setItem(), getItem()方法去设置和获取本地存储。
通过removeItem()方法来清除某个特定的变量缓存。
通过key()获取所有的本地缓存的key集合。
通过clear()清空本地缓存。
API上的细节大家可以自行看文档,这里就不赘述了。
为什么HTML5会新增localStorage和sessionStorage两种新的API呢?想必它们肯定是有差异的。
作用域
同源页面(同协议,同域名,同端口号)下的不同页面之间共享localStorage信息,而不同页面之间不能共享sessionStorage信息。
注意:如果一个标签页包含多个iframe,它们是可以共享sessionStorage的。
我们通过以下示例来看看。
首先我们在Page1的localStorage与sessionStorage中添加值。
添加值
然后我们看看浏览器效果。在Chrome开发者工具的Application面板下可以看见localStorage与sessionStorage栏。
localStorage与sessionStorage存储
从上图可以看出在sessionStorage与localStorage中都已经添加进信息。
然后我们再打开同源下的另一个页面Page2,再看看Chrome控制台下的效果。
另一个页面下的存储信息
从上图中我们可以看出,Page2的localStorage中仍然有信息,而sessionStorage为空,这就证明了同源下的不同页面是不能共享sessionStorage信息的。
数据生命周期
localStorage中的数据在同源下所有tab页中共享,只要不手动清除,会永久存在于本地缓存中。
sessionStorage中的数据只能存在于单个页面下共享,只要当前标签页关闭,sessionStorage中的信息就会被清空。
localStorage与sessionStorage的区别已经讲解完毕,接下来就看看localStorage与Cookie的差别吧。
localStorage中的信息只是存在本地浏览器端的,不会自动随着HTTP请求发送到后端,除非手动通过代码控制;Cookie中的信息会随着同源的HTTP请求发送到服务端。
localStorage存储大小一般会达到几M,不同浏览器会有所差异,通过上篇文章的算法,得知Chrome下是5M,safari下是2M;而Cookie的大小一般为4K,相比之下,localStorage的存储要比Cookie大得多。
localStorage中的信息只要在不清空的情况下,会一直存在本地;Cookie的有效期是有限的,有默认值,也可以手动设定,并且跟窗口无关。
可以给localStorage设置监听storage事件,做数据变更的后续处理。
本篇文章主要介绍了localStorage与sessionStorage和Cookie之间的区别,大家需要好好消化,以便在面试时遇到这样的问题能够轻松回答上来。
言
曾几何时,前端的页面布局一直采用div,但是div本身并没有实际的意义,它只是定义了一个区域,而且这个区域是做什么的浏览器并不知道,不利于页面的SEO优化。
因此HTML5中新增的语义化标签就很好的解决了这个问题,当然它还有其他一些好处,接下来我们就一起来看看吧。
HTML5
语义化标签的优点
即使在没有CSS的支持下,浏览器依然能呈现出良好的内容结构。
有利于SEO,语义化的标签更有利于爬虫去解析更多有效信息。
跨设备体验,不同设备都支持语义化标签,那么即使在不同设备下依然可以有无缝体验。
便于代码开发和维护,语义化可以增加代码的可读性,让团队成员可以更好理解彼此的代码意图。
HTML5新增的语义化标签
那么在HTML5中新增了哪些利于页面布局的HTML5标签呢?
我们先通过以下这张图来看看。
HTML5新增语义化标签
header标签
header标签表示页面或一个区域(section)的页眉部分,通常在里面包含h1-h6标签来使用。
我们直接通过代码来看看在浏览器上的效果。
header标签效果
footer标签
footer标签和header标签类似,表示页面或一个区域(section)的页脚部分,通常会将网站的证书,许可,版权协议等内容放在这块。
footer标签
hgroup标签
hgroup标签一般用于h1-h6标签的组合,比如主标题,副标题,三级标题的组合情况。
我们通过以下代码段来看看其代码组织形式。
hgroup标签
需要注意的一点是,如果需要使用hgroup标签则保证在hgroup标签里至少有两个h标签,如果只有一个h标签,则应该去掉hgroup标签。
nav标签
nav标签主要用于定义页面的导航部分,例如页面或者section中的侧边目录栏。
其使用方式如下代码段所示。
nav标签
aside标签
aside标签一般会指定网页的相关内容,友情链接等附注性的东西,类似于广告也可以使用aside标签。
main标签
main标签定义一个页面的主要内容,在一个页面中只能使用一次。
article标签
article标签表示的是一个独立完整的内容区域,比如一张报纸的某个独立版块。
在article标签内部可以包含其他语义化标签,其基本使用如下所示。
article标签
section标签
section标签表示的是文档中内容的分节或分段,上述的article,nav或者aside其实都可以看做特殊的section标签,如果能用article,nav,aside标签,最好不要用section标签。
section标签与与article标签可以互相嵌套,需要视具体情况而定。
结束语
如果你的布局还是只有div,那么看完了今天这篇文章后完全可以尝试下新的HTML5标签噢。
感兴趣的同学可以加下我自己创建的Q群,大家相互学习交流,我也会尽力维护好群环境,群号如下所示。
号码
*请认真填写需求信息,我们会在24小时内与您取得联系。