如何使用HTML5自定義數據屬性以及為什麼
HTML5自定義數據屬性讓開發者能夠在HTML元素中存儲自定義數據。它們提供了一種向HTML元素添加額外信息的方法,這些信息可被JavaScript或CSS使用,從而增強網頁功能。本文將介紹什麼是數據屬性以及它們的用途。
關鍵要點
- HTML5自定義數據屬性允許開發者在HTML元素上存儲額外信息,這些信息可以被JavaScript或CSS訪問和使用,從而增強網頁功能。
- 數據屬性總是以“data-”開頭,可用於通過屬性選擇器在CSS中設置元素樣式,並可通過
attr()
函數向用戶顯示信息。 - 在JavaScript中,可以使用
getAttribute()
和setAttribute()
方法、dataset
屬性或jQuery的data()
方法訪問數據屬性。 - 雖然自定義數據屬性功能強大,但只有在沒有其他合適的HTML元素或屬性時才應使用它們,並且不應用於存儲大量數據。
為什麼要使用自定義數據屬性?
我們經常需要存儲與不同DOM元素關聯的信息。這些信息對於讀者來說可能並不重要,但能夠輕鬆訪問它們會讓我們的開發工作變得輕鬆許多。例如,假設您在一個網頁上列出了不同的餐館。在HTML5之前,如果您想存儲餐館提供的食物類型或它們與訪問者的距離等信息,您將使用HTML的class
屬性。如果您還需要存儲餐廳ID來查看用戶想要訪問的特定餐廳,該怎麼辦?以下是基於HTMLclass
屬性的方法的一些問題:
- HTML
class
屬性並非用於存儲此類數據。其主要目的是允許開發者將樣式信息分配給一組元素。 - 每添加一條信息,都需要向元素添加一個新的類。這使得在JavaScript中解析數據以獲取所需信息變得更加困難。
- 假設給定的類名以數字開頭。如果您決定稍後根據類名中的數據設置元素樣式,則必須轉義數字或在樣式表中使用屬性選擇器。
為了解決這些問題,HTML5引入了自定義數據屬性。所有名稱以data-
開頭的元素屬性都是數據屬性。您還可以使用這些數據屬性來設置元素樣式。接下來,讓我們深入了解數據屬性的基礎知識,並學習如何在CSS和JavaScript中訪問它們的值。
HTML語法
如前所述,數據屬性的名稱將始終以data-
開頭。這是一個示例:
<li data-type="veg" data-distance="2miles" data-identifier="10318">Salad King</li>
您現在可以使用這些數據屬性來搜索和排序訪客的餐廳。例如,您現在可以向他們顯示一定距離內所有的素食餐廳。除了data-
前綴外,有效的自定義數據屬性的名稱只能包含字母、數字、連字符(-)、點(.)、冒號(:)或下劃線(_)。它不能包含大寫字母。使用數據屬性時,您需要注意兩點。首先,存儲在這些屬性中的數據應為字符串類型。任何可以進行字符串編碼的內容也可以存儲在數據屬性中。所有類型轉換都需要在JavaScript中完成。其次,只有在沒有其他合適的HTML元素或屬性時,才應使用數據屬性。例如,將元素的類存儲在data-class
屬性中是不合適的。一個元素可以擁有任意數量的數據屬性,以及您想要的任意值。
數據屬性和CSS
您可以使用屬性選擇器在CSS中使用數據屬性來設置元素樣式。您還可以使用attr()
函數向用戶顯示存儲在數據屬性中的信息(在工具提示或其他方式中)。
設置元素樣式
回到我們的餐廳示例,您可以使用屬性選擇器以不同的方式設置餐廳的背景,從而向用戶提示餐廳的類型或它們與用戶的距離。這是一個示例:
li[data-type='veg'] { background: #8BC34A; } li[data-type='french'] { background: #3F51B5; }
創建工具提示
您可以使用工具提示向用戶顯示與元素相關的其他信息。我建議您將此方法用於快速原型,而不是生產網站,原因至少是僅限CSS的工具提示並非完全可訪問。您想要顯示的信息可以存儲在data-tooltip
屬性中。
<span data-tooltip="简单的解释">Word</span>
然後,您可以使用::before
偽元素向用戶呈現數據。
span::before { content: attr(data-tooltip); //更多样式规则 } span:hover::before { display: inline-block; }
使用JavaScript訪問數據屬性
在JavaScript中訪問數據屬性有三種方法。
使用getAttribute
和setAttribute
您可以在JavaScript中使用getAttribute()
和setAttribute()
來獲取和設置不同數據屬性的值。如果給定的屬性不存在,則getAttribute
方法將返回null
或空字符串。以下是如何使用這些方法的示例:
let restaurant = document.getElementById("restaurantId"); let ratings = restaurant.getAttribute("data-ratings");
您可以使用setAttribute
方法修改現有屬性的值或添加新屬性。
restaurant.setAttribute("data-owner-name", "someName");
使用dataset
屬性
訪問數據屬性的一種更簡單的方法是使用dataset
屬性。此屬性返回一個DOMStringMap
對象,其中包含每個自定義數據屬性的一個條目。使用dataset
屬性時,您需要注意一些事項。它需要三個步驟才能將自定義數據屬性轉換為DOMStringMap
鍵:
- 從屬性名稱中刪除
data-
前綴 - 從名稱中刪除任何後跟小寫字母的連字符,並將後面的字母轉換為大寫
- 其他字符將保持不變。這意味著任何後跟小寫字母的連字符也將保持不變。
然後可以使用存儲在對像中的駝峰式名稱作為鍵來訪問屬性,例如element.dataset.keyname
。訪問屬性的另一種方法是使用方括號表示法,例如element.dataset[keyname]
。考慮以下HTML:
<li data-type="veg" data-distance="2miles" data-identifier="10318">Salad King</li>
以下是一些示例:
li[data-type='veg'] { background: #8BC34A; } li[data-type='french'] { background: #3F51B5; }
此方法現在已在所有主要瀏覽器中受支持,您應該優先使用它來訪問自定義數據屬性。
使用jQuery
您還可以使用jQuery的data()
方法訪問元素的數據屬性。在jQuery 1.6版本之前,您必須使用以下代碼訪問數據屬性:
<span data-tooltip="简单的解释">Word</span>
從1.6版本開始,jQuery開始使用數據屬性的駝峰式版本。現在,您可以使用以下代碼執行相同的操作:
span::before { content: attr(data-tooltip); //更多样式规则 } span:hover::before { display: inline-block; }
您應該知道,jQuery還會嘗試在內部將從數據屬性獲得的字符串轉換為合適的類型,例如數字、布爾值、對象、數組和null
。
let restaurant = document.getElementById("restaurantId"); let ratings = restaurant.getAttribute("data-ratings");
如果您希望jQuery將從數據屬性獲得的值作為字符串獲取,而無需嘗試將其轉換為其他類型,則應使用jQuery的attr()
方法。 jQuery僅在第一次訪問數據屬性時才檢索其值。然後不再訪問或更改數據屬性。您對這些屬性所做的所有更改都在內部進行,並且只能在jQuery中訪問。假設您正在操作以下列表項的數據屬性:
restaurant.setAttribute("data-owner-name", "someName");
您可以使用以下代碼更改其data-distance
屬性的值:
<li data-type="veg" data-distance="2miles" data-identifier="10318" data-owner-name="someName">Salad King</li>
如您所見,使用原生JavaScript(非jQuery)訪問data-distance
屬性的值仍然會提供舊的結果。
結論
在本教程中,我已經介紹了關於HTML5數據屬性的所有重要內容。除了使用屬性選擇器創建工具提示和設置元素樣式外,您還可以使用數據屬性來存儲和向用戶顯示其他數據,例如有關未讀消息的通知等等。
(此處應添加常見問題解答部分,內容與輸入文本中的FAQ部分一致,但語言表達可以更精煉一些。為了避免重複,我省略了這部分內容。)
以上是如何使用HTML5自定義數據屬性以及為什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務
