HTML5 這些你全知道嗎?

今天心情煩躁,搭建個(gè)論壇各種失敗,Laravel、React也學(xué)不進(jìn)去,于是就復(fù)習(xí)復(fù)習(xí)學(xué)過的。記錄一下很少用的東西。

代碼摘抄于W3C菜鳥教程HTML5手冊(cè)

# 定義文本方向
<element dir="ltr|rtl|auto">
// ltr 默認(rèn) 自左向右
// rtr 自右向左
// auto 讓瀏覽器自動(dòng)判斷
# 規(guī)定當(dāng)使用 "tab" 鍵進(jìn)行導(dǎo)航時(shí)元素的順序
<element tabindex="number">
# <base>
<head>
<base  target="_blank">
</head>
<body>

//等于 http://www.w3cschool.cc/images/stickman.gif
</body>
# 行內(nèi)與塊級(jí)元素
行內(nèi):b, td, a, img
塊級(jí):h1, p, ul, table, header, section, footer, aside, nav, main, article, figure
# <noscript>,不支持script時(shí)候顯示
<noscript>
Sorry, your browser does not support JavaScript!
</noscript>

#URL - 統(tǒng)一資源定位器
scheme://host.domain:port/path/filename

scheme - 定義因特網(wǎng)服務(wù)的類型。最常見的類型是 http
host - 定義域主機(jī)(http 的默認(rèn)主機(jī)是 www)
domain - 定義因特網(wǎng)域名,比如 w3cschool.cc
:port - 定義主機(jī)上的端口號(hào)(http 的默認(rèn)端口號(hào)是 80)
path - 定義服務(wù)器上的路徑(如果省略,則文檔必須位于網(wǎng)站的根目錄中)。
filename - 定義文檔/資源的名稱
# 為 IE 瀏覽器添加 HTML5 元素
<!--[if lt IE 9]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
# 畫布(Canvas)
//moveTo(x,y) 定義線條開始坐標(biāo)
//lineTo(x,y) 定義線條結(jié)束坐標(biāo)
//使用 stroke() 方法來繪制線條

//arc(x,y,r,start,stop)  -> arc(95,50,40,0,2*Math.PI)

//font - 定義字體
//fillText(text,x,y) - 在 canvas 上繪制實(shí)心的文本
//strokeText(text,x,y) - 在 canvas 上繪制空心的文本


//createLinearGradient(x,y,x1,y1) - 創(chuàng)建線條漸變
//createRadialGradient(x,y,r,x1,y1,r1) - 創(chuàng)建一個(gè)徑向/圓漸變
//drawImage(image,x,y)

<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;"></canvas>
<script>
  //畫矩形
  var c=document.getElementById("myCanvas");
  var ctx=c.getContext("2d");
  ctx.fillStyle="#FF0000";
  ctx.fillRect(0,0,150,75);

   //畫漸(red -> white)變矩形
  var c=document.getElementById("myCanvas");
  var ctx=c.getContext("2d");
  // Create gradient
  var grd=ctx.createLinearGradient(0,0,200,0);
  grd.addColorStop(0,"red");
  grd.addColorStop(1,"white");
  // Fill with gradient
  ctx.fillStyle=grd;
  ctx.fillRect(10,10,150,80);

  // 畫圖像
  var c=document.getElementById("myCanvas");
  var ctx=c.getContext("2d");
  var img=document.getElementById("scream");
  ctx.drawImage(img,10,10);
</script>
# 拖放(Drag 和 Drop)
<!DOCTYPE HTML>
<html>
<head>
<script>
  //調(diào)用 preventDefault() 來避免瀏覽器對(duì)數(shù)據(jù)的默認(rèn)處理(drop 事件的默認(rèn)行為是以鏈接形式打開)
  //通過 dataTransfer.getData("Text") 方法獲得被拖的數(shù)據(jù)。該方法將返回在 setData() 方法中設(shè)置為相同類型的任何數(shù)據(jù)。
  //被拖數(shù)據(jù)是被拖元素的 id ("drag1")
  //把被拖元素追加到放置元素(目標(biāo)元素)中
function allowDrop(ev){
  //ondragover 事件規(guī)定在何處放置被拖動(dòng)的數(shù)據(jù)
  ev.preventDefault();
}
function drag(ev){
  //dataTransfer.setData() 方法設(shè)置被拖數(shù)據(jù)的數(shù)據(jù)類型和值
  //數(shù)據(jù)類型是 "Text",值是可拖動(dòng)元素的 id ("drag1")
  ev.dataTransfer.setData("Text",ev.target.id);
}
function drop(ev){
  //當(dāng)放置被拖數(shù)據(jù)時(shí),會(huì)發(fā)生 drop 事件
  ev.preventDefault();
  var data=ev.dataTransfer.getData("Text");
  ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>

</body>
</html>
# 地理定位
var x=document.getElementById("demo");
function getLocation()  {  
 if (navigator.geolocation) {    
  navigator.geolocation.getCurrentPosition(showPosition,showError);   
 } else{
  x.innerHTML="該瀏覽器不支持獲取地理位置。";
 } 
}
function showPosition(position)  {  
  x.innerHTML="Latitude: " + position.coords.latitude +   "<br>Longitude: " + position.coords.longitude;  
 // timestamp 響應(yīng)的日期/時(shí)間
 // coords.speed 速度,以米/每秒計(jì)
 // coords.heading 方向,從正北開始以度計(jì)
 // coords.altitudeAccuracy 位置的海拔精度
 // coords.altitude 海拔,海平面以上以米計(jì)
 // coords.accuracy 位置精度
 // coords.longitude 十進(jìn)制數(shù)的經(jīng)度
 // coords.latitude 十進(jìn)制數(shù)的緯度
 }
function showError(error)  {  
 switch(error.code)   
  {    
 case error.PERMISSION_DENIED:     
  x.innerHTML="用戶拒絕對(duì)獲取地理位置的請(qǐng)求。"      
  break;   
 case error.POSITION_UNAVAILABLE:      
  x.innerHTML="位置信息是不可用的。"      
  break;    
 case error.TIMEOUT:      
  x.innerHTML="請(qǐng)求用戶地理位置超時(shí)。"      
  break;    
 case error.UNKNOWN_ERROR:      
  x.innerHTML="未知錯(cuò)誤。"      
  break;    
  }  
}
# <video> 標(biāo)簽(MP4、WebM、Ogg)
//支持的屬性
//autoplay  自動(dòng)播放
//controls  顯示空間
//loop  循環(huán)播放
//muted  靜音
//poster="url" 視頻封面
//preload = [auto|metadata|none] 
//             ↑     ↑       ↑ 
//【
//指示一旦頁面加載,則開始加載音頻/視頻| 
//當(dāng)頁面加載后僅加載音頻/視頻的元數(shù)據(jù)|
//頁面加載后不應(yīng)加載音頻/視頻
// 】
//使用 autoplay 屬性 preload 將被忽略
<video width="320" height="240" controls>
  <source src="movie.mp4" type="video/mp4">
  <source src="movie.ogg" type="video/ogg">
  您的瀏覽器不支持 video 標(biāo)簽。
</video>
# 新的 Input 類型(雞肋,支持不夠好)
color 顏色
date 日期選擇器選擇一個(gè)日期
datetime 選擇一個(gè)日期(UTC 時(shí)間)。
datetime-local 選擇一個(gè)日期和時(shí)間 (無時(shí)區(qū))
email 應(yīng)該包含 e-mail 地址的輸入域
month 選擇一個(gè)月份
number 數(shù)值的輸入域
range 包含一定范圍內(nèi)數(shù)字值的輸入域
search 搜索域
tel 電話號(hào)碼字段
time 允許你選擇一個(gè)時(shí)間
url 允許你選擇一個(gè)時(shí)間
week 選擇周和年
# <datalist> 輸入框提示
<input list="browsers" name="browser">
<datalist id="browsers">
  <option value="Internet Explorer">
  <option value="Firefox">
  <option value="Chrome">
  <option value="Opera">
  <option value="Safari">
</datalist>
# 語義元素
語義元素
<section>
 標(biāo)簽定義文檔中的節(jié)(section、區(qū)段)。
 比如章節(jié)、頁眉、頁腳或文檔中的其他部分,
 section 包含了一組內(nèi)容及其標(biāo)題。

<article> 
標(biāo)簽定義獨(dú)立的內(nèi)容,F(xiàn)orum post,Blog post,News story,Comment

<nav>
 標(biāo)簽定義導(dǎo)航鏈接的部分。

<aside>
 標(biāo)簽定義頁面主區(qū)域內(nèi)容之外的內(nèi)容(比如側(cè)邊欄)
 aside 標(biāo)簽的內(nèi)容應(yīng)與主區(qū)域的內(nèi)容相關(guān).

<header>
描述了文檔的頭部區(qū)域
元素注意用于定義內(nèi)容的介紹展示區(qū)域
在頁面中你可以使用多個(gè)<header> 元素.

<footer>
描述了文檔的底部區(qū)域.
一個(gè)頁腳通常包含文檔的作者,著作權(quán)信息,鏈接的使用條款,聯(lián)系信息等
文檔中你可以使用多個(gè) <footer>元素.

<figure>
規(guī)定獨(dú)立的流內(nèi)容(圖像、圖表、照片、代碼等等)。
元素的內(nèi)容應(yīng)該與主內(nèi)容相關(guān),但如果被刪除,則不應(yīng)對(duì)文檔流產(chǎn)生影響

<figcaption>
 應(yīng)該被置于 "figure" 元素的第一個(gè)或最后一個(gè)子元素的位置
 標(biāo)簽定義 <figure> 元素的標(biāo)題.

# Web 存儲(chǔ)
localStorage - 沒有時(shí)間限制的數(shù)據(jù)存儲(chǔ)
sessionStorage - 針對(duì)一個(gè) session 的數(shù)據(jù)存儲(chǔ),用戶關(guān)閉瀏覽器窗口后,數(shù)據(jù)會(huì)被刪除。
typeof(Storage) == "undefined" 代表不支持,使用前判斷一下是否支持。

localStorage.lastname="Smith";
document.getElementById("result").innerHTML=localStorage.lastname;

sessionStorage.lastname="Smith";
document.getElementById("result").innerHTML=sessionStorage.lastname;

# 應(yīng)用程序緩存
<!DOCTYPE HTML>
<html manifest="demo.appcache">
Manifest 文件
以 "#" 開頭的是注釋行
CACHE MANIFEST - 在此標(biāo)題下列出的文件將在首次下載后進(jìn)行緩存
NETWORK - 在此標(biāo)題下列出的文件需要與服務(wù)器的連接,且不會(huì)被緩存
FALLBACK - 在此標(biāo)題下列出的文件規(guī)定當(dāng)頁面無法訪問時(shí)的回退頁面(比如 404 頁面)

# Web Workers(運(yùn)行在后臺(tái)的 JavaScript)
typeof(Worker)=="undefined" 表示不支持,使用前判斷一下是否支持。

 無法訪問下例 JavaScript 對(duì)象:
 window 對(duì)象
 document 對(duì)象
 parent 對(duì)象
// demo_workers.js
// postMessage() 方法 - 它用于向 HTML 頁面?zhèn)骰匾欢蜗?var i=0;
function timedCount(){
 i=i+1;postMessage(i);
 setTimeout("timedCount()",500);
}
timedCount();
var w;

function startWorker() {
    if(typeof(Worker) !== "undefined") {
        if(typeof(w) == "undefined") {
            w = new Worker("demo_workers.js");
        }
        w.onmessage = function(event) {
            document.getElementById("result").innerHTML = event.data;
        };
    } else {
        document.getElementById("result").innerHTML = "抱歉,你的瀏覽器不支持 Web Workers...";
    }
}

function stopWorker() { 
    w.terminate();
    w = undefined;
}
# 服務(wù)器發(fā)送事件(Server-Sent Events)
網(wǎng)頁自動(dòng)獲取來自服務(wù)器的更新
例子:Facebook/Twitter 更新、估價(jià)更新、新的博文、賽事結(jié)果等。

typeof(EventSource)=="undefined" 表示不支持,使用前判斷一下是否支持。

EventSource 對(duì)象事件:
onopen -> 當(dāng)通往服務(wù)器的連接被打開
onmessage -> 當(dāng)接收到消息
onerror -> 當(dāng)發(fā)生錯(cuò)誤

//EventSource 對(duì)象用于接收服務(wù)器發(fā)送事件通知
//每接收到一次更新,就會(huì)發(fā)生 onmessage 事件
var source=new EventSource("demo_sse.php");
source.onmessage=function(event)  { 
 document.getElementById("result").innerHTML+=event.data + "<br>";  
};

//服務(wù)器端代碼 -> demo_sse.php
<?php
header('Content-Type: text/event-stream');
// Tip: text/event-stream
// 規(guī)定不對(duì)頁面進(jìn)行緩存
header('Cache-Control: no-cache');
$time = date('r');
echo "data: The server time is: {$time}nn";
flush();?>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 接上 關(guān)于HTML/HTML5(一)http://www.itdecent.cn/p/33fc7840c079 學(xué)...
    Amyyy_閱讀 897評(píng)論 0 4
  • +概述:HTML5是W3C 與 WHATWG 合作的結(jié)果。 新特性:1)canvas:用于繪畫;2)video/a...
    南山伐木閱讀 264評(píng)論 0 0
  • HTML5 第一章 HTML5概述 H5是下一代的web開發(fā)的基礎(chǔ). 1.1 web技術(shù)發(fā)展時(shí)間線 1991 HT...
    whitsats閱讀 1,228評(píng)論 0 0
  • 1.1.html5的新特性 用于繪畫的canvas元素 用于媒介回放的video和audio元素 對(duì)本地離線存儲(chǔ)的...
    江邊一蓑煙閱讀 234評(píng)論 0 0
  • 學(xué)習(xí)HTML的最佳網(wǎng)站沒有之一http://www.w3school.com.cn/html/ 關(guān)于HTML/HT...
    Amyyy_閱讀 2,383評(píng)論 0 16

友情鏈接更多精彩內(nèi)容