成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端面試之htm5新特性

teren / 2159人閱讀

摘要:今天來(lái)談?wù)勄岸嗣嬖囍谢旧厦看我幻娴臅r(shí)候都會(huì)被問(wèn)到的一個(gè)問(wèn)題,那就是的新特性。新表單元素元素,表示電話號(hào)碼。和通過(guò)設(shè)置和特性,可以將輸入框的數(shù)值輸入范圍限定在最低值和最高值之間。一旦為某輸入型控件設(shè)置了特性,那么此項(xiàng)必填,否則無(wú)法提交表單。

今天來(lái)談?wù)勄岸嗣嬖囍谢旧厦看我幻娴臅r(shí)候都會(huì)被問(wèn)到的一個(gè)問(wèn)題,那就是html5的新特性。這個(gè)是學(xué)習(xí)前端必須掌握的基礎(chǔ)知識(shí)。

新增的元素

html5新增了一些語(yǔ)義化更好的標(biāo)簽元素。

結(jié)構(gòu)元素

article元素,表示頁(yè)面中的一塊與上下文不相關(guān)的獨(dú)立內(nèi)容,比如博客中的一篇文章。

aside元素,表示article內(nèi)容之外的內(nèi)容,輔助信息。

header元素,表示頁(yè)面中一個(gè)內(nèi)容區(qū)塊或整個(gè)頁(yè)面的頁(yè)眉。

hgroup元素,用于對(duì)頁(yè)面中一個(gè)區(qū)塊或整個(gè)頁(yè)面的標(biāo)題進(jìn)行組合。

footer元素,表示頁(yè)面中一個(gè)內(nèi)容區(qū)塊或整個(gè)頁(yè)面的頁(yè)腳。

figure元素,表示媒介內(nèi)容的分組,以及它們的標(biāo)題。

section元素,表示頁(yè)面中一個(gè)內(nèi)容區(qū)塊,比如章節(jié)。

nav元素,表示頁(yè)面中的導(dǎo)航鏈接。

其他元素

video元素,用來(lái)定義視頻。

audio元素,用來(lái)定義音頻。

canvas元素,用來(lái)展示圖形,該元素本身沒(méi)有行為,僅提供一塊畫布。

embed元素,用來(lái)插入各種多媒體,格式可以是Midi、Wav、AIFF、AU、MP3等。

mark元素,用來(lái)展示高亮的文字。

progress元素,用來(lái)展示任何類型的任務(wù)的進(jìn)度。

meter元素,表示度量衡,定義預(yù)定義范圍內(nèi)的度量。

time元素,用來(lái)展示日期或者時(shí)間。

command元素,表示命令按鈕。

details元素,用來(lái)展示用戶要求得到并且可以得到的細(xì)節(jié)信息。

summary元素,用來(lái)為details元素定義可見(jiàn)的標(biāo)題。

datalist元素,用來(lái)展示可選的數(shù)據(jù)列表,與input元素配合使用,可以制作出輸入值的下拉列表。

datagrid元素,也用來(lái)展示可選的數(shù)據(jù)列表,以樹形列表的形式來(lái)顯示。

keygen元素,表示生成密匙。

output元素,表示不同類型的輸出。

source元素,為媒介元素定義媒介資源。

menu元素,表示菜單列表。

ruby元素,表示ruby注釋, rt元素表示字符的解釋或發(fā)音。 rp元素在ruby注釋中使用,以定義不支持ruby元素的瀏覽器所顯示的內(nèi)容。

wbr元素,表示軟換行。與br元素的區(qū)別是:br元素表示此處必須換行,而wbr元素的意思是瀏覽器窗口或父級(jí)元素的寬度夠?qū)挄r(shí)。不進(jìn)行換行,而當(dāng)寬度不夠時(shí),主動(dòng)在此處進(jìn)行換行。

bdi元素,定義文本的文本方向,使其脫離其周圍文本的方向設(shè)置。

dialog元素,表示對(duì)話框或窗口。

廢除的元素

html5中廢除了一些純表現(xiàn)的元素,只有部分瀏覽器支持的元素還有一些會(huì)對(duì)可用性產(chǎn)生負(fù)面影響的元素。

純表現(xiàn)元素

純表現(xiàn)的元素就是那些可以用css替代的元素。basefont、big、center、font、s、strike、tt、u這些元素,他們的功能都是純粹為頁(yè)面展示服務(wù)的,html5提倡把頁(yè)面展示性功能放在css樣式表中統(tǒng)一處理,所以將這些元素廢除,用css樣式進(jìn)行替代。

對(duì)可用性產(chǎn)生負(fù)面影響的元素

對(duì)于frameset元素、frame元素與noframes元素,由于frame框架對(duì)網(wǎng)頁(yè)可用性存在負(fù)面影響,在html5中已不支持frame框架,只支持iframe框架,html5中同時(shí)將frameset、frame和noframes這三個(gè)元素廢除。

只有部分瀏覽器支持的元素

對(duì)于applet、bgsound、blink、marquee等元素,由于只有部分瀏覽器支持,特別是bgsound元素以及marquee元素,只被IE支持,所以在html5中被廢除。其中applet元素可由embed元素或object元素替代,bgsound元素可由audio元素替代,marquee可以由javascript編程的方式替代。

新增的API Canvas API

上文提到的canvas元素可以為頁(yè)面提供一塊畫布來(lái)展示圖形。結(jié)合Canvas API,就可以在這塊畫布上動(dòng)態(tài)生成和展示各種圖形、圖表、圖像以及動(dòng)畫了。Canvas本質(zhì)上是位圖畫布,不可縮放,繪制出來(lái)的對(duì)象不屬于頁(yè)面DOM結(jié)構(gòu)或者任何命名空間。不需要將每個(gè)圖元當(dāng)做對(duì)象存儲(chǔ),執(zhí)行性能非常好。

利用Canvas API進(jìn)行繪圖,首先要獲取canvas元素的上下文,然后用該上下文中封裝的各種繪圖功能進(jìn)行繪圖。

替代內(nèi)容
SVG

SVG是html5的另一項(xiàng)圖形功能,它是一種標(biāo)準(zhǔn)的矢量圖形,是一種文件格式,有自己的API。html5引入了內(nèi)聯(lián)SVG,使得SVG元素可以直接出現(xiàn)在html標(biāo)記中。

音頻和視頻

audio和video元素的出現(xiàn)讓html5的媒體應(yīng)用多了新選擇,開發(fā)人員不必使用插件就能播放音頻和視頻。對(duì)于這兩個(gè)元素,html5規(guī)范提供了通用、完整、可腳本化控制的API。
html5規(guī)范出來(lái)之前,在頁(yè)面中播放視頻的典型方式是使用Flash、QuickTime或者Windows Media插件往html中嵌入音頻視頻,相對(duì)這種方式,使用html5的媒體標(biāo)簽有兩大好處。

作為瀏覽器原生支持的功能,新的audio和video元素?zé)o需安裝。

媒體元素想Web頁(yè)面提供了通用、集成和可腳本化控制的API。

瀏覽器支持性檢測(cè)

瀏覽器檢測(cè)是否支持audio元素或者video元素最簡(jiǎn)單的方式是用腳本動(dòng)態(tài)創(chuàng)建它,然后檢測(cè)特定函數(shù)是否存在。

var hasVideo = !!(document.createElement("video").canPlayType);
Geolocation API

html5的Geolocation API(地理定位API),可以請(qǐng)求用戶共享他們的位置。使用方法非常簡(jiǎn)單,如果用戶同意,瀏覽器就會(huì)返回位置信息,該位置信息是通過(guò)支持html5地理定位功能的底層設(shè)備(如筆記本電腦或手機(jī))提供給瀏覽器的。位置信息由緯度、經(jīng)度坐標(biāo)和一些其他元數(shù)據(jù)組成。

位置信息從何而來(lái)

Geolocation API不指定設(shè)備使用哪種底層技術(shù)來(lái)定位應(yīng)用程序的用戶。相反,它只是用于檢索位置信息的API,而且通過(guò)該API檢索到的數(shù)據(jù)只具有某種程度的準(zhǔn)確性,并不能保證設(shè)備返回的位置是精確的。設(shè)備可以使用下列數(shù)據(jù)源:

IP地址

三維坐標(biāo)

GPS

從RFID、WiFi和藍(lán)牙到WiFi的MAC地址

GSM或CDMA手機(jī)的ID

用戶自定義數(shù)據(jù)

使用方法
// 一次更新
navigator.geolocation.getCurrentPosition(updateLocation, handleLocationEror);
function updateLocation(position) {
    var latitude = position.coords.latitude;     // 緯度
    var longitude = position.coords.longitude;   // 經(jīng)度
    var accuracy = position.coords.accuracy;     // 準(zhǔn)確度
    var timestamp = position.coords.timestamp;   // 時(shí)間戳
}
// 錯(cuò)誤處理函數(shù)
function handleLocationEror(error) {
    ....
}
// 重復(fù)更新
navigator.geolocation.watchPosition(updateLocation, handleLocationEror);
// 不再接受位置更新
navigator.geolocation.clearWatch(watchId);
Communication API 跨文檔消息傳遞

出于安全方面的考慮,運(yùn)行在同一瀏覽器中的框架、標(biāo)簽頁(yè)、窗口間的通信一直都受到了嚴(yán)格的限制。然而,現(xiàn)實(shí)中存在一些合理的讓不同站點(diǎn)的內(nèi)容能在瀏覽器內(nèi)進(jìn)行交互的需求。這種情形下,如果瀏覽器內(nèi)部能提供直接的通信機(jī)制,就能更好地組織這些應(yīng)用。
html5中引入了一種新功能,跨文檔消息通信,可以確保iframe、標(biāo)簽頁(yè)、窗口間安全地進(jìn)行跨源通信。postMessage API為發(fā)送消息的標(biāo)準(zhǔn)方式,發(fā)送消息非常簡(jiǎn)單:

window.postMessage("Hello, world", "http://www.example.com/");

接收消息時(shí),僅需在頁(yè)面中增加一個(gè)事件處理函數(shù)。當(dāng)某個(gè)消息到達(dá)時(shí),通過(guò)檢查消息的來(lái)源來(lái)決定是否對(duì)這條消息進(jìn)行處理。

window.addEventListener("message", messageHandler, true);
function messageHandler(e) {
    switch(e.origin) {
        case "friend.example.com":
        // 處理消息
        processMessage(e.data);
        break;
    default: 
        // 消息來(lái)源無(wú)法識(shí)別
        // 消息被忽略
    }
}

消息事件是一個(gè)擁有data(數(shù)據(jù))和origin(源)屬性的DOM事件。data屬性是發(fā)送方傳遞的實(shí)際消息,而origin屬性是發(fā)送來(lái)源。

XMLHttpRequest Level2

XMLHttpRequest API使得Ajax技術(shù)成為可能,作為XMLHttpRequest的改進(jìn)版,XMLHttpRequest Level2在功能上有了很大的改進(jìn)。主要兩個(gè)方面:

跨源XMLHttpRequest

進(jìn)度事件

跨源XMLHttpRequest

過(guò)去,XMLHttpRequest僅限于同源通信,XMLHttpRequest Level2通過(guò)CORS實(shí)現(xiàn)了跨源XMLHttpRequest。跨源HTTP請(qǐng)求包含一個(gè)Origin頭部,它為服務(wù)器提供HTTP請(qǐng)求的源信息。

WebSockets API

WebSockets是html5中最強(qiáng)大的通信功能,它定義了一個(gè)全雙工通信信道,僅通過(guò)Web上的一個(gè)Socket即可進(jìn)行通信。

WebSockets握手

為了建立WebSockets通信,客戶端和服務(wù)器在初始握手時(shí),將HTTP協(xié)議升級(jí)到WebSocket協(xié)議。一旦連接建立成功,就可以在全雙工模式下在客戶端和服務(wù)器之間來(lái)回傳遞WebSocket消息。

WebSockets接口

除了對(duì)WebSockets協(xié)議定義外,該規(guī)范還同時(shí)定義了用于JavaScript應(yīng)用程序的WebSocket接口。WebSockets接口的使用很簡(jiǎn)單。要連接遠(yuǎn)程主機(jī),只需要新建一個(gè)WebSocket實(shí)例,提供希望連接的對(duì)端URL。

Forms API 新表單元素

tel元素,表示電話號(hào)碼。

email元素,表示電子郵件地址文本框。

url元素,表示網(wǎng)頁(yè)的url。

search元素,用于搜索引擎,比如在站點(diǎn)頂部顯示的搜索框。

range元素,特定值范圍內(nèi)的數(shù)值選擇器,典型的顯示方式是滑動(dòng)條。

number元素,只包含數(shù)值的字段。

未來(lái)的表單元素

color元素,顏色選擇器,基于調(diào)色盤或者取色板進(jìn)行選擇。

datetime元素,顯示完整的日期和時(shí)間,包括時(shí)區(qū)。

datetime-local,顯示日期和時(shí)間。

time元素,不含時(shí)區(qū)的時(shí)間選擇器和指示器。

date元素,日期選擇器。

week元素,某年中的周選擇器。

month元素,某年中的月選擇器。

新的表單特性和函數(shù) placeholder

當(dāng)用戶還沒(méi)輸入值的時(shí)候,輸入型控件可以通過(guò)placeholder特性向用戶顯示描述性說(shuō)明或者提示信息。

autocomplete

瀏覽器通過(guò)autocomplete特性能夠知曉是否應(yīng)該保存輸入值以備將來(lái)使用。

autofocus

通過(guò)autofocus特性可以指定某個(gè)表單元素獲得輸入焦點(diǎn),每個(gè)頁(yè)面上只允許出現(xiàn)一個(gè)autofocus特性,如果設(shè)置了多個(gè),則相當(dāng)于未指定此行為。

spellcheck

可對(duì)帶有文本內(nèi)容的輸入控件和textarea空間控制spellcheck屬性。設(shè)置完后,會(huì)詢問(wèn)瀏覽器是否應(yīng)該給出拼寫檢查結(jié)果反饋。spellcheck屬性需要賦值。

list特性和datalist元素

通過(guò)組合使用list特性和datalist元素,開發(fā)人員能夠?yàn)槟硞€(gè)輸入型控件構(gòu)造一張選值列表。


    
    

min和max

通過(guò)設(shè)置min和max特性,可以將range輸入框的數(shù)值輸入范圍限定在最低值和最高值之間。可以只設(shè)置一個(gè),也可以兩個(gè)都設(shè)置,也可以都不設(shè)置。

step

對(duì)于輸入型控件,設(shè)置其step特性能夠指定輸入值遞增或者遞減的粒度。

required

一旦為某輸入型控件設(shè)置了required特性,那么此項(xiàng)必填,否則無(wú)法提交表單。

拖放API draggable屬性

如果網(wǎng)頁(yè)元素的draggable元素為true,這個(gè)元素就是可以拖動(dòng)的。

Draggable Div
拖放事件

拖動(dòng)過(guò)程會(huì)觸發(fā)很多事件,主要有下面這些:

dragstart:網(wǎng)頁(yè)元素開始拖動(dòng)時(shí)觸發(fā)。

drag:被拖動(dòng)的元素在拖動(dòng)過(guò)程中持續(xù)觸發(fā)。

dragenter:被拖動(dòng)的元素進(jìn)入目標(biāo)元素時(shí)觸發(fā),應(yīng)在目標(biāo)元素監(jiān)聽(tīng)該事件。

dragleave:被拖動(dòng)的元素離開目標(biāo)元素時(shí)觸發(fā),應(yīng)在目標(biāo)元素監(jiān)聽(tīng)該事件。

dragover:被拖動(dòng)元素停留在目標(biāo)元素之中時(shí)持續(xù)觸發(fā),應(yīng)在目標(biāo)元素監(jiān)聽(tīng)該事件。

drap:被拖動(dòng)元素或從文件系統(tǒng)選中的文件,拖放落下時(shí)觸發(fā)。

dragend:網(wǎng)頁(yè)元素拖動(dòng)結(jié)束時(shí)觸發(fā)。

draggableElement.addEventListener("dragstart", function(e) {
    console.log("拖動(dòng)開始!");
});
dataTransfer對(duì)象

拖動(dòng)過(guò)程中,回調(diào)函數(shù)接受的事件參數(shù),有一個(gè)dataTransfer屬性,指向一個(gè)對(duì)象,包含與拖動(dòng)相關(guān)的各種信息。

draggableElement.addEventListener("dragstart", function(event) {
    event.dataTransfer.setData("text", "Hello World!");
});

dataTransfer對(duì)象的屬性有:

dropEffect:拖放的操作類型,決定了瀏覽器如何顯示鼠標(biāo)形狀,可能的值為copy、move、link和none。

effectAllowed:指定所允許的操作,可能的值為copy、move、link、copyLink、copyMove、linkMove、all、none和uninitialized(默認(rèn)值,等同于all,即允許一切操作)。

files:包含一個(gè)FileList對(duì)象,表示拖放所涉及的文件,主要用于處理從文件系統(tǒng)拖入瀏覽器的文件。

types:儲(chǔ)存在DataTransfer對(duì)象的數(shù)據(jù)的類型。

dataTransfer對(duì)象的方法有:

setData(format, data):在dataTransfer對(duì)象上儲(chǔ)存數(shù)據(jù)。第一個(gè)參數(shù)format用來(lái)指定儲(chǔ)存的數(shù)據(jù)類型,比如text、url、text/html等。

getData(format):從dataTransfer對(duì)象取出數(shù)據(jù)。

clearData(format):清除dataTransfer對(duì)象所儲(chǔ)存的數(shù)據(jù)。如果指定了format參數(shù),則只清除該格式的數(shù)據(jù),否則清除所有數(shù)據(jù)。

setDragImage(imgElement, x, y):指定拖動(dòng)過(guò)程中顯示的圖像。默認(rèn)情況下,許多瀏覽器顯示一個(gè)被拖動(dòng)元素的半透明版本。參數(shù)imgElement必須是一個(gè)圖像元素,而不是指向圖像的路徑,參數(shù)x和y表示圖像相對(duì)于鼠標(biāo)的位置。

Web Workers API

Javascript是單線程的。因此,持續(xù)時(shí)間較長(zhǎng)的計(jì)算,回阻塞UI線程,進(jìn)而導(dǎo)致無(wú)法在文本框中填入文本,單擊按鈕等,并且在大多數(shù)瀏覽器中,除非控制權(quán)返回,否則無(wú)法打開新的標(biāo)簽頁(yè)。該問(wèn)題的解決方案是Web Workers,可以讓W(xué)eb應(yīng)用程序具備后臺(tái)處理能力,對(duì)多線程的支持性非常好。

但是在Web Workers中執(zhí)行的腳本不能訪問(wèn)該頁(yè)面的window對(duì)象,也就是Web Workers不能直接訪問(wèn)Web頁(yè)面和DOM API。雖然Web Workers不會(huì)導(dǎo)致瀏覽器UI停止響應(yīng),但是仍然會(huì)消耗CPU周期,導(dǎo)致系統(tǒng)反應(yīng)速度變慢。

Web Storage API

Web Storage是html5引入的一個(gè)非常重要的功能,可以在客戶端本地存儲(chǔ)數(shù)據(jù),類似html4的cookie,但可實(shí)現(xiàn)功能要比cookie強(qiáng)大的多。

sessionStorage

sessionStorage將數(shù)據(jù)保存在session中,瀏覽器關(guān)閉數(shù)據(jù)就消失。

localStorage

localStorage則一直將數(shù)據(jù)保存在客戶端本地,除非手動(dòng)刪除,否則一直保存。
不管是sessionStorage,還是localStorage,可使用的API相同,常用的有如下幾個(gè)(以localStorage為例):

保存數(shù)據(jù):localStorage.setItem(key,value);

讀取數(shù)據(jù):localStorage.getItem(key);

刪除單個(gè)數(shù)據(jù):localStorage.removeItem(key);

刪除所有數(shù)據(jù):localStorage.clear();

得到某個(gè)索引的key:localStorage.key(index);

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/50964.html

相關(guān)文章

  • htm5特性(轉(zhuǎn))

    摘要:轉(zhuǎn)自今天來(lái)談?wù)勄岸嗣嬖囍谢旧厦看我幻娑紩?huì)被問(wèn)到的一個(gè)問(wèn)題,那就是的新特性了。元素,表示生成密匙。和通過(guò)設(shè)置和特性,可以將輸入框的數(shù)值輸入范圍限定在最低值和最高值之間。一旦為某輸入型控件設(shè)置了特性,那么此項(xiàng)必填,否則無(wú)法提交表單。 轉(zhuǎn)自:http://hyuhan.com/2017/07/06/... 今天來(lái)談?wù)勄岸嗣嬖囍谢旧厦看我幻娑紩?huì)被問(wèn)到的一個(gè)問(wèn)題,那就是html5的新特性了。...

    focusj 評(píng)論0 收藏0
  • 2017-07-07 前端日?qǐng)?bào)

    摘要:前端日?qǐng)?bào)精選了解中的全局對(duì)象和全局作用域張?chǎng)涡聆慰臻g鑫生活子進(jìn)程你應(yīng)該知道的一切直出內(nèi)存泄露問(wèn)題的追查實(shí)踐我他喵的到底要怎樣才能在生產(chǎn)環(huán)境中用上模塊化騰訊前端大會(huì)大咖說(shuō)大咖干貨,不再錯(cuò)過(guò)發(fā)布發(fā)布中文翻譯在使用進(jìn)行本地開發(fā)代碼 2017-07-07 前端日?qǐng)?bào) 精選 了解JS中的全局對(duì)象window.self和全局作用域self ? 張?chǎng)涡?鑫空間-鑫生活Node.js 子進(jìn)程:你應(yīng)該知道...

    import. 評(píng)論0 收藏0
  • H5學(xué)習(xí)

    摘要:為此決定自研一個(gè)富文本編輯器。本文,主要介紹如何實(shí)現(xiàn)富文本編輯器,和解決一些不同瀏覽器和設(shè)備之間的。 對(duì)ES6Generator函數(shù)的理解 Generator 函數(shù)是 ES6 提供的一種異步編程解決方案,語(yǔ)法行為與傳統(tǒng)函數(shù)完全不同。 JavaScript 設(shè)計(jì)模式 ② 巧用工廠模式和創(chuàng)建者模式 我為什么把他們兩個(gè)放在一起講?我覺(jué)得這兩個(gè)設(shè)計(jì)模式有相似之處,有時(shí)候會(huì)一個(gè)設(shè)計(jì)模式不能滿...

    aristark 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<