摘要:今天來談談前端面試中基本上每次一面的時候都會被問到的一個問題,那就是的新特性。新表單元素元素,表示電話號碼。和通過設置和特性,可以將輸入框的數值輸入范圍限定在最低值和最高值之間。一旦為某輸入型控件設置了特性,那么此項必填,否則無法提交表單。
今天來談談前端面試中基本上每次一面的時候都會被問到的一個問題,那就是html5的新特性。這個是學習前端必須掌握的基礎知識。
新增的元素html5新增了一些語義化更好的標簽元素。
結構元素article元素,表示頁面中的一塊與上下文不相關的獨立內容,比如博客中的一篇文章。
aside元素,表示article內容之外的內容,輔助信息。
header元素,表示頁面中一個內容區塊或整個頁面的頁眉。
hgroup元素,用于對頁面中一個區塊或整個頁面的標題進行組合。
footer元素,表示頁面中一個內容區塊或整個頁面的頁腳。
figure元素,表示媒介內容的分組,以及它們的標題。
section元素,表示頁面中一個內容區塊,比如章節。
nav元素,表示頁面中的導航鏈接。
其他元素video元素,用來定義視頻。
audio元素,用來定義音頻。
canvas元素,用來展示圖形,該元素本身沒有行為,僅提供一塊畫布。
embed元素,用來插入各種多媒體,格式可以是Midi、Wav、AIFF、AU、MP3等。
mark元素,用來展示高亮的文字。
progress元素,用來展示任何類型的任務的進度。
meter元素,表示度量衡,定義預定義范圍內的度量。
time元素,用來展示日期或者時間。
command元素,表示命令按鈕。
details元素,用來展示用戶要求得到并且可以得到的細節信息。
summary元素,用來為details元素定義可見的標題。
datalist元素,用來展示可選的數據列表,與input元素配合使用,可以制作出輸入值的下拉列表。
datagrid元素,也用來展示可選的數據列表,以樹形列表的形式來顯示。
keygen元素,表示生成密匙。
output元素,表示不同類型的輸出。
source元素,為媒介元素定義媒介資源。
menu元素,表示菜單列表。
ruby元素,表示ruby注釋, rt元素表示字符的解釋或發音。 rp元素在ruby注釋中使用,以定義不支持ruby元素的瀏覽器所顯示的內容。
wbr元素,表示軟換行。與br元素的區別是:br元素表示此處必須換行,而wbr元素的意思是瀏覽器窗口或父級元素的寬度夠寬時。不進行換行,而當寬度不夠時,主動在此處進行換行。
bdi元素,定義文本的文本方向,使其脫離其周圍文本的方向設置。
dialog元素,表示對話框或窗口。
廢除的元素html5中廢除了一些純表現的元素,只有部分瀏覽器支持的元素還有一些會對可用性產生負面影響的元素。
純表現元素純表現的元素就是那些可以用css替代的元素。basefont、big、center、font、s、strike、tt、u這些元素,他們的功能都是純粹為頁面展示服務的,html5提倡把頁面展示性功能放在css樣式表中統一處理,所以將這些元素廢除,用css樣式進行替代。
對可用性產生負面影響的元素對于frameset元素、frame元素與noframes元素,由于frame框架對網頁可用性存在負面影響,在html5中已不支持frame框架,只支持iframe框架,html5中同時將frameset、frame和noframes這三個元素廢除。
只有部分瀏覽器支持的元素對于applet、bgsound、blink、marquee等元素,由于只有部分瀏覽器支持,特別是bgsound元素以及marquee元素,只被IE支持,所以在html5中被廢除。其中applet元素可由embed元素或object元素替代,bgsound元素可由audio元素替代,marquee可以由javascript編程的方式替代。
新增的API Canvas API上文提到的canvas元素可以為頁面提供一塊畫布來展示圖形。結合Canvas API,就可以在這塊畫布上動態生成和展示各種圖形、圖表、圖像以及動畫了。Canvas本質上是位圖畫布,不可縮放,繪制出來的對象不屬于頁面DOM結構或者任何命名空間。不需要將每個圖元當做對象存儲,執行性能非常好。
利用Canvas API進行繪圖,首先要獲取canvas元素的上下文,然后用該上下文中封裝的各種繪圖功能進行繪圖。
SVG
SVG是html5的另一項圖形功能,它是一種標準的矢量圖形,是一種文件格式,有自己的API。html5引入了內聯SVG,使得SVG元素可以直接出現在html標記中。
音頻和視頻audio和video元素的出現讓html5的媒體應用多了新選擇,開發人員不必使用插件就能播放音頻和視頻。對于這兩個元素,html5規范提供了通用、完整、可腳本化控制的API。
html5規范出來之前,在頁面中播放視頻的典型方式是使用Flash、QuickTime或者Windows Media插件往html中嵌入音頻視頻,相對這種方式,使用html5的媒體標簽有兩大好處。
作為瀏覽器原生支持的功能,新的audio和video元素無需安裝。
媒體元素想Web頁面提供了通用、集成和可腳本化控制的API。
瀏覽器支持性檢測瀏覽器檢測是否支持audio元素或者video元素最簡單的方式是用腳本動態創建它,然后檢測特定函數是否存在。
var hasVideo = !!(document.createElement("video").canPlayType);Geolocation API
html5的Geolocation API(地理定位API),可以請求用戶共享他們的位置。使用方法非常簡單,如果用戶同意,瀏覽器就會返回位置信息,該位置信息是通過支持html5地理定位功能的底層設備(如筆記本電腦或手機)提供給瀏覽器的。位置信息由緯度、經度坐標和一些其他元數據組成。
位置信息從何而來Geolocation API不指定設備使用哪種底層技術來定位應用程序的用戶。相反,它只是用于檢索位置信息的API,而且通過該API檢索到的數據只具有某種程度的準確性,并不能保證設備返回的位置是精確的。設備可以使用下列數據源:
IP地址
三維坐標
GPS
從RFID、WiFi和藍牙到WiFi的MAC地址
GSM或CDMA手機的ID
用戶自定義數據
使用方法// 一次更新 navigator.geolocation.getCurrentPosition(updateLocation, handleLocationEror); function updateLocation(position) { var latitude = position.coords.latitude; // 緯度 var longitude = position.coords.longitude; // 經度 var accuracy = position.coords.accuracy; // 準確度 var timestamp = position.coords.timestamp; // 時間戳 } // 錯誤處理函數 function handleLocationEror(error) { .... } // 重復更新 navigator.geolocation.watchPosition(updateLocation, handleLocationEror); // 不再接受位置更新 navigator.geolocation.clearWatch(watchId);Communication API 跨文檔消息傳遞
出于安全方面的考慮,運行在同一瀏覽器中的框架、標簽頁、窗口間的通信一直都受到了嚴格的限制。然而,現實中存在一些合理的讓不同站點的內容能在瀏覽器內進行交互的需求。這種情形下,如果瀏覽器內部能提供直接的通信機制,就能更好地組織這些應用。
html5中引入了一種新功能,跨文檔消息通信,可以確保iframe、標簽頁、窗口間安全地進行跨源通信。postMessage API為發送消息的標準方式,發送消息非常簡單:
window.postMessage("Hello, world", "http://www.example.com/");
接收消息時,僅需在頁面中增加一個事件處理函數。當某個消息到達時,通過檢查消息的來源來決定是否對這條消息進行處理。
window.addEventListener("message", messageHandler, true); function messageHandler(e) { switch(e.origin) { case "friend.example.com": // 處理消息 processMessage(e.data); break; default: // 消息來源無法識別 // 消息被忽略 } }
消息事件是一個擁有data(數據)和origin(源)屬性的DOM事件。data屬性是發送方傳遞的實際消息,而origin屬性是發送來源。
XMLHttpRequest Level2XMLHttpRequest API使得Ajax技術成為可能,作為XMLHttpRequest的改進版,XMLHttpRequest Level2在功能上有了很大的改進。主要兩個方面:
跨源XMLHttpRequest
進度事件
跨源XMLHttpRequest過去,XMLHttpRequest僅限于同源通信,XMLHttpRequest Level2通過CORS實現了跨源XMLHttpRequest。跨源HTTP請求包含一個Origin頭部,它為服務器提供HTTP請求的源信息。
WebSockets APIWebSockets是html5中最強大的通信功能,它定義了一個全雙工通信信道,僅通過Web上的一個Socket即可進行通信。
WebSockets握手為了建立WebSockets通信,客戶端和服務器在初始握手時,將HTTP協議升級到WebSocket協議。一旦連接建立成功,就可以在全雙工模式下在客戶端和服務器之間來回傳遞WebSocket消息。
WebSockets接口除了對WebSockets協議定義外,該規范還同時定義了用于JavaScript應用程序的WebSocket接口。WebSockets接口的使用很簡單。要連接遠程主機,只需要新建一個WebSocket實例,提供希望連接的對端URL。
Forms API 新表單元素tel元素,表示電話號碼。
email元素,表示電子郵件地址文本框。
url元素,表示網頁的url。
search元素,用于搜索引擎,比如在站點頂部顯示的搜索框。
range元素,特定值范圍內的數值選擇器,典型的顯示方式是滑動條。
number元素,只包含數值的字段。
未來的表單元素color元素,顏色選擇器,基于調色盤或者取色板進行選擇。
datetime元素,顯示完整的日期和時間,包括時區。
datetime-local,顯示日期和時間。
time元素,不含時區的時間選擇器和指示器。
date元素,日期選擇器。
week元素,某年中的周選擇器。
month元素,某年中的月選擇器。
新的表單特性和函數 placeholder當用戶還沒輸入值的時候,輸入型控件可以通過placeholder特性向用戶顯示描述性說明或者提示信息。
autocomplete瀏覽器通過autocomplete特性能夠知曉是否應該保存輸入值以備將來使用。
autofocus通過autofocus特性可以指定某個表單元素獲得輸入焦點,每個頁面上只允許出現一個autofocus特性,如果設置了多個,則相當于未指定此行為。
spellcheck可對帶有文本內容的輸入控件和textarea空間控制spellcheck屬性。設置完后,會詢問瀏覽器是否應該給出拼寫檢查結果反饋。spellcheck屬性需要賦值。
list特性和datalist元素通過組合使用list特性和datalist元素,開發人員能夠為某個輸入型控件構造一張選值列表。
min和max
通過設置min和max特性,可以將range輸入框的數值輸入范圍限定在最低值和最高值之間。可以只設置一個,也可以兩個都設置,也可以都不設置。
step對于輸入型控件,設置其step特性能夠指定輸入值遞增或者遞減的粒度。
required一旦為某輸入型控件設置了required特性,那么此項必填,否則無法提交表單。
拖放API draggable屬性如果網頁元素的draggable元素為true,這個元素就是可以拖動的。
拖放事件Draggable Div
拖動過程會觸發很多事件,主要有下面這些:
dragstart:網頁元素開始拖動時觸發。
drag:被拖動的元素在拖動過程中持續觸發。
dragenter:被拖動的元素進入目標元素時觸發,應在目標元素監聽該事件。
dragleave:被拖動的元素離開目標元素時觸發,應在目標元素監聽該事件。
dragover:被拖動元素停留在目標元素之中時持續觸發,應在目標元素監聽該事件。
drap:被拖動元素或從文件系統選中的文件,拖放落下時觸發。
dragend:網頁元素拖動結束時觸發。
draggableElement.addEventListener("dragstart", function(e) { console.log("拖動開始!"); });dataTransfer對象
拖動過程中,回調函數接受的事件參數,有一個dataTransfer屬性,指向一個對象,包含與拖動相關的各種信息。
draggableElement.addEventListener("dragstart", function(event) { event.dataTransfer.setData("text", "Hello World!"); });
dataTransfer對象的屬性有:
dropEffect:拖放的操作類型,決定了瀏覽器如何顯示鼠標形狀,可能的值為copy、move、link和none。
effectAllowed:指定所允許的操作,可能的值為copy、move、link、copyLink、copyMove、linkMove、all、none和uninitialized(默認值,等同于all,即允許一切操作)。
files:包含一個FileList對象,表示拖放所涉及的文件,主要用于處理從文件系統拖入瀏覽器的文件。
types:儲存在DataTransfer對象的數據的類型。
dataTransfer對象的方法有:
setData(format, data):在dataTransfer對象上儲存數據。第一個參數format用來指定儲存的數據類型,比如text、url、text/html等。
getData(format):從dataTransfer對象取出數據。
clearData(format):清除dataTransfer對象所儲存的數據。如果指定了format參數,則只清除該格式的數據,否則清除所有數據。
setDragImage(imgElement, x, y):指定拖動過程中顯示的圖像。默認情況下,許多瀏覽器顯示一個被拖動元素的半透明版本。參數imgElement必須是一個圖像元素,而不是指向圖像的路徑,參數x和y表示圖像相對于鼠標的位置。
Web Workers APIJavascript是單線程的。因此,持續時間較長的計算,回阻塞UI線程,進而導致無法在文本框中填入文本,單擊按鈕等,并且在大多數瀏覽器中,除非控制權返回,否則無法打開新的標簽頁。該問題的解決方案是Web Workers,可以讓Web應用程序具備后臺處理能力,對多線程的支持性非常好。
但是在Web Workers中執行的腳本不能訪問該頁面的window對象,也就是Web Workers不能直接訪問Web頁面和DOM API。雖然Web Workers不會導致瀏覽器UI停止響應,但是仍然會消耗CPU周期,導致系統反應速度變慢。
Web Storage APIWeb Storage是html5引入的一個非常重要的功能,可以在客戶端本地存儲數據,類似html4的cookie,但可實現功能要比cookie強大的多。
sessionStoragesessionStorage將數據保存在session中,瀏覽器關閉數據就消失。
localStoragelocalStorage則一直將數據保存在客戶端本地,除非手動刪除,否則一直保存。
不管是sessionStorage,還是localStorage,可使用的API相同,常用的有如下幾個(以localStorage為例):
保存數據:localStorage.setItem(key,value);
讀取數據:localStorage.getItem(key);
刪除單個數據:localStorage.removeItem(key);
刪除所有數據:localStorage.clear();
得到某個索引的key:localStorage.key(index);
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/50964.html
摘要:轉自今天來談談前端面試中基本上每次一面都會被問到的一個問題,那就是的新特性了。元素,表示生成密匙。和通過設置和特性,可以將輸入框的數值輸入范圍限定在最低值和最高值之間。一旦為某輸入型控件設置了特性,那么此項必填,否則無法提交表單。 轉自:http://hyuhan.com/2017/07/06/... 今天來談談前端面試中基本上每次一面都會被問到的一個問題,那就是html5的新特性了。...
摘要:前端日報精選了解中的全局對象和全局作用域張鑫旭鑫空間鑫生活子進程你應該知道的一切直出內存泄露問題的追查實踐我他喵的到底要怎樣才能在生產環境中用上模塊化騰訊前端大會大咖說大咖干貨,不再錯過發布發布中文翻譯在使用進行本地開發代碼 2017-07-07 前端日報 精選 了解JS中的全局對象window.self和全局作用域self ? 張鑫旭-鑫空間-鑫生活Node.js 子進程:你應該知道...
閱讀 2014·2021-08-21 14:09
閱讀 482·2019-08-30 15:44
閱讀 2106·2019-08-29 16:32
閱讀 1370·2019-08-29 15:36
閱讀 3433·2019-08-29 12:43
閱讀 2776·2019-08-29 11:14
閱讀 429·2019-08-28 18:26
閱讀 2246·2019-08-26 13:57