""
括起來checked="checked"
而不是 checked
)<!DOCTYPE>
聲明位於 HTML 文檔中的第一行,處於 <html>
標籤以前。告知瀏覽器的解析器使用標準模式渲染文檔。DOCTYPE 不存在或格式不正確會致使文檔以兼容模式呈現。// 返回當前文檔關聯的文檔類型定義(DTD),若是當前文檔沒有 DTD,則該屬性返回 null。
document.doctype
複製代碼
標準模式:又稱嚴格模式,是指瀏覽器按照 W3C 標準解析代碼。javascript
兼容模式:又稱怪異模式或混雜模式,是指瀏覽器用本身的方式解析代碼。css
如何區分:html
<!DOCTYPE html>
目的:防止呈現文檔時瀏覽器切換到 「兼容模式」。前端
怪異模式和標準模式html5
link
屬於 XHTML 標籤,除了加載 CSS 外,還能用於定義 RSS,定義 rel 鏈接屬性等做用;而 @import
是 CSS 提供的,只能用於加載 CSS;git
頁面被加載的時,link
會同時被加載,而 @import
引用的 CSS 會等到頁面被加載完再加載;github
@import
是CSS2.1 提出的,只在 IE5 以上才能被識別,而 link
是 XHTML 標籤,無兼容問題;web
link
方式的樣式的權重高於 @import
的權重。ajax
Get:Form 的默認方法。
Get 是用來從服務器上得到數據。Post 是用來向服務器上傳遞數據
Get 將表單中數據的按照 name=value 的形式,添加到 action 所指向的 URL 後面,而且二者使用 "?" 鏈接,而各個變量之間使用 "&" 鏈接。Post 是將表單中的數據放在 form 的數據體中,按照變量和值相對應的方式,傳遞到 action 所指向 URL
Get 是不安全的,由於在傳輸過程,數據被放在請求的 URL 中。Post 的全部操做對用戶來講都是不可見的,其放置 request body 中
Get 傳輸的數據量小,這主要是由於受 URL 長度限制。Post 能夠傳輸大量的數據,因此在上傳文件只能使用 Post
Get 限制 Form 表單的數據集的值必須爲 ASCII 字符。Post 支持整個 ISO10646 字符集
Get 請求瀏覽器會主動 cache。Post 支持不會
Get 請求參數會被完整保留在瀏覽歷史記錄中。Post 中的參數不會被保留。
GET 和 POST 本質上就是 TCP 連接,並沒有差異。可是因爲 HTTP 的規定和瀏覽器/服務器的限制,致使他們在應用過程當中體現出一些不一樣。
GET 產生一個 TCP 數據包;POST 產生兩個 TCP 數據包。
user-scalbale="no"
時不容許用戶進行手動縮放屬性 | 描述 |
---|---|
width | 設備的虛擬視口的寬度。 |
height | 設備的虛擬視口的高度。 |
device-width | 設備屏幕的物理寬度。 |
device-height | 設備屏幕的物理高度。 |
initial-scale | 訪問頁面時的初始縮放。1.0沒法縮放。 |
user-scalable | 容許設備放大和縮小,值爲 yes 或 no。 |
minimum-scale | 容許用戶的最小縮放值,1.0 表沒法縮放。 |
maximum-scale | 容許用戶的最大縮放值,1.0 表沒法縮放。 |
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
複製代碼
meta
元素可用於包含描述 HTML 文檔屬性的名稱/值對,如做者,字符編號,關鍵字列表,文檔做者等信息<!DOCTYPE html>
<html>
<head>
<!-- 推薦 Meta Tags -->
<meta charset="utf-8" />
<meta name="language" content="english" />
<meta http-equiv="content-type" content="text/html" />
<meta name="author" content="Author Name" />
<meta name="designer" content="Designer Name" />
<meta name="publisher" content="Publisher Name" />
<meta name="no-email-collection" content="name@email.com" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!-- 搜索引擎優化 Meta Tags -->
<meta name="description" content="Project Description" />
<meta name="keywords" content="Software Engineer,Product Manager,Project Manager,Data Scientist" />
<meta name="robots" content="index,follow" />
<meta name="revisit-after" content="7 days" />
<meta name="distribution" content="web" />
<meta name="robots" content="noodp" />
<!-- 可選 Meta Tags-->
<meta name="distribution" content="web" />
<meta name="web_author" content="" />
<meta name="rating" content="" />
<meta name="subject" content="Personal" />
<meta name="title" content=" - Official Website." />
<meta name="copyright" content="Copyright 2020" />
<meta name="reply-to" content="" />
<meta name="abstract" content="" />
<meta name="city" content="Bangalore" />
<meta name="country" content="INDIA" />
<meta name="distribution" content="" />
<meta name="classification" content="" />
<!-- 移動設備上 HTML 頁面的 Meta Tgas -->
<meta name="format-detection" content="telephone=yes" />
<meta name="HandheldFriendly" content="true" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<!-- http-equiv Tags -->
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title>HTML5 Meta Tags</title>
</head>
<body>
...
</body>
</html>
複製代碼
<!-- 在5秒鐘內重定向到提供的 URL。設置爲0可當即重定向 -->
<meta http-equiv="refresh" content="3;url=https://juejin.cn/user/96412754251390" />
複製代碼
img
,input
,textarea
,select
,object
,這些都是替換元素,這些元素都沒有實際的內容。iframe
,audio
,canvas
在某些狀況下也爲替換元素。塊級元素 | 行內元素 |
---|---|
獨佔一行 | 不獨佔一行 |
能夠設置寬高(盒模型) | 不能夠設置寬高,寬高由元素內部的內容決定,padding 和 margin 的 top/bottom 不會對元素生效 |
能夠包含行內元素和其餘塊級元素 | 行內元素只能包含文本和其餘行內元素。 |
display
屬性,每一個元素都有默認的 display
值。例如:
display
屬性值爲 block
,爲塊級元素;display
屬性值爲 inline
,爲行內元素。<h1>-<h6>
、<p>
、<div>
、<ul>
、<ol>
、<form>
、<table>
、<address>
、<blockquote>
、<center>
、<dir>
、<dl>
、<fieldset>
、<hr>
、<menu>
、<noscript>
、<pre>
、<noframes>
、<isindex>
display
屬性爲 block
、list-item
或 table
時,該元素將成爲 「塊級元素」。<a>
、<img>
、<input>
、<span>
、<textarea>
、<label>
、<select>
、<abbr>
、<acronym>
、<b>
、<bdo>
、<big>
、<br>
、<cite>
、<code>
、<dfn>
、<em>
、<font>
、<i>
、<kbd>
、<q>
、<s>
、<samp>
、<small>
、<strike>
、<strong>
、<sub>
、<sup>
、<tt>
、<u>
display
屬性爲 inline
、inline-block
或 inline-table
時,該元素將成爲 「行內元素」<br>
、<hr>
、<img>
、<input>
、<link>
、<meta>
<area>
、<base>
、<col>
、<command>
、<embed>
、<keygen>
、<param>
、<source>
<track>
、<wbr>
在 HTML 中,某些元素具備可選標記。實際上,即便元素自己是必需的,也能夠從 HTML 文檔中徹底刪除某些元素的開始和結束標籤。
p
,li
,td
,tr
,th
,html
,head
,body
等。如:
<p>Paragraph one.
<p>Paragraph two.
<p>Paragraph three.
複製代碼
</p>
結束標籤。瀏覽器會檢測到它須要它們,而且不管如何都會正確顯示在 DOM 中。但這可能帶給你編寫上的困難!爲了便於閱讀,當您的標籤內有內容/文本時,帶上結束標籤。
title
是鼠標放在圖片上面時顯示的文字,title
是對圖片的描述和進一步的說明。alt
定義了圖像的備用文本描述。alt
屬性能夠爲圖像提供替代的信息:
alt
屬性提供一些有用的信息。<!-- × -->
<img src="wenhao.jpg" alt="圖片" />
<!-- √ -->
<img src="wenhao.jpg" alt="滿臉問號的男人" />
複製代碼
srcset
和 sizes
來提供更多額外的資源圖像和提示,幫助瀏覽器選擇正確的一個資源。<img srcset="small.jpg 500w, medium.jpg 1000w, large.jpg 2000w" src="..." alt="">
複製代碼
<noscript>
元素用來定義在腳本未被執行時的替代內容(文本)。<noscript>
標籤中的內容只有在下列狀況下才會顯示出來:
<!-- 給予用戶友好的提示! -->
<noscript>您的瀏覽器不支持 JavaScript!</noscript>
複製代碼
label
標籤訂義表單控制間的關係,當用戶選擇該標籤時,瀏覽器會自動將焦點轉到和標籤相關的表單控件上。<label for="select">愛我</label>
<input type="radio" id="select" name="love" value="love" />
<label>恨我<input type="radio" name="hate" value="hate" /></label>
複製代碼
<title>
與 <h1>
的區別
<title>
用於網站信息標題,一個網站能夠有多個 title
,seo 權重高於 h1
;<h1>
歸納的是文章主題,一個頁面最好只用一個 h1
,seo 權重低於 title
。<b>
與 <strong>
的區別
<b>
爲了加粗而加粗<strong>
爲了標明重點內容而加粗,有語氣增強的含義<i>
與 <em>
的區別
<i>
爲了斜體而斜體,<em>
爲了標明重點而斜體,且對於搜索引擎來講 <strong>
和 <em>
比 <b>
和 <i>
要重視的多rel="noopener"
應在什麼場景下使用,爲何?rel="noopener"
是 <a>
標籤的一個屬性。他能夠禁止打開的新頁面中使用 window.opener
屬性,這樣一來打開的新頁面就不能經過 window.opener
去操做你的頁面。
新頁面能夠經過 window.opener.location = newURL
將你的頁面導航至任何網址。
<!-- home.html -->
<a href="./home.html" target="_blank">home</a>
<!-- <a href="./home.html" target="_blank" rel="noopener">home</a> -->
<!-- details.html -->
<h1>點關注 不迷路!</h1>
<script> window.opener.location = 'https://juejin.cn/user/96412754251390' </script>
複製代碼
target ="_ blank"
的外部連接,則您的連接應具備 rel="noopener"
屬性,以防止標籤被挪用。若是您須要支持舊版本的 Firefox,請使用 rel="noopener noreferrer"
rel="noopener"
應用於超連接,防止打開的連接操縱源頁面<link>
標籤放在 <head></head>
之間是規範要求的內容。此外,這種作法可讓頁面逐步呈現,提升了用戶體驗。<script>
標籤放在底部,保證 HTML 首先完成解析,將頁面儘早呈現給用戶。document.write()
時。
document.write()
不推薦使用。<script>
標籤放在底部,意味着瀏覽器不能開始下載腳本,直到整個文檔(document)被解析。對此比較好的作法是,<script>
使用 defer
屬性,放在 <head>
中。accesskey
:設置快捷鍵,提供快速訪問元素class
:爲元素設置類標識,多個類名用空格分開,CSS 和 JavaScript 可經過 class 屬性獲取元素contenteditable
:指定元素內容是否可編輯contextmenu
:自定義鼠標右鍵彈出菜單內容data-*
:爲元素增長自定義屬性dir
:設置元素文本方向draggable
:設置元素是否可拖拽dropzone
:設置元素拖放類型: copy,move,linkhidden
:表示一個元素是否與文檔。樣式上會致使元素不顯示,可是不能用這個屬性實現樣式效果id
:元素 id,文檔內惟一lang
:元素內容的的語言spellcheck
:是否啓動拼寫和語法檢查style
:行內 CSS 樣式tabindex
:設置元素能夠得到焦點,經過 tab 能夠導航title
:元素相關的建議信息translate
:元素和子孫節點內容是否須要本地化title
、description
、keywords
這三個標籤
title
標題標籤description
描述標籤keywords
關鍵詞標籤!!! 5
html
head
title = HelloWorld
body
h1使用Jade建立HelloWorld網頁
複製代碼
編譯爲
<!DOCTYPE html>
<html>
<head>
<title>HelloWorld</title>
</head>
<body>
<h1>使用Jade建立HelloWorld網頁</h1>
</body>
</html>
複製代碼
<iframe>
)表示嵌入的瀏覽上下文。它可以將另外一個 HTML 頁面嵌入到當前頁面中。<iframe></iframe>
之間,來提示某些不支持 iframe 的瀏覽器由於瀏覽器頁面渲染的時候是從上至下的,而 table
和 iframe
這兩種元素會改變這樣渲染規則,他們須要等待本身元素內的內容加載完才總體渲染。用戶體驗會很不友好。
iframe
的話本文有所說起,能夠翻閱查找:lang(zh) {
font-size: 1.5em;
}
複製代碼
enctype='multipart/form-data'
意思?enctype
屬性指定將表單數據提交到服務器時應如何編碼。HTML5 是 HTML(超文本標記語言)最新的修訂版本,由萬維網聯盟(W3C)於 2014 年 10 月完成標準制定。目標是取代 1999 年所制定的 HTML 4.01 和 XHTML 1.0 標準。它是一種爲萬維網構建和顯示內容的語言,萬維網是互聯網的核心技術。
<!DOCTYPE html>
?<!DOCTYPE html>
<meta charset="UTF-8" />
document.querySelector
、document.querySelectorAll
、matchesSelector()
canvas
,支持內聯 SVG。支持 MathMLvideo
和 audio
元素localStorage
長期存儲數據,瀏覽器關閉後數據不丟失;sessionStorage
的數據在瀏覽器關閉後自動刪除article
、footer
、header
、nav
、section
等語義標籤calendar
、date
、time
、email
、url
等datalist
、keygen
、output
webWorker
, 全雙工通訊協議 webSocket
和地理定位 Geolocation
自定義數據屬性以 data 開始,並將根據您的需求進行命名
您能夠使用 JavaScript 得到這些屬性的值
在 JavaScript 框架變得流行以前,前端開發者常用 data-*
屬性,把額外數據存儲在 DOM 自身中,而當時沒有其餘 Hack 手段(好比使用非標準屬性或 DOM 上額外屬性)。它用於存儲頁面或應用程序專用的自定義數據,對於這些數據,沒有更合適的屬性或元素。
而如今,不鼓勵使用 data-*
屬性。緣由:
<acronym>
:建議用 <abbr>
<applet>
:建議用 <object>
<basefont>
:建議用 <font>
<bgsound>
:建議用 <audio>
<b>
:不推薦使用,建議用 font-weight
代替<big>
:不推薦使用,建議用 font-size
代替<blink>
:建議採用 animation
代替<center>
:不推薦使用,建議用 text-align: center
代替<dir>
:建議根據語義採用 <ul>
、<ol>
或者 <dl>
<font>
:不推薦使用,建議用 CSS 代替,以便更好控制。<frame>
:不推薦使用,建議用 <iframe>
代替。但 <iframe>
如今又能夠用 ajax 來代替<frameset>
:不推薦使用<hgroup>
:不推薦使用<isindex>
:建議用 <input>
<listing>
:建議用 <pre>
或使用語義更好的 <code>
<marquee>
:不推薦使用<multicol>
:建議用 <input>
<nobr>
:不推薦使用,建議用 white-space
代替<noframes>
:不推薦使用,建議用 幀 CSS 代替<plaintext>
:建議用 <pre>
或使用語義更好的 <code>
<u>
:不推薦使用,建議用 幀 font-style
代替<spacer>
:不推薦使用<strike>
:建議用語義更好的 <del>
或 <s>
<tt>
:建議用 <code>
或 <span>
<xmp>
:建議用帶有 CSS 的 <pre>
或使用語義更好的 <code>
它用於改進文檔的自動化處理。自動處理髮生的頻率比你意識到的要高——搜索引擎中的每一個網站排名都是從全部網站的自動處理中派生出來的。
<!-- 機器:這種結構看起來多是導航元素? -->
<div class="some-meaningless-class"><ul><li><a href="internal_link">...</div>
<!-- 機器: 這是導航元素! -->
<nav class="some-meaningless-class"><ul><li><a>...</nav>
複製代碼
<form>
,<table>
, <article>
,<aside>
,<details>
,<figcaption>
,<figure>
,<footer>
,<header>
,<main>
,<mark>
,<nav>
,<section>
,<summary>
,<time>
明確規定其含義。<div>
,<span>
不包含任何含義。<header>
用於包含有關頁面某個部分的介紹性和導航信息。這能夠包括章節標題、做者姓名、出版時間和日期、目錄或其餘導航信息。<article>
是用來存放一個自成體系的做文,在邏輯上能夠在頁面以外獨立地從新建立,而不會失去它的意義。我的博客文章或新聞故事就是很好的例子。<section>
是一個靈活的容器,用於保存共享公共信息主題或目的的內容。<footer>
用於保存應該出如今內容節末尾的信息,幷包含有關該節的附加信息。做者姓名、版權信息和相關連接是此類內容的典型示例。<main>
元素表示 body
文檔的主要內容。主要內容區域由與文檔的中心主題或應用程序的中心功能直接相關或擴展的內容組成。SVG 意爲可縮放矢量圖形(Scalable Vector Graphics)是一種基於 XML 的圖像格式,用於爲 web 定義基於向量的二維圖形。與光柵圖像(例如 .jpg、.gif、.png 等)不一樣,矢量圖像能夠在不損失圖像質量的狀況下進行任何程度的放大或縮小。
<!-- SVG 是矢量和聲明性的 -->
<svg viewBox="0 0 200 200">
<circle cx="10" cy="10" r="10" />
</svg>
複製代碼
Canvas 是一個 HTML5 元素,用於在網頁上繪製圖形。它是一個帶有 "當即模式" 圖形應用程序編程接口(API)的位圖,用於在其上繪圖。
<canvas>
元素只是圖形的容器。爲了繪製圖形,你應該使用 js 畫布在繪製路徑、方框、圓、文本和添加圖像時有幾種策略。
<canvas>
元素提供了一個空白繪圖區域,可經過 JavaScript API(Canvas API 或 WebGL API)繪製圖形及圖形動畫
<canvas id="myCanvas" width="578" height="200"></canvas>
<script> var canvas = document.getElementById('myCanvas'); var context = canvas.getContext('2d'); var centerX = canvas.width / 2; var centerY = canvas.height / 2; var radius = 70; context.beginPath(); context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false); context.fillStyle = 'green'; context.fill(); </script>
複製代碼
Canvas | SVG |
---|---|
基於柵格(由像素組成) | 基於矢量(由形狀組成),很是適合 UI/UX 動畫 |
依賴分辨率 | 不依賴分辨率 |
不支持事件處理器 | 支持事件處理器 |
文本渲染能力差 | 良好的文字渲染功能 |
使用更多的對象或更小的曲面或二者都提供更好的性能 | 複雜度高會減慢渲染速度(任何過分使用 DOM 的應用都不快) |
最適合圖像密集型的遊戲,其中的許多對象會被頻繁重繪 | 不適合遊戲應用 |
僅經過腳本修改 | 經過腳本和 CSS 修改 |
可以以 .png 或 .jpg 格式保存結果圖像 | 多個圖形元素,成爲頁面 DOM 樹的一部分 |
可伸縮性差。不適合以較高分辨率打印。可能發生像素化 | 更好的可擴展性。能夠任何分辨率高質量打印。不會發生像素化 |
canvas
標籤訂義圖形,好比圖表和其餘圖像。該標籤基於 JavaScript 的繪圖 API<canvas width="300" height="300">
抱歉,您的瀏覽器不支持canvas元素
</canvas>
複製代碼
figure
表明一段獨立的內容,常常與說明(caption)配合使用,而且做爲一個獨立的引用單元
figcaption
是與其相關聯的圖片的說明/標題,用於描述其父節點 figure
元素裏的其餘數據。
<style> figure { border: thin #c0c0c0 solid; display: flex; flex-flow: column; padding: 5px; max-width: 220px; margin: auto; } img { max-width: 220px; max-height: 150px; } figcaption { background-color: #222; color: #fff; font: italic smaller sans-serif; padding: 3px; text-align: center; } </style>
<figure>
<img src="1.jpg" alt="索隆">
<figcaption>An elephant at sunset</figcaption>
</figure>
複製代碼
summary
利用了一個 details
元素的一個內容的摘要,標題或圖例。details
可建立一個掛件,僅在被切換成展開狀態時,它纔會顯示內含的信息。
<style> details { border: 1px solid #aaa; border-radius: 4px; padding: 0.5em 0.5em 0; } summary { font-weight: bold; margin: -0.5em -0.5em 0; padding: 0.5em; } details[open] { padding: 0.5em; } details[open] summary { border-bottom: 1px solid #aaa; margin-bottom: 0.5em; } </style>
<details>
<summary>Details</summary>
Something small enough to escape casual notice.
</details>
複製代碼
header
、nav
、main
、footer
、section
、article
<section>
<header></header>
<main>
<nav></nav>
</main>
<footer></footer>
</section>
<article></article>
複製代碼
map
定義一個客戶端圖像映射。圖像映射(image-map)指帶有可點擊區域的一幅圖像
<div>
<img src="../img/cs.jpg" width="500" height="500" alt="pic" usemap="#circusmap" />
<map name="circusmap">
<area shape="rect" coords="90,18,202,186" href="https://www.baidu.com/"/>
<area shape="rect" coords="222,141,318, 256" href="https://www.baidu.com/" />
<area shape="circle" coords="343,111,455, 267" href="https://www.baidu.com/" />
<area shape="rect" coords="35,328,143,500" href="https://www.baidu.com/" />
</map>
</div>
複製代碼
mark
突出顯示 html 中的文本。在這個標籤出現以前,常使用使用 em
或 strong
賦予突出顯示的內容一些語義。如今不推薦了。若是須要突出顯示,請使用此標籤<p><mark>Lio</mark></p>
複製代碼
默認背景顏色 <mark>
是黃色
/* default style */
mark {
background: yellow;
color: black;
}
複製代碼
能夠使用 CSS 自定義樣式
mark {
background: red;
color: white;
}
複製代碼
meter
標籤訂義已知範圍或分數值內的標量測量。也被稱爲 gauge(尺度)。
<meter>
標籤不該用於指示進度(在進度條中)。若是標記進度條,請使用 <progress>
標籤。<div>
<meter value="4" min="0" max="10">4/10</meter><br />
<meter value="0.6">60%</meter>
</div>
複製代碼
progress
標籤標示任務的進度(進程)。<label for="file">Downloading progress:</label>
<progress id="file" value="32" max="100"> 32% </progress>
複製代碼
time
定義日期或時間。<p>The concert starts at <time datetime="2020-06-01T20:00:00">20:00</time>.</p>
複製代碼
bdi
容許您設置一段文本,使其脫離其父元素的文本方向設置。<p dir="ltr">Lorem ipsum <bdi>dolor</bdi> sit amet.</p>
複製代碼
dialog
標籤訂義一個對話框、確認框或窗口。<dialog open>
<p>Greetings, one and all!</p>
</dialog>
複製代碼
source
定義視頻源 <video>
和 <audio>
track
定義文本軌道video
定義視頻元素
src
指定視頻的來源。video
設置高度和寬度時,瀏覽器不知道視頻的大小,當視頻加載時,頁面將發生變化或閃爍<!-- 1. 用 src 屬性定義 -->
<video src="video.mp4" controls ></video>
<!-- 2. 定義 source 標籤 -->
<video controls>
<source src="video.mp4" type="video/mp4">
你的瀏覽器不支持 HTML5 viedo 標籤。
</video>
複製代碼
embed
將外部內容嵌入文檔中的指定位置。<embed src="https://juejin.cn/user/96412754251390" height="700" width="100%" />
<embed type="video/webm" src="/media/cc0-videos/flower.mp4" height="700" width="100%" />
複製代碼
audio
定義音頻內容
<audio controls>
<source src="sound.ogg" type="audio/ogg" />
<source src="sound.mp3" type="audio/mpeg" />
您的瀏覽器不支持 HTML5 audio 標籤。
</audio>
複製代碼
datalist
<datalist>
標籤訂義選項列表。與 input 元素配合使用該元素,來定義 input 可能的值。<label for="course">選擇學習課程:</label>
<input list="target" name="course" id="course" />
<datalist id="target">
<option value="HTML"></option>
<option value="CSS"></option>
<option value="JavaScript"></option>
<option value="Node"></option>
<option value="Vue"></option>
<option value="React"></option>
<option value="Webpack"></option>
</datalist>
複製代碼
keygen
該元素有助於生成密鑰和經過表單提交。
keygen
必須在表單內使用。keygen
已經從 Web 標準中刪除,請使用 JavaScript 生成密鑰output
標籤訂義不一樣類型的輸出,好比腳本的輸出。
<form oninput="x.value=parseInt(a.value) * parseInt(b.value)">
0 <input type="range" id="a" value="50"> 100
* <input type="number" id="b" value="1" /> =
<output name="x" for="a b"></output>
</form>
複製代碼
pre
標籤可定義預格式化的文本。被包圍在 <pre>
標籤中的文本一般會保留空格和換行符。而文本也會呈現爲等寬字體。
strong
用於指示比周圍文本更重要的文本,例如警告或錯誤。從語義上講,它的重要性。它顯示爲粗體
b
與 strong
很是類似,由於它也顯示爲粗體。然而,與它不一樣的是,它並無真正傳達出任何重要性,它更像是一種文體而非語義。
em
用於強調某個詞。它顯示爲斜體
<strong>lorem</strong>
<b>lorem</b>
<em>lorem</em>
複製代碼
q
和 blockquote
q
引號blockquote
塊引號<q>lorem</q>
<blockquote>lorem</blockquote>
複製代碼
bdo
能夠更改 HTML 文本的方向
<p><bdo dir="rtl">This text will go right to left.</bdo></p>
複製代碼
abbr
標籤縮寫您的代碼,當你傳遞一個標題時,它將建立一個工具提示
<abbr>
不一樣瀏覽器的默認樣式有些不一樣。在 Chrome 和 Firefox 中,它將帶有下劃線,而且在懸停時將帶有 title
傳遞的值的工具提示。若是您在 Safari 上打開此頁面,則不會出現下劃線。此外,僅當您具備 title
屬性時才顯示下劃線。<abbr>
代碼加上自定義樣式。這樣,您將在瀏覽器之間擁有一致的外觀定義術語時,能夠與 dfn
混合使用
<dfn>
<abbr title="Today I learned">TIL</abbr> something awesome!
</dfn>
複製代碼
指示的非縮寫詞並將其輸出到頁面上的括號中
abbr[title]::after {
content: ' (' attr(title) ')';
}
複製代碼
利用 hover
狀態僅在點擊時顯示非縮寫詞
abbr[title]:hover::after {
content: ' (' attr(title) ')';
}
複製代碼
使用 abbr
標籤來指示在順序鍵盤導航中是可聚焦的 tabindex="0"
,而後在聚焦時觸發咱們的非縮寫內容。
<abbr title="Today I learned" tabindex="0">TIL</abbr>
複製代碼
abbr[title]:focus::after {
content: ' (' attr(title) ')';
}
複製代碼
也能夠使用一些提示工具,如 Bootstrap 的工具提示組件。
kbd
和 code
kbd
:表示用戶從鍵盤、語音輸入或任何其餘文本輸入設備輸入的文本。code
:表示計算機代碼的簡短片斷的文本。monospace
字體。可是在語義上它們是不一樣的。最好使用 kbd
代替 code
<kbd>Ctrl</kbd> + <kbd>C</kbd>
<code>Ctrl</code> + <code>C</code>
複製代碼
/* Default Style */
kbd {
font-family: monospace;
}
kbd, code {
border: 1px solid gray;
border-radius: 5px;
padding: 5px;
}
複製代碼
s
和 del
刪除線
s
當您嘗試表示再也不相關或再也不準確的事物時,使用它。del
當您要指示某些內容已從文檔中刪除時,使用它。<s>Lorem ipsum dolor sit amet.</s>
<!-- 常使用於商品價格折扣 -->
<span><s>$1999</s></span>
<span style="color: red;">$99</span>
<del>Lorem ipsum dolor sit amet.</del>
<!-- 常使用於待辦事項清單 -->
<ul>
<li><del>打卡</del></li>
<li>喝杯咖啡</li>
</ul>
複製代碼
ins
<p>
Lorem ipsum
<ins>dolor sit amet consectetur adipisicing elit.</ins> Perferendis, rem.
</p>
複製代碼
contenteditable
contenteditable
屬性應用於任何HTML元素,它能夠像 input
或 <textare>
那樣工做編輯它們contenteditable
屬性值有3個不一樣的值:true、false、inherit<div contenteditable="true">
<h1>元素可編輯</h1>
</div>
<div contenteditable="false">
<h1>元素不可編輯</h1>
</div>
<div contenteditable="inherit">
<h1>元素繼承其父元素的可編輯狀態</h1>
</div>
複製代碼
input
required
autofocus
屬性可以讓 button
,input
或 textarea
元素在頁面加載完成時自動成爲頁面焦點pattern
用正則表達式驗證<!-- required -->
<input type="text" id="username1" name="username" required>
<!-- autofocus -->
<input type="text" id="username2" name="username" >
<!-- pattern -->
<input type="password" name="password" placeholder="請輸入密碼" pattern="^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,20}$" required />
複製代碼
date
、month
、week
、time
、number
、range
、email
、url
、color
、datatime-local
、datetime
、search
、tel
search
:用於搜索域,好比站點搜索或 Google 搜索,域顯示爲常規的文本域。url
:用於應該包含 URL 地址的輸入域在提交表單時,會自動驗證 url 域的值。email
:用於應該包含 e-mail 地址的輸入域,在提交表單時,會自動驗證 email 域的值。datetime
:選取時間、日、月、年(UTC 時間)date
:選取日、月、年month
:選取月、年week
:選取周和年time
:選取時間(小時和分鐘)datetime-local
:選取時間、日、月、年(本地時間)number
:用於應該包含數值的輸入域,您還可以設定對所接受的數字的限定。range
:用於應該包含必定範圍內數字值的輸入域,類型顯示爲滑動條。color
:定義拾色器。tel
:定義用於輸入電話號碼的字段。datetime
不在被推薦使用,轉而使用 datatime-local
<!-- url -->
<input type="url" />
<!-- tel -->
<input type="tel" name="tel" />
<!-- search -->
<input type="search" />
<!-- email -->
<form action="/">
<input type="email" />
<input type="submit" value="提交">
</form>
<!-- date -->
<input type="date" value="2020-06-01" min="2020-01-01" max="2022-01-01" />
<!-- time -->
<input type="time" value="12:00" />
<!-- datetime -->
<input type="datetime" value="2020-09-12T23:00Z" />
<!-- week -->
<input type="week" />
<!-- month -->
<input type="month" value="2020-06-01" />
<!-- datetime-local -->
<input type="datetime-local" value="2020-09-06T23:00" />
<!-- number -->
<input type="number" name="number" min="2" max="10" value="3" />
<!-- color -->
<input type="color" onchange="showColor(event)">
<!-- range -->
<input type="range" name="range" min="0" max="100" step="1" value="" />
複製代碼
hiden
屬性規定對元素進行隱藏。
hidden
屬性進行設置,使用戶在知足某些條件時才能看到某個元素(好比選中複選框,等等)。而後,可以使用 JavaScript 來刪除 hidden 屬性,使該元素變得可見。<div hidden>lorem</div>
複製代碼
Download
href
屬性中指定的連接download
屬性時,它將變成一個下載連接。提示您要下載的文件。下載的文件將具備與原始文件名相同的名稱。可是,您也能夠經過將值傳遞給 download
屬性來設置自定義文件名download
屬性僅適用於同源 URL。若是的 href
來源與網站的來源不一樣,那麼它將沒法正常工做。換句話說,您只能下載屬於該網站的文件。此屬性遵循同源策略中的相同規則概述。<a href="../img/cs.jpg" download>
使用原始文件名下載本地文件
</a>
<a href="../img/cs.jpg" download='logo'>
使用自定義文件名下載 logo.png
</a>
複製代碼
input
設置爲 autocomplete=off
<!-- 不使用 autocomplete -->
<input type="email" name="email" />
<!-- 使用 autocomplete -->
<form action="/post">
<input type="email" name="email" autocomplete="off" />
<input type="submit" value="提交" />
</form>
複製代碼
<script>
標記上的 defer
和 async
屬性是什麼?<script>
:當遇到腳本時,HTML 中止解析,腳本被獲取並當即執行。執行結束後,HTML 解析繼續。defer
和 async
的做用:都是讓腳本的下載和執行不阻塞頁面的渲染區別:
defer
是推遲執行,它是等到頁面渲染完畢,全部腳本下載完成,在 DOMContentLoaded 事件前按照腳本的在文檔中的順序執行;async
是當即下載並執行,加載和渲染後續文檔元素的過程將和 js 腳本的加載與執行並行進行(異步)defer
,咱們還要記住的是它是按照加載順序執行腳本的async
的腳本並不保證按照指定它們的前後順序執行。對它來講腳本的加載和執行是牢牢挨着的,因此無論你聲明的順序如何,只要它加載完了就會馬上執行。async
對於應用腳本的用處不大,由於它徹底不考慮依賴(哪怕是最低級的順序執行),不過它對於那些能夠不依賴任何腳本或不被任何腳本依賴的腳原本說倒是很是合適的。<script src="longTime.js"></script>
<script src="longTime.js" defer></script>
<script src="longTime.js" async></script>
複製代碼
src
屬性的腳本(即不是內聯腳本),async
和 defer
屬性會被忽略。IE6-8 支持經過 document.createElement
方法產生的標籤,利用這一特性讓這些瀏覽器支持 HTML5 新標籤
使用 html5shiv 框架
HTML5:
<header>
、<section>
等)<article>
<h1>經過 Modernizr 檢測 HTML5 特性</h1>
</article>
<script crossorigin="anonymous" integrity="sha384-l7lIexAaQrMGAnOGdPikxQDjq8aY1MS3oqkKPS8FXlJ47UejXvEzmezjhEwHVkzm" src="https://lib.baomitu.com/modernizr/2010.07.06dev/modernizr.js" ></script>
<script> window.onload = function () { //經過Modernizr.對瀏覽器canvas功能進行檢測 if (Modernizr.canvas) { console.log('本瀏覽器支持Canvas API') } else { console.log('本瀏覽器不支持Canvas API') } } </script>
複製代碼
localStorage 持久化的本地存儲,除非是經過 js 刪除,或者清除瀏覽器緩存,不然數據永遠不會過時,關閉瀏覽器也不會丟失。
sessionStorage 存儲對象存儲一個會話的數據,數據會在瀏覽器關閉後自動刪除。
跟 localStorage 同樣,大小限制最多爲 5M。
同一個會話的頁面才能訪問而且當會話結束後數據也會隨之銷燬,所以 sessionStorage 不是一種持久化的本地存儲
與 localStorage 擁有統一的 API 接口;
localStorage 有本身獨立的存儲空間;
對數據的操做是同步的。
cookie | localStorage | sessionStorage | |
---|---|---|---|
由誰初始化 | 客戶端或服務器,服務器能夠使用Set-Cookie 請求頭。 |
客戶端 | 客戶端 |
過時時間 | 手動設置 | 永不過時 | 當前頁面關閉時 |
在當前瀏覽器會話(browser sessions)中是否保持不變 | 取決因而否設置了過時時間 | 是 | 否 |
是否隨着每一個 HTTP 請求發送給服務器 | 是,Cookies 會經過Cookie 請求頭,自動發送給服務器 |
否 | 否 |
容量(每一個域名) | 4kb | 5MB | 5MB |
訪問權限 | 任意窗口 | 任意窗口 | 當前頁面窗口 |
IndexedDB 是一種底層異步 API,瀏覽器內置的數據庫,用於在客戶端存儲大量的結構化數據(也包括文件/二進制大型對象(blobs))。
IndexedDB API 功能強大,但對於簡單的狀況可能看起來太複雜若是你更喜歡一個簡單的API,請嘗試 localForage,dexie.js,PouchDB,IDB,IDB-KEYVAL,JsStore 或者 lovefield 之類的庫,這些庫使 IndexedDB 對開發者來講更加友好。
IndexedDB 像一個 NoSQL 數據庫,而 WebSQL 像關係型數據庫,使用 SQL 查詢數據。W3C WebSQL 已經再也不支持這種技術。
根據最新的標準,該特性已經從 Web 標準中刪除,建議使用 Service Workers 代替。這裏找了一些資料,感興趣瞭解一下。
客戶端 js:
var myWebWorker = new Worker("task.js") // 建立 worker
// 監聽 task.js worker 消息
worker.addEventListener("message", function(event) {
console.log("Worker said: ", event.data)
}, false)
// 啓動工做程序
worker.postMessage("From web worker file")
複製代碼
task.js(工做文件)文件:
// 監聽客戶端 JS 文件發佈消息
self.addEventListener("message", function(event) {
// 處理後的數據發送到客戶端監聽 JS 文件
self.postMessage(event.data)
}, false)
複製代碼
webSocket 如何兼容低瀏覽器?
websocket 與 socket 的區別
Socket 是傳輸控制層協議,WebSocket 是應用層協議。更多請看參考
參考
navigator
獲取對象。if ("geolocation" in navigator) {
/* geolocation is available */
} else {
/* geolocation IS NOT available */
}
複製代碼
使用 navigator.geolocation.getCurrentPosition()
方法獲取用戶的位置
頁面可見性 API 提供了您能夠觀察的事件,剎車瞭解文檔什麼時候可見或隱藏,以及查看頁面當前可見性狀態的功能。
使用選項卡式瀏覽,任何給定網頁都有可能在後臺,所以對用戶不可見。頁面可見性 API提供了您能夠觀察的事件,以便了解文檔什麼時候可見或隱藏,以及查看頁面當前可見性狀態的功能。
document.hidden
返回一個布爾值。
document.visibilityState
:表示頁面所處的狀態,當前頁面的可見性,有四個取值
visible
:頁面完全不可見。hidden
:頁面至少一部分可見。prerender
:頁面即將或正在渲染,處於不可見狀態。unloaded
:已被廢棄,不在使用。只要 document.visibilityState
屬性發生變化,就會觸發 visibilitychange
事件
// 打開新的頁面,來回切換標籤頁,觀察頁面標題的變化
document.addEventListener("visibilitychange", function() {
if (document.visibilityState === 'hidden') {
document.title = "愛我"
} else {
document.title = "恨我"
}
})
複製代碼
// 視頻暫停或播放
document.addEventListener('visibilitychange', function () {
if (document.visibilityState === 'hidden') {
video.pause()
} else if (document.visibilityState === 'visible') {
video.play()
}
})
複製代碼
**HTML 拖放(Drag and Drop)**接口使應用程序可以在瀏覽器中使用拖放功能。例如,用戶可以使用鼠標選擇可拖拽(draggable)元素,將元素拖拽到可放置(droppable)元素,並釋放鼠標按鈕以放置這些元素。
Event | Description |
---|---|
Drag | 每次拖動對象時移動鼠標時,它都會激發。事件主體是被拖放元素,在正在拖放被拖放元素時觸發。 |
Dragstart | 當用戶開始拖動對象時觸發。事件主體是被拖放元素,在開始拖放被拖放元素時觸發。 |
Dragenter | 當用戶將鼠標光標移到目標元素上時,它將激發。事件主體是目標元素,在被拖放元素進入某元素時觸發。 |
Dragover | 當鼠標移到某個元素上時觸發此事件。事件主體是目標元素,在被拖放在某元素內移動時觸發。 |
Dragleave | 當鼠標離開元素時觸發此事件。事件主體是目標元素,在被拖放元素移出目標元素是觸發。 |
Drop | 拖放操做結束時觸發。事件主體是目標元素,在目標元素徹底接受被拖放元素時觸發。 |
Dragend | 當用戶釋放鼠標按鈕以完成拖動操做時觸發。事件主體是被拖放元素,在整個拖放操做結束時觸發 |
draggable 是可枚舉的屬性指示該元素是否能夠拖動,用於標識元素是否容許使用 HTML拖放API
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<img id="drag1" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">
<script> function allowDrop(e) { e.preventDefault() } function drag(e) { e.dataTransfer.setData("text", e.target.id) } function drop(ev) { e.preventDefault() var data = e.dataTransfer.getData("text") e.target.appendChild(document.getElementById(data)) } </script>
複製代碼
querySelector()
:根據 css 選擇器返回第一個匹配的元素,若是沒有匹配返回 nullquerySelectorAll()
:方法返回文檔中匹配指定 CSS 選擇器的全部元素,返回 NodeList 對象。若是 querySelectorAll 沒有匹配的內容返回的是一個空數組。ele.classList.add("addClass")
ele.classList.remove("removeClass")
ele.classList.toggle("toggleClass")
ele.classList.contains("containsClass")
複製代碼
<div id="menu">Lorem ipsum dolor sit amet.</div>
<script> menu.addEventListener('contextmenu', function() { alert('點我!') }) </script>
複製代碼
你也能夠阻止它,顯示本身自定義的菜單
menu.addEventListener('contextmenu', function(e) {
e.preventDefault()
// ...
})
複製代碼
dataset
能夠方便的獲取或設置 data-* 自定義數據屬性集<div class="avatar" data-user="lisi" data-avatar-type="circle" data-animateSpeed>
lorem
</div>
<script> const avatar = document.querySelector('.avatar') avatar.dataset.user === 'lisi' // true avatar.dataset.avatarType === 'circle' // true avatar.dataset.animateSpeed = 4000 // 添加不存在的屬性 avatar.dataset.id = 'user' // console.log(avatar.dataset) </script>
複製代碼
tabindex
屬性規定當使用 "tab" 鍵進行導航時元素的順序。<a>
,<area>
,<button>
,<input>
,<object>
,<select>
和 <textarea>
。
tabindex
屬性可用於任何的 HTML 元素(它會驗證任何 HTML 元素。但不必定是有用)<ul>
<li tabindex="2">HTML</li>
<li tabindex="1">CSS</li>
<li tabindex="3">JAVASCRIPT</li>
</ul>
複製代碼
accessKey
屬性規定激活(使元素得到焦點)元素的快捷鍵。<input accesskey="b" />
<a href="https://www.baidu.com/" accesskey="c">百度一下,你就知道</a>
複製代碼
const fullscreen = (mode = true, el = 'body') =>
mode
? document.querySelector(el).requestFullscreen()
: document.exitFullscreen();
fullscreen(); // 默認全屏模式打開 "body"
fullscreen(false); // 退出全屏模式
複製代碼
:fullscreen
CSS 僞元素表明一個元素,當瀏覽器是在全屏模式下的顯示。
.elem:fullscreen {
background-color: #e4708a;
width: 100vw;
height: 100vh;
}
複製代碼
<link rel>
標記指示瀏覽器預加載內容:<link rel="prefetch" href="/index.css" as="style" />
<link rel="preload" href="/index.css" as="style" />
<link rel="preconnect" href="https://example.com" />
<link rel="dns-prefetch" href="https://example.com" />
<link rel="prerender" href="https://example.com/about.html" />
<link rel="modulepreload" href="/index.js" />
複製代碼
preload
做爲 rel
屬性的屬性值。還須要經過 href
和 as
屬性指定須要被預加載資源的資源路徑及其類型。<link rel="preload" href="index.css" as="style">
複製代碼
as
來指定將要預加載的內容的類型,將使得瀏覽器可以:
<link rel="prefetch">
要求瀏覽器在後臺下載並緩存資源(例如 JS 或 CSS)。下載的優先級較低,所以不會干擾更重要的資源。當您知道在下一個頁面上須要該資源,而且想要提早對其進行緩存時,這將頗有幫助。
下載資源後,瀏覽器不執行任何操做。不執行 JS,不該用 CSS。它只是被緩存了,所以當其餘需求時,它當即可用。
經過 link
標籤的 rel
屬性指定爲 "prefetch"
,在 href
屬性裏指定要加載資源的地址
<!-- 預加載整個頁面 -->
<link rel="prefetch" href="https://juejin.cn/user/96412754251390" />
<!-- 預加載一個圖片 -->
<link rel="prefetch" href="https://images.pexels.com/photos/918281/pexels-photo-918281.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500" />
複製代碼
<link rel="preconnect">
要求瀏覽器提早執行到域的鏈接。<link rel="dns-prefetch" href="https://juejin.cn/user/96412754251390">
複製代碼
DNS-prefetch
(DNS 預獲取)是嘗試在請求資源以前解析域名。這多是後面要加載的文件,也多是用戶嘗試打開的連接目標。<link rel="dns-prefetch" href="https://juejin.cn/user/96412754251390">
複製代碼
連接預加載的一些注意事項
<link rel="prerender">
要求瀏覽器加載 URL 並將其呈如今不可見的標籤中。當用戶單擊指向該 URL 的連接時,應當即呈現該頁面。當您確實肯定用戶接下來將訪問特定頁面而且想要更快地呈現它時,這將頗有幫助。<link rel="prerender" href="https://juejin.cn/user/96412754251390" />
複製代碼
<link rel="modulepreload">
告訴瀏覽器儘快下載,緩存和編譯 JS 模塊腳本。import ...
或導入的模塊 <script type="module">
。<link rel="modulepreload" href="/static/Header.js" />
複製代碼
漸進式渲染(Progressive rendering):是用於提升網頁性能(尤爲是提升用戶感知的加載速度),以儘快呈現頁面的技術。
此類技術的示例:
DOMContentLoaded
/load
事件加載其餘資源和內容。<meta charset="UTF-8" />
複製代碼
WHATWG(Web 超文本應用技術工做組)是一個對經過標準和測試來發展Web感興趣的人們組成的社區。
Web Components 是一套不一樣的技術,容許您建立可重用的定製元素(它們的功能封裝在您的代碼以外)而且在您的web應用中使用它們。不須要須要任何外部庫來工做。
特徵:
Custom elements(自定義元素)
Shadow DOM(影子DOM)
HTML templates(HTML 模板)
HTML Import 容許導入的外部 HTML 文檔。
維基百科:可訪問性是最經常使用於描述設施或設施,幫助殘疾人,如「輪椅」。這能夠擴展到盲文標識、輪椅坡道,音頻信號在人行橫道,輪廓人行道,網站設計,等等。
Accessible Rich Internet Applications (ARIA) 是可以讓殘障人士更加便利的訪問 Web 內容和使用 Web 應用(特別是那些由JavaScript 開發的)的一套機制。
[role = button]
)來使您的網站更易於訪問<style> [role='note'] { padding: 10px; border: 1px solid; border-left: 5px solid rebeccapurple; color: rebeccapurple; border-radius: 5px; } </style>
<section>
<div role="note">
Lorem ipsum dolor sit amet consectetur adipisicing elit. Quo illum cum
totam.
</div>
</section>
複製代碼
role
沒有爲大多數元素的默認語義添加任何內容role
,狀態或屬性來表達。常被稱爲元素的「默認隱式ARIA語義」一些冗餘 ARIA 的示例:
<button role="button">按我</button>
<a href="https://www.baidu.com" role="link"></a>
<input type="checkbox" role="checkbox" />
<input type="radio" role="radio" />
複製代碼
HTML5 使用默認的隱式語義定義了一組新的結構和分段元素,這些語義與 ARIA role
匹配(在某些狀況下):
role = button
時,考慮使用 <button>
元素,或者其餘各類原生 HTML 按鈕類型。role=link
時,考慮改用 <a href>
元素。role=heading
和 aria-level="1-6"
,考慮改用 <h1>
到 <h6>
元素。role=list
和 role=listitem
時,考慮改用 <ol>
或 <ul>
和 <li>
元素。role=listbox
和 role=option
,考慮改用 <select>
和 <option>
元素。role=checkbox
或 role=radio
時,考慮改用 <input type="checkbox">
或 <input type="radio">
元素。role=textbox
,能夠考慮使用 <input type="text">
或搜索、電子郵件、url 或電話。article
、aside
、footer
、header
、main
、nav
、section
等等…屏幕閱讀器是提供輔助技術的軟件程序,該技術能夠使殘障人士(例如,沒有視力,聲音或滑鼠能力的人)使用 Web 應用程序。
<header>
,<section>
,<footer>
,<main>
...)target ="_ blank"
的外部連接,則您的連接應具備 rel="noopener"
屬性,以防止標籤被挪用。若是您須要支持舊版本的 Firefox,請使用 rel="noopener noreferrer"
爲頁面測速制定樣式和腳本
壓縮 HTML:將註釋、空格和空行從生產文件中刪除。
刪除沒必要要的屬性:像 type="text/javascript"
or type="text/css"
這樣的屬性應該被移除。
text/css
和 text/javascript
做爲默認值。沒用的代碼應在網站或應用程序中刪除,由於它們會使網頁體積增大。<script>
標記都沒有任何 type 屬性。避免腳本阻塞加載。確保在使用 JavaScript 代碼以前加載 CSS。
<link>
和 <style>
始終位於 <script>
以前。儘量使用 async 和 defer
DNS 預取:一次 DNS 查詢時間大概在 60-120ms 之間或者更長,提早解析網頁中可能的網絡鏈接域名
<link rel="dns-prefetch" href="http://example.com/">
複製代碼
減小內聯腳本的數量
document.write()
來輸出內容,在必定狀況下能夠加速總體頁面的載入。如今瀏覽器中通常使用現代的 W3C DOM 方法操做頁面內容,優於使用 document.write()
的傳統方法。縮小和壓縮圖像
最小化文件數量
最小化 iframe 的數量:僅在沒有任何其餘技術可行性時才使用 iframe。
避免節點深層級嵌套:深層級嵌套的節點在初始化構建時每每須要更多的內存佔用,而且在遍歷節點時也會更慢些,這與瀏覽器構建 DOM 文檔的機制有關。瀏覽器會把整個 HTML 文檔的結構存儲爲 DOM "樹" 結構。當文檔節點的嵌套層次越深,構建的 DOM 樹層次也會越深。
頁面緩存:在不設置頁面緩存的狀況下,每次刷新頁面會從新讀取服務器文件。設置頁面緩存,每次刷新可從本地讀取,提升頁面加載效率
expires
來定義頁面過時時間,將過時時間定久一點就達到了 "永久" 緩存。<meta http-equiv="expires" content="Sunday 26 October 2099 01:00 GMT" />
複製代碼
避免 Table 佈局:table 比其它 HTML 標記佔更多的字節(形成下載時間延遲,佔用服務器更多流量資源)
table
佈局,而應運用 floats,positioning,flexbox 或 grids 來佈局。如何製做快速加載的HTML頁面 中還有其餘方面的例子,如:高效地排列頁面組件、合理的選擇 user-agent等