24 個(gè)高級(jí) Web 前端開發(fā)工程師都應(yīng)該掌握的強(qiáng)大HTML 屬性
HTML的屬性有很多,除了一些基本的屬性外,還有很多有用而且特別強(qiáng)大的屬性;
本文將介紹 24 個(gè)強(qiáng)大的 HTML 屬性,它們可以使您的網(wǎng)站更具活力和交互性,讓用戶感到更加舒適和愉悅。
讓我們一起探索這 24 個(gè)強(qiáng)大的 HTML 屬性吧!
1.Accept
Accept 屬性用于指定瀏覽器可以處理的 MIME 類型列表。
tips:
MIME 類型是識(shí)別文檔類型的標(biāo)準(zhǔn),
例如,text/html 表示一個(gè) HTML 文檔,image/jpeg 表示一個(gè) JPEG 圖像,等等。
通過在 HTTP 請(qǐng)求標(biāo)頭中包含 Accept 屬性,瀏覽器可以告訴服務(wù)器它可以接受哪些 MIME 類型作為響應(yīng)?;谶@些信息,服務(wù)器可以選擇最合適的響應(yīng)類型并將其返回給瀏覽器。
Accept 屬性的值是以逗號(hào)分隔的 MIME 類型列表,通配符可以用來(lái)表示一類 MIME 類型,例如 text/* 表示所有文本類型。
2.Autofocus
Autofocus 屬性用于在頁(yè)面加載時(shí)自動(dòng)將焦點(diǎn)設(shè)置到指定元素。
tips:
Autofocus 屬性可以應(yīng)用于各種 HTML 元素,例如文本框、按鈕、下拉列表等。
在 HTML5 中,Autofocus 屬性可以省略屬性值,表示將焦點(diǎn)設(shè)置到第一個(gè)具有 Autofocus 屬性的元素。
當(dāng)頁(yè)面加載時(shí),如果存在具有Autofocus屬性的元素,瀏覽器會(huì)自動(dòng)將光標(biāo)聚焦在該元素上,這樣用戶就可以直接與該元素進(jìn)行交互,而無(wú)需手動(dòng)點(diǎn)擊或使用Tab鍵切換焦點(diǎn)。
3.Inputmode
Inputmode屬性是用于指定在文本框中輸入的內(nèi)容類型的屬性。
它可以幫助瀏覽器更好地優(yōu)化輸入體驗(yàn),比如在移動(dòng)設(shè)備上自動(dòng)彈出合適的虛擬鍵盤。
text:默認(rèn)值,表示輸入任意文本。
none:表示不需要輸入。
tel:表示輸入電話號(hào)碼。
url:表示輸入的URL地址。
電子郵件:表示輸入電子郵件地址。
numeric:表示輸入的數(shù)字。
decimal:表示輸入帶小數(shù)點(diǎn)的數(shù)字。
搜索:表示輸入搜索關(guān)鍵字。
不同瀏覽器對(duì) Inputmode 屬性的支持程度可能不同。
因此,在使用 Inputmode 屬性時(shí)需要進(jìn)行兼容性測(cè)試。
4.Pattern
Pattern 屬性是一個(gè)正則表達(dá)式模式,用于指定文本框中的輸入內(nèi)容。它可以幫助瀏覽器驗(yàn)證用戶輸入的內(nèi)容是否符合規(guī)定的格式要求。
如果用戶輸入的內(nèi)容不符合Pattern屬性指定的正則表達(dá)式模式,瀏覽器將顯示默認(rèn)的錯(cuò)誤信息。
tips:
Pattern 屬性的值必須是有效的正則表達(dá)式。
Pattern 屬性只能應(yīng)用于可以輸入文本的元素,例如文本框、文本字段和密碼框。
Pattern屬性不會(huì)阻止用戶輸入非法字符,但會(huì)在提交表單時(shí)驗(yàn)證輸入的內(nèi)容是否符合規(guī)定的格式要求。
可以使用 title 屬性自定義 Pattern 屬性的錯(cuò)誤消息。
Pattern屬性通常與required屬性一起使用,保證用戶輸入的內(nèi)容符合規(guī)定的格式要求,且不為空。
例如,您可以使用 Pattern 屬性來(lái)驗(yàn)證用戶輸入的郵政編碼、電話號(hào)碼、電子郵件地址等。
5.Required
Required 屬性是用于指定表單元素是否必需的屬性。
如果一個(gè)表單元素設(shè)置了Required屬性,那么在提交表單時(shí),如果該元素的值為空,瀏覽器將阻止表單提交并提示用戶填寫該字段。
tips:
Required 屬性只能應(yīng)用于表單元素,不能應(yīng)用于其他 HTML 元素。
Required 屬性不驗(yàn)證用戶輸入的內(nèi)容是否符合規(guī)定的格式要求,只驗(yàn)證元素是否為空。
Required 屬性不會(huì)阻止用戶提交空格或空白字符,因此需要一些其他方法來(lái)驗(yàn)證用戶輸入。
Required 屬性可以和Pattern 屬性一起使用來(lái)驗(yàn)證用戶輸入的內(nèi)容是否符合指定的格式要求。
Required 屬性可以與 Autofocus 屬性結(jié)合使用,以確保當(dāng)用戶進(jìn)入表單頁(yè)面時(shí),焦點(diǎn)自動(dòng)位于必填字段上。
Required屬性常與表單元素的type屬性一起使用,如文本框、下拉列表、單選框、復(fù)選框等。
6.Autocomplete
Autocomplete 屬性是用于指定表單元素是否啟用自動(dòng)完成的屬性。
自動(dòng)完成可幫助用戶更快地填寫表單并減少輸入錯(cuò)誤的機(jī)會(huì)。
tips:
on:默認(rèn)值,表示開啟自動(dòng)補(bǔ)全功能。
off:表示關(guān)閉自動(dòng)補(bǔ)全功能。
name:表示將表單元素的name屬性作為自動(dòng)補(bǔ)全的關(guān)鍵字。
email:表示使用用戶最近輸入的電子郵件地址作為自動(dòng)完成關(guān)鍵字。
username:表示使用用戶最近輸入的用戶名作為自動(dòng)補(bǔ)全的關(guān)鍵字。
current-password:表示使用用戶最近輸入的密碼作為自動(dòng)完成的關(guān)鍵字。
new-password:表示使用用戶最近輸入的新密碼作為自動(dòng)完成的關(guān)鍵字。
tel:表示使用用戶最后輸入的電話號(hào)碼作為自動(dòng)補(bǔ)全的關(guān)鍵字。
address-level1:表示將用戶最近輸入的國(guó)家或地區(qū)名稱作為關(guān)鍵字自動(dòng)補(bǔ)全。
address-level2:表示將用戶最近輸入的省或州名作為關(guān)鍵詞自動(dòng)補(bǔ)全。
address-level3:表示將用戶最近輸入的城市或地區(qū)名稱作為關(guān)鍵字自動(dòng)補(bǔ)全。
address-level4:表示使用用戶最近輸入的街道名稱作為自動(dòng)補(bǔ)全的關(guān)鍵字。
country:表示將用戶最近輸入的國(guó)家名稱作為自動(dòng)補(bǔ)全的關(guān)鍵字。
不同瀏覽器對(duì) Autocomplete 屬性的支持程度可能不同。因此,在使用自動(dòng)完成屬性時(shí)需要進(jìn)行兼容性測(cè)試。
7. Multiple
Multiple 屬性是用來(lái)指定表單元素是否允許多選的屬性。
Multiple 屬性通常應(yīng)用于表單元素,例如下拉列表、文件上傳和復(fù)選框。
tips:
Multiple屬性只能應(yīng)用于下拉列表、文件上傳、復(fù)選框等表單元素,不能應(yīng)用于單選框、文本框等表單元素。
Multiple 屬性的值必須是布爾值,true 或 false。
Multiple 屬性的默認(rèn)值為 false,表示不允許多選。
當(dāng)Multiple屬性值為true時(shí),下拉列表顯示為多選列表框,復(fù)選框顯示為多選復(fù)選框列表,文件上傳允許用戶 選擇多個(gè)文件。
使用Multiple屬性時(shí),需要在后臺(tái)程序中對(duì)多選值進(jìn)行處理,比如用數(shù)組來(lái)存儲(chǔ)多選值。
如果表單元素設(shè)置了 Multiple 屬性,則用戶可以選擇多個(gè)選項(xiàng),而不僅僅是一個(gè)。
8. Download
Download屬性是用于在鏈接下載文件時(shí)指定文件名的屬性。
如果鏈接設(shè)置了Download屬性,那么當(dāng)用戶點(diǎn)擊鏈接下載文件時(shí),瀏覽器會(huì)將文件保存到本地,并使用Download屬性指定的文件名來(lái)命名文件。
tips:
Download屬性的值可以是任意字符串,代表下載文件時(shí)使用的文件名。
Download 屬性只能應(yīng)用于標(biāo)簽,不能應(yīng)用于其他 HTML 元素。
Download 屬性不會(huì)改變文件的實(shí)際名稱,它只是在下載時(shí)使用指定的文件名。
Download 屬性的值可以動(dòng)態(tài)生成,例如使用 JavaScript 生成文件名。
使用下載屬性時(shí),需要保證下載的文件是合法的,不侵犯他人的版權(quán)和隱私。
Download屬性通常用在標(biāo)簽中,用于下載PDF、圖片、音頻、視頻等文件。
9.Contenteditable
HTML中的Contenteditable屬性是用來(lái)指定元素是否可編輯的屬性。
tips:
Contenteditable 屬性的值可以是 true、false 或 inherit。
Contenteditable 屬性的默認(rèn)值為 false,表示該元素不可編輯。
當(dāng) Contenteditable 屬性的值為 true 時(shí),該元素是可編輯的。
當(dāng)Contenteditable 屬性的值為inherit 時(shí),元素的可編輯性從父元素繼承。
Contenteditable 屬性不會(huì)改變?cè)氐哪J(rèn)行為,例如標(biāo)簽仍然可以跳轉(zhuǎn)到其他頁(yè)面。
使用Contenteditable屬性時(shí)需要注意安全問題,避免XSS攻擊和惡意腳本注入。
如果一個(gè)元素設(shè)置了Contenteditable屬性,那么用戶就可以在該元素中輸入文字、插入圖片、修改樣式等。
Contenteditable屬性通常應(yīng)用于,其他元素用于實(shí)現(xiàn)富文本編輯器、可編輯表格等功能。
10.Readonly
HTML中的Readonly屬性是用來(lái)指定一個(gè)表單元素是否為只讀的屬性。
tips:
Readonly 屬性的值必須是布爾值,true 或 false。
Readonly 屬性的默認(rèn)值為 false,表示表單元素是可編輯的。
當(dāng) Readonly 屬性的值為 true 時(shí),表單元素是只讀的。
Readonly 屬性不會(huì)阻止用戶通過 JavaScript 修改表單元素的值。
Readonly 屬性不同于 Disabled 屬性,后者禁用表單元素,使其無(wú)法提交數(shù)據(jù)。
使用Readonly屬性時(shí),需要在后臺(tái)程序中對(duì)只讀值進(jìn)行處理,比如使用隱藏域來(lái)存儲(chǔ)只讀值。
如果表單元素設(shè)置了 Readonly 屬性,則用戶可以看到該元素的值,但不能修改該元素的值。Readonly 屬性通常應(yīng)用于文本框、下拉列表和日期選擇器等表單元素,以顯示數(shù)據(jù)或防止用戶修改數(shù)據(jù)。
11.Hidden
Hidden 屬性是用于指定元素是否隱藏的屬性。
tips:
Hidden 屬性的值必須是布爾值,true 或 false。
Hidden 屬性的默認(rèn)值為 false,表示該元素未隱藏。
當(dāng) Hidden 屬性的值為 true 時(shí),元素被隱藏。
Hidden 屬性不同于 CSS 的 display:none 屬性。display:none 屬性會(huì)將元素從頁(yè)面中完全移除,并且無(wú)法通過 JavaScript 或其他方法訪問該元素。
使用Hidden屬性時(shí),需要在后臺(tái)程序中對(duì)隱藏值進(jìn)行處理,比如使用一個(gè)隱藏字段來(lái)存儲(chǔ)隱藏值。
如果一個(gè)元素設(shè)置了Hidden屬性,則該元素不會(huì)顯示在頁(yè)面上,但它仍然存在于頁(yè)面上,可以通過JavaScript等方式訪問。
Hidden屬性通常應(yīng)用于表單元素、按鈕、 圖像等,以在不影響頁(yè)面布局的情況下傳遞數(shù)據(jù)或控制頁(yè)面行為。
12.Spellcheck
HTML 中的 Spellcheck 屬性是用來(lái)指定是否對(duì)元素啟用拼寫檢查的屬性。
tips:
Spellcheck 屬性的值必須是布爾值,true 或 false。
Spellcheck 屬性的默認(rèn)值為 false,表示該元素不啟用拼寫檢查。
當(dāng) Spellcheck 屬性的值為 true 時(shí),該元素將啟用拼寫檢查。
Spellcheck 屬性的支持程度因?yàn)g覽器而異,不同的瀏覽器可能有不同的拼寫檢查算法和詞典。
使用Spellcheck屬性時(shí)需要注意安全問題,避免XSS攻擊和惡意腳本注入。
如果一個(gè)元素設(shè)置了 Spellcheck 屬性,那么當(dāng)用戶在該元素中輸入文本時(shí),瀏覽器會(huì)自動(dòng)檢查拼寫錯(cuò)誤,并在不正確的單詞下方顯示一條紅色波浪線。Spellcheck 屬性通常應(yīng)用于文本框和文本字段等元素,以提高用戶輸入的準(zhǔn)確性。
13.Translate
HTML 中的 Translate 屬性是用于指定元素是否應(yīng)被翻譯的屬性。
tips:
Translate 屬性的值必須是布爾值,yes 或 no。
Translate 屬性的默認(rèn)值為 yes,表示該元素需要翻譯。
當(dāng) Translate 屬性的值為 no 時(shí),該元素不需要翻譯。
Translate 屬性的支持程度因?yàn)g覽器而異,不同的瀏覽器可能有不同的翻譯算法和詞典。
使用Translate屬性時(shí)需要注意安全問題,避免XSS攻擊和惡意腳本注入。
如果一個(gè)元素設(shè)置了Translate屬性,瀏覽器會(huì)根據(jù)該屬性的值來(lái)決定是否翻譯該元素的內(nèi)容。Translate 屬性通常用于多語(yǔ)言版本的網(wǎng)站,以控制哪些元素需要翻譯,哪些元素不需要。
14.loading
HTML loading中的屬性是一個(gè)新的屬性,可以用來(lái)指定瀏覽器在加載資源時(shí)的優(yōu)先級(jí)。
此屬性可應(yīng)用于 <img>、<iframe>、<script>、<link> 和 <audio> 等標(biāo)簽。
tips:
lazy:表示資源應(yīng)該在頁(yè)面加載后延遲加載。這是默認(rèn)值。
eager:表示應(yīng)該在頁(yè)面加載時(shí)立即加載資源。
auto:表示由瀏覽器自行決定何時(shí)加載資源。
并非所有瀏覽器都支持 loadingAttributes,因此在使用它們時(shí)需要進(jìn)行兼容性檢查。
15.onerror
onerroris 是一個(gè)在 JavaScript 錯(cuò)誤時(shí)觸發(fā)的 JavaScript 事件處理程序。
onerrorEvent 處理程序可以添加到 windowto 對(duì)象以全局捕獲 JavaScript 錯(cuò)誤。
tips:
message:錯(cuò)誤信息。
source:發(fā)生錯(cuò)誤的腳本的URL。
lineno:發(fā)生錯(cuò)誤的行號(hào)。
colno:發(fā)生錯(cuò)誤的列號(hào)。
onerror:包含有關(guān)錯(cuò)誤的詳細(xì)信息的錯(cuò)誤對(duì)象。
onerrorEvent 處理程序只能捕獲其他錯(cuò)誤處理程序未捕獲的 JavaScript 錯(cuò)誤。
最好在代碼中使用 try-catch 語(yǔ)句來(lái)捕獲和處理 JavaScript 錯(cuò)誤。
16.poster
poster 是 HTML5 <video> 標(biāo)簽的一個(gè)屬性,用于指定在視頻加載之前和播放之前顯示的圖像。
tips:
posterAttributes 僅適用于 <video> 標(biāo)簽,不適用于 <audio> 標(biāo)簽。
它通常用于提供視頻的預(yù)覽圖像或縮略圖。
17. controls
controls是HTML5中<video>,<audio>中性標(biāo)簽的一個(gè)屬性,用于指定是否顯示媒體播放器的控件。
如果controls屬性設(shè)置為controls,則在媒體播放器上顯示控件,如播放/暫停按鈕、音量控制、進(jìn)度條等。
<!DOCTYPE html>
<html>
<head>
<title>Controls Example</title>
</head>
<body>
<video width="320" height="240" controls>
<source src="video.mp4" type="video/mp4">
<source src="video.ogg" type="video/ogg">
Your browser does not support the video tag.
</video>
</body>
</html>`
controlsAttributes 僅在支持 HTML5 的瀏覽器中可用。如果瀏覽器不支持HTML5,則不會(huì)顯示該控件。
18. autoplay
autoplay 是 HTML5 <video> 中性標(biāo)簽的一個(gè)屬性,<audio> 指定媒體是否應(yīng)在頁(yè)面加載時(shí)自動(dòng)播放。
如果 autoplay 屬性設(shè)置為自動(dòng)播放,媒體將在頁(yè)面加載時(shí)自動(dòng)播放。
<!DOCTYPE html>
<html>
<head>
<title>Autoplay Example</title>
</head>
<body>
<video width="320" height="240" autoplay>
<source src="video.mp4" type="video/mp4">
<source src="video.ogg" type="video/ogg">
Your browser does not support the video tag.
</video>
</body>
</html>`
自動(dòng)播放會(huì)對(duì)用戶體驗(yàn)產(chǎn)生負(fù)面影響,因此請(qǐng)謹(jǐn)慎使用自動(dòng)播放屬性。在某些情況下,瀏覽器可能會(huì)阻止自動(dòng)播放,例如在移動(dòng)設(shè)備上,用戶必須首先與頁(yè)面交互才能允許自動(dòng)播放。
19.loop
loop 是 HTML5 中 <video>neutral <audio> 標(biāo)簽的一個(gè)屬性,指定媒體播放結(jié)束后是否循環(huán)播放。
如果 loop 屬性設(shè)置為循環(huán)播放,媒體將在播放結(jié)束后循環(huán)播放。
<!DOCTYPE html>
<html>
<head>
<title>Loop Example</title>
</head>
<body>
<video width="320" height="240" loop>
<source src="video.mp4" type="video/mp4">
<source src="video.ogg" type="video/ogg">
Your browser does not support the video tag.
</video>
</body>
</html>`
循環(huán)會(huì)對(duì)用戶體驗(yàn)產(chǎn)生負(fù)面影響,因此請(qǐng)謹(jǐn)慎使用循環(huán)屬性。
20. cite
cite 是 HTML 中的一個(gè)全局屬性,可用于指定引用的來(lái)源。
cite屬性的值應(yīng)該是一個(gè)指向引用來(lái)源的URL。
tips:
citeAttributes可以應(yīng)用于<blockquote>、<q>、<del>等標(biāo)簽<ins>
如果 referrer 的來(lái)源不是 URL,cite 屬性的值可以設(shè)置為描述 referrer 的字符串。
<!DOCTYPE html>
<html>
<head>
<title>Cite Example</title>
</head>
<body>
<blockquote cite="https://www.example.com/quote">
This is a quote from an external source.
</blockquote>
<q cite="https://www.example.com/quote">
This is a short quote from an external source.
</q>
<del cite="https://www.example.com/deleted">
This text has been deleted from an external source.
</del>
<ins cite="https://www.example.com/inserted">
This text has been inserted from an external source.
</ins>
</body>
</html>
citeAttributes 不會(huì)自動(dòng)創(chuàng)建鏈接,因此如果需要?jiǎng)?chuàng)建鏈接,需要使用<a>a 標(biāo)簽并將屬性hrefset 為citethe 屬性的值。
21.datetime
datetime是HTML<time>標(biāo)簽的一個(gè)屬性,用來(lái)指定日期和時(shí)間。
datetime屬性的值應(yīng)該是有效的日期和時(shí)間格式,例如YYYY-MM-DDThh:mm:ss。
datetimeAttributes 不會(huì)自動(dòng)格式化日期和時(shí)間,因此您需要使用 JavaScript 或其他工具來(lái)格式化日期和時(shí)間。
22.async
async 是 HTML <script> 標(biāo)簽的一個(gè)屬性,它指定腳本是否應(yīng)該被異步加載。
如果async屬性設(shè)置為async,腳本將被異步加載,不會(huì)阻塞頁(yè)面的解析和渲染。
異步加載的腳本可能會(huì)在頁(yè)面其余部分加載之前執(zhí)行,因此請(qǐng)謹(jǐn)慎使用。如果腳本依賴于頁(yè)面的其他部分,這可能會(huì)導(dǎo)致錯(cuò)誤。
23.defer
defer 是 HTML <script> 中標(biāo)記的一個(gè)屬性,它指定腳本是否應(yīng)該延遲加載。
如果 defer 屬性設(shè)置為 defer,腳本將延遲加載,直到頁(yè)面被解析后再執(zhí)行。
<!DOCTYPE html>
<html>
<head>
<title>Defer Example</title>
<script defer src="script.js"></script>
</head>
<body>
<p>This is a paragraph.</p>
</body>
</html>
在上面的示例中,我們將屬性 defer 設(shè)置為 defer,這將導(dǎo)致腳本延遲加載。在這種情況下,腳本將在頁(yè)面被解析后執(zhí)行,并且不會(huì)阻止頁(yè)面加載。
24.Draggable
Draggable 是 HTML5 中的一個(gè)屬性,允許用戶通過拖動(dòng)來(lái)移動(dòng)元素。draggable 當(dāng)元素設(shè)置為 時(shí),用戶可以用鼠標(biāo)或觸摸屏幕拖動(dòng)元素。
當(dāng)拖拽一個(gè)元素時(shí),會(huì)觸發(fā)一系列的事件,比如dragstart, , drag, dragend,這些事件可以用來(lái)實(shí)現(xiàn)拖放功能。
如果你是專業(yè)的前端工程師,今天分享的這些屬性中,肯定有很多是你用過的!