深入理解HTML5

1.accesskey,tabindex

   

 <a href="http://www.google.com/" accesskey="g">Google</a>

    请使用 Alt + accessKey 来访问带有快捷键的元素。

<a href="http://www.w3school.com.cn/" tabindex="2">W3School</a><br />
<a href="http://www.google.com/" tabindex="1">Google</a><br />
<a href="http://www.microsoft.com/" tabindex="3">Microsoft</a>

    按tab键一次访问


2.title

 <p title="this is sheet">asdfasdf</p>

wKioL1Ss9pjBCS3EAAAVtl0ehBc943.jpg


3.hidden

   

 <p title="this is sheet" hidden>asdfasdf</p>

    等同于 display:none,省去CSS遍历页面


    js:element.hidden = true;




4.dir

   

<p dir="rtl">Write this text right-to-left!</p>

    文档流从右向左排





5.manifest

   离线缓存!!





6.base

   

<base href="" />
<a href="b"></a>

    a指向http://a/b




7. <script>元素async,defer异步加载

   

async - HTML属性
如我前面提到的,添加async属性非常简单:

[html] view plaincopy
<!-- 指定async,以及 onload 回调-->  
<script async src="siteScript.js" onload="myInit()"></script>  
事实上,如果你的JavaScript以及HTML结构设计的合理,那么90%的情况下你的Script元素可以使用异步加载。

defer - HTML属性
Safari 浏览器额外添加了defer属性
[html] view plaincopy
<!-- 指定defer,效果和async差不多-->  
<script defer src="siteScript.js" onload="myInit()"></script>  

async 与 defer 的差别
WebKit官方博客 很好地解释了async 与 defer 的不同

------------------------------------
正常情况下,当浏览器在解析HTML源文件时如果遇到外部的script,那么解析过程会暂停,并发送请求来下载script文件,只有script完全下载并执行后才会继续执行DOM解析。比如:
<script src="myBlockingScript.js"></script>
在下载过程中浏览器是被阻止做其他有用的工作的,包括 解析HTML,执行其他脚本,以及展示CSS布局。虽然Webkit预加载扫描程序可以探测性地在下载阶段进行多线程下载,但是某些页面仍然存在很大的网络延迟。
当前有很多技术来提升页面显示速度,但都需要额外的代码以及针对特定浏览器的技巧。现在,script可以通过添加async或者defer属性来让脚本不必同步执行,示例如下:

[html] view plaincopy
<script async src="myAsyncScript.js" onload="myInit()"></script>  
<script defer src="myDeferScript.js" onload="myInit()"></script>  
async 和 defer 标注的 script 都不会暂停HTML解析就立刻被下载,两者都支持onload事件回调来解决需要该脚本来执行的初始化。
两者的区别在于执行时的不同:
async 脚本在script文件下载完成后会立即执行,并且其执行时间一定在 window的load事件触发之前。这意味着多个async脚本很可能不会按其在页面中的出现次序顺序执行。
与此相对,浏览器确保多个 defer 脚本按其在HTML页面中的出现顺序依次执行,且执行时机为DOM解析完成后,document的DOMContentLoaded 事件触发之前。

 




7.table 语义标签

   

       <table>
            <thead>
                <tr></tr>
            </thead>
            <tfoot>
                <tr></tr>
            </tfoot>
            <tbody>
                <tr></tr>
            </tbody>
       </table>

    



8.<details>,<summary>

   

        <details>
            <summary>sssssss1</summary>
            <p>sdfdsdfsdfsdfsdfsf</p>
        </details>

    


wKiom1StCgHCVVMAAABCLz06ZGw734.jpg

wKiom1StCeGhe3f4AABaJdXpe0Y123.jpg

9.html5区块

   html5的分区法则!!

    讲网页内容拆解成嵌套的区块(section),每个区块有一个标题,就像目录一样

    根区块是body,第一个标题被当做body的标题

    每个区块的第一个标题为该区块的标题

    若果只有标题出现,那么区块会被隐含的创建。为了兼容以前的(div+h1-6)方式

    三个h1,那么三个并列的区块

    1个h1,2个h2,一个h1区块,该区块有2个并列的h2区块

    标题:h1,hgroup

    区块元素:section,article,aside,nav





    迟早不再使用<div>+<h1-h6>表示层次了!!!!!!!!!!

    手机百度,手机网易,手机优酷还是用<div>+<p>

    html5中使用区块的概念,各个区块嵌套产生层次。


    chrome,firefox中h1大小不同,但是safari,opera,IE相同

           <h1>1111111111111</h1> 
        <section>
			<h1>222222222222222</h1>
			<h1>222222222222222</h1>
			<section>
				<h1>33333333333333</h1>
			</section>
		</section>

body


wKiom1St7xnSjdw-AACF08EX5Mw384.jpg






10.<hgroup>

    hgroup中可以有多个标题,但是只创建一个区块,以最大标题为准,而不是第一个标题,所以标题位置可以换了。

<hgroup>
    <h2>222</h2>
    <h1>111</h1>
</hgroup>






11.<a>

   a标签中可以加入更多内容了

   <a href='http://www.baidu.com'>
        <section>
            <h1>daohang</h1>
        </section>
    </a>




12.用于文本的语义标签

   

   <em>
   <strong>
   <i>
   <b>
   <small>
   <s>
   <mark>
   <q>
   <dfn>
   <abbr>
   <sub><sup>
   <time>
   <br><war>
   <cite>
   <ins><del>
   <code><var>
   <bdo>
   <ruby>


13.<input>新type


            <input type='color' name='sdf'/>
            <input type='date' name=''/>
            <input type='time' name='sdf'/>
            <input type='date-time' name='sdf'/>
            <input type='month' name='sdf'/>
            <input type='number' name='sdf'/>
            <input type='range' name='sdf'/>
            <input type='search' name='sdf'/>


    浏览器校验:输入字段必填 required

  <input type='search' name='sdf' required/>


    form“嵌套”

    form1表单和form2表单被提交时,该input都会被提交,即他属于form1又属于form2

    <form id='form1'>
        。。。
    </form>
     <form id='form2'>
         <input type='text' form='form1 form2'>
        。。。
    </form>


    placeholder(search,email,tel,url)

    文本框为空时,显示placehoder的值


    

    只读

    readonly


  

     datalist

 <input type='search' list="aaa" name='sdf'/>
 <datalist id="aaa">
     <option value="度娘">
     <option value="刘东">
     <option value="刘冬">
  </datalist>


wKioL1SuJbHTItSYAAAenYBHovw320.jpg





    optgroup

<select>  
    <optgroup label="Swedish Cars">
        <option value ="volvo">Volvo</option>
        <option value ="saab">Saab</option>  
    </optgroup>

    <optgroup label="German Cars">
        <option value ="mercedes">Mercedes</option>
        <option value ="audi">Audi</option>  
    </optgroup>
</select>


    textarea

<textarea rows="3" cols="30">
这里是文本域中的文本 ... ... ... ...
</textarea>


    进度条

<progress max='3' value='1'>aaa</progress>

       wKioL1SuJ97wEXIvAAALljWPyjk744.jpg



    度量

 <meter min='0' low='20' high='80' optimum='90' max='100' value='10'></meter>
 \ <meter min='0' low='20' high='80' optimum='90' max='100' value='100'></meter>


wKioL1SuKUOAirNCAAAL1NVIJrU443.jpg



 fieldset form中用

<form>
  <fieldset>
    <legend>健康信息</legend>
    身高:<input type="text" />
    体重:<input type="text" />
  </fieldset>
</form>



    label

一般稍微有些经验的页面制作人员都知道label标签可以优雅地扩大表单控件元素的点击区域,例如,单纯的单选框点击区域就鼻屎那么大的地方,经常会点不到位置。因此,label标签的使用对于提高页面的可用性可访问性是很有帮助的。

<label for="test">标签</label> <input name="input" type="text" id="test" />



<label>标签 <input name="input" type="text" /></label>
























你可能感兴趣的:(Google,asdfasdf)