震惊!这就是H5的新特性吗?又学到了许多

新语义化标签

H5中新增了很多新的语义化标签,让我们大致来看一下

  • <header>标签包含引导和导航等,通常包含h1~h6、搜索框、logo等。
  • <footer>标签一般配合address标签(显示地址),包含作者信息、相关链接等。
  • <nav> 导航 在H4中导航栏一般用ul-li标签,H5中可以直接用
  • <hgroup> 页面上得一个标题组合(一个标题和一个子标题)
  • <section> 用来划分页面上的不同区域
  • <article> 用来表示页面上一套结构完整且独立的内容部分
  • <aside> 和主题相关的附属信息
  • <figure><figcaption><figure>为父元素,用于图片的外层,其子元素<figcaption>用来对内容进行说明。
  • <time>标签,专门用来表示时间
  • <datalist> 标签,定义选项列表。与 input 元素配合使用该元素,来定义 input 可能的值。 datalist 及其选项不会被显示出来,它仅仅是合法的输入值列表。 请使用 input 元素的 list 属性来绑定 datalist。
  • <details> 标签,用于描述文档或文档某个部分的细节。 与<summary>标签配合使用可以为 details 定义标题。标题是可见的,用户点击标题时,会显示出 details。
  • <address> 标签,定义文档或文章的作者/拥有者的联系信息。<address> 元素中的文本通常呈现为斜体。大多数浏览器会在 address 元素前后添加折行。
  • <mark> 标签,定义带有记号的文本。在需要突出显示文本时使用 该 标签,默认加黄色背景。
  • <keygen> 标签,规定用于表单的密钥对生成器字段。(用于给表单添加公钥)当提交表单时,私钥存储在本地,公钥发送到服务器。
  • <process>标签,定义进度条

表单新增功能

以往input中的name和value要随着form表单一起提交,form表单必须包裹input , 而现在可以通过input的form属性綁定

<form id="testform">
    <input type="text" />  
</form> 
<input form=testform />

placeholder屬性
通常作为提示语句

 <input type="text" placeholder="请输入密码" />

autofocus属性,页面只能有一个。
autofocus 属性规定当页面加载时 input 元素应该自动获得焦点。
如果使用该属性,则 input 元素会获得焦点。

 <input type="text" autofocus />

还有一些新增的type,如number,email,但是这些通常我们会使用自定义的。

地理定位

h5提供了Geolocation API访问地理位置,即通过window.navigator.geolocation来实现访问。这个对象有三个方法:

    getCurrentPosition()
    watchPosition()
    clearWatch

页面第一次使用这个api需要获得用户许可, watchPosition可以对位置变化事件进行监听。

本地存储

h5提供了sessionStorage、localStorage和indexedDB加强本地存储。使用之前应该先判断支持情况。

   if(window.sessionStorage){
       //浏览器支持sessionStorage
   }
   if(window.localStorage){
       //浏览器支持localStorage
   }

localStorage和sessionStorage的区别在于sessionStorage基于会话,关闭浏览器之后存储消失。localStorage在各浏览器中上限不同,最低的是2.6MB, 所以开发上限为2.6MB, 当然这比cookie强太多,如果还是不够的话只能借助indexedDB, indexedDB上限是250MB。
localStorage和cookie另一个区别是没有过期时间,不过这个可以在localStorage中加一个时间字段轻松解决这个问题。
存取localStorage可能遇到的坑是跨域问题,因为localStorage是域内安全,也就是同一个域才能对localStorage进行存储,可以通过postMessage来解决。以下是它的常用应用场景

    var userData = {
        name : 'sysuzhyupeng',
        age: 24
    }
    localStorage.setItem('userDate', JSON.stringify(userData));
    var newUserData = JSON.parse(localStorage.getItem('userData')); 

另外,浏览器提供了storage事件来监听存储

  window.addEventListener('storage', showStorageEvent, true)

离线web应用

页面缓存指的还是有网络状态下,而离线web应用指的是在没有网络状态可以运行应用

    if(window.applicationCache){
        //支持离线应用
    }

manifest文件是核心,记录着哪些资源文件需要离线应用缓存,要使用manifest,只需要在html标签中添加属性

    <html manifest="cache.manifest">

cache.manifest的文件格式如下

    CACHE MANIFEST
    #缓存的文件
    index.html
    test.js
    #不做缓存
    NETWORK
    /images/
    FALLBACK
    offline.html index.html

缓存的文件下面是当网络不可用时,文件直接从本地缓存读取,#NETWORK下面的文件无论是否已经缓存,都要从网络中下载。FALLBACK后面,当无法获取到offline.html,则转到index.html。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值