国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
設(shè)置元素樣式
創(chuàng)建工具提示
使用getAttributesetAttribute
使用dataset屬性
使用jQuery
首頁 web前端 js教程 如何使用HTML5自定義數(shù)據(jù)屬性以及為什麼

如何使用HTML5自定義數(shù)據(jù)屬性以及為什麼

Feb 17, 2025 am 08:24 AM

How You Can Use HTML5 Custom Data Attributes and Why

HTML5自定義數(shù)據(jù)屬性讓開發(fā)者能夠在HTML元素中存儲自定義數(shù)據(jù)。它們提供了一種向HTML元素添加額外信息的方法,這些信息可被JavaScript或CSS使用,從而增強網(wǎng)頁功能。本文將介紹什麼是數(shù)據(jù)屬性以及它們的用途。

關(guān)鍵要點

  • HTML5自定義數(shù)據(jù)屬性允許開發(fā)者在HTML元素上存儲額外信息,這些信息可以被JavaScript或CSS訪問和使用,從而增強網(wǎng)頁功能。
  • 數(shù)據(jù)屬性總是以“data-”開頭,可用於通過屬性選擇器在CSS中設(shè)置元素樣式,並可通過attr()函數(shù)向用戶顯示信息。
  • 在JavaScript中,可以使用getAttribute()setAttribute()方法、dataset屬性或jQuery的data()方法訪問數(shù)據(jù)屬性。
  • 雖然自定義數(shù)據(jù)屬性功能強大,但只有在沒有其他合適的HTML元素或?qū)傩詴r才應(yīng)使用它們,並且不應(yīng)用於存儲大量數(shù)據(jù)。

為什麼要使用自定義數(shù)據(jù)屬性?

我們經(jīng)常需要存儲與不同DOM元素關(guān)聯(lián)的信息。這些信息對於讀者來說可能並不重要,但能夠輕鬆訪問它們會讓我們的開發(fā)工作變得輕鬆許多。例如,假設(shè)您在一個網(wǎng)頁上列出了不同的餐館。在HTML5之前,如果您想存儲餐館提供的食物類型或它們與訪問者的距離等信息,您將使用HTML的class屬性。如果您還需要存儲餐廳ID來查看用戶想要訪問的特定餐廳,該怎麼辦?以下是基於HTMLclass屬性的方法的一些問題:

  • HTML class屬性並非用於存儲此類數(shù)據(jù)。其主要目的是允許開發(fā)者將樣式信息分配給一組元素。
  • 每添加一條信息,都需要向元素添加一個新的類。這使得在JavaScript中解析數(shù)據(jù)以獲取所需信息變得更加困難。
  • 假設(shè)給定的類名以數(shù)字開頭。如果您決定稍後根據(jù)類名中的數(shù)據(jù)設(shè)置元素樣式,則必須轉(zhuǎn)義數(shù)字或在樣式表中使用屬性選擇器。

為了解決這些問題,HTML5引入了自定義數(shù)據(jù)屬性。所有名稱以data-開頭的元素屬性都是數(shù)據(jù)屬性。您還可以使用這些數(shù)據(jù)屬性來設(shè)置元素樣式。接下來,讓我們深入了解數(shù)據(jù)屬性的基礎(chǔ)知識,並學(xué)習(xí)如何在CSS和JavaScript中訪問它們的值。

HTML語法

如前所述,數(shù)據(jù)屬性的名稱將始終以data-開頭。這是一個示例:

<li data-type="veg" data-distance="2miles" data-identifier="10318">Salad King</li>

您現(xiàn)在可以使用這些數(shù)據(jù)屬性來搜索和排序訪客的餐廳。例如,您現(xiàn)在可以向他們顯示一定距離內(nèi)所有的素食餐廳。除了data-前綴外,有效的自定義數(shù)據(jù)屬性的名稱只能包含字母、數(shù)字、連字符(-)、點(.)、冒號(:)或下劃線(_)。它不能包含大寫字母。使用數(shù)據(jù)屬性時,您需要注意兩點。首先,存儲在這些屬性中的數(shù)據(jù)應(yīng)為字符串類型。任何可以進行字符串編碼的內(nèi)容也可以存儲在數(shù)據(jù)屬性中。所有類型轉(zhuǎn)換都需要在JavaScript中完成。其次,只有在沒有其他合適的HTML元素或?qū)傩詴r,才應(yīng)使用數(shù)據(jù)屬性。例如,將元素的類存儲在data-class屬性中是不合適的。一個元素可以擁有任意數(shù)量的數(shù)據(jù)屬性,以及您想要的任意值。

數(shù)據(jù)屬性和CSS

您可以使用屬性選擇器在CSS中使用數(shù)據(jù)屬性來設(shè)置元素樣式。您還可以使用attr()函數(shù)向用戶顯示存儲在數(shù)據(jù)屬性中的信息(在工具提示或其他方式中)。

設(shè)置元素樣式

回到我們的餐廳示例,您可以使用屬性選擇器以不同的方式設(shè)置餐廳的背景,從而向用戶提示餐廳的類型或它們與用戶的距離。這是一個示例:

li[data-type='veg'] {
  background: #8BC34A;
}

li[data-type='french'] {
  background: #3F51B5;
}

創(chuàng)建工具提示

您可以使用工具提示向用戶顯示與元素相關(guān)的其他信息。我建議您將此方法用於快速原型,而不是生產(chǎn)網(wǎng)站,原因至少是僅限CSS的工具提示並非完全可訪問。您想要顯示的信息可以存儲在data-tooltip屬性中。

<span data-tooltip="簡單的解釋">Word</span>

然後,您可以使用::before偽元素向用戶呈現(xiàn)數(shù)據(jù)。

span::before {
  content: attr(data-tooltip);
  //更多樣式規(guī)則
}

span:hover::before {
  display: inline-block;
}

使用JavaScript訪問數(shù)據(jù)屬性

在JavaScript中訪問數(shù)據(jù)屬性有三種方法。

使用getAttributesetAttribute

您可以在JavaScript中使用getAttribute()setAttribute()來獲取和設(shè)置不同數(shù)據(jù)屬性的值。如果給定的屬性不存在,則getAttribute方法將返回null或空字符串。以下是如何使用這些方法的示例:

let restaurant = document.getElementById("restaurantId");
let ratings = restaurant.getAttribute("data-ratings");

您可以使用setAttribute方法修改現(xiàn)有屬性的值或添加新屬性。

restaurant.setAttribute("data-owner-name", "someName");

使用dataset屬性

訪問數(shù)據(jù)屬性的一種更簡單的方法是使用dataset屬性。此屬性返回一個DOMStringMap對象,其中包含每個自定義數(shù)據(jù)屬性的一個條目。使用dataset屬性時,您需要注意一些事項。它需要三個步驟才能將自定義數(shù)據(jù)屬性轉(zhuǎn)換為DOMStringMap鍵:

  • 從屬性名稱中刪除data-前綴
  • 從名稱中刪除任何後跟小寫字母的連字符,並將後面的字母轉(zhuǎn)換為大寫
  • 其他字符將保持不變。這意味著任何後跟小寫字母的連字符也將保持不變。

然後可以使用存儲在對像中的駝峰式名稱作為鍵來訪問屬性,例如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;
}

此方法現(xiàn)在已在所有主要瀏覽器中受支持,您應(yīng)該優(yōu)先使用它來訪問自定義數(shù)據(jù)屬性。

使用jQuery

您還可以使用jQuery的data()方法訪問元素的數(shù)據(jù)屬性。在jQuery 1.6版本之前,您必須使用以下代碼訪問數(shù)據(jù)屬性:

<span data-tooltip="簡單的解釋">Word</span>

從1.6版本開始,jQuery開始使用數(shù)據(jù)屬性的駝峰式版本。現(xiàn)在,您可以使用以下代碼執(zhí)行相同的操作:

span::before {
  content: attr(data-tooltip);
  //更多樣式規(guī)則
}

span:hover::before {
  display: inline-block;
}

您應(yīng)該知道,jQuery還會嘗試在內(nèi)部將從數(shù)據(jù)屬性獲得的字符串轉(zhuǎn)換為合適的類型,例如數(shù)字、布爾值、對象、數(shù)組和null。

let restaurant = document.getElementById("restaurantId");
let ratings = restaurant.getAttribute("data-ratings");

如果您希望jQuery將從數(shù)據(jù)屬性獲得的值作為字符串獲取,而無需嘗試將其轉(zhuǎn)換為其他類型,則應(yīng)使用jQuery的attr()方法。 jQuery僅在第一次訪問數(shù)據(jù)屬性時才檢索其值。然後不再訪問或更改數(shù)據(jù)屬性。您對這些屬性所做的所有更改都在內(nèi)部進行,並且只能在jQuery中訪問。假設(shè)您正在操作以下列表項的數(shù)據(jù)屬性:

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屬性的值仍然會提供舊的結(jié)果。

結(jié)論

在本教程中,我已經(jīng)介紹了關(guān)於HTML5數(shù)據(jù)屬性的所有重要內(nèi)容。除了使用屬性選擇器創(chuàng)建工具提示和設(shè)置元素樣式外,您還可以使用數(shù)據(jù)屬性來存儲和向用戶顯示其他數(shù)據(jù),例如有關(guān)未讀消息的通知等等。

(此處應(yīng)添加常見問題解答部分,內(nèi)容與輸入文本中的FAQ部分一致,但語言表達可以更精煉一些。為了避免重複,我省略了這部分內(nèi)容。)

以上是如何使用HTML5自定義數(shù)據(jù)屬性以及為什麼的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

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

Java vs. JavaScript:清除混亂 Java vs. JavaScript:清除混亂 Jun 20, 2025 am 12:27 AM

Java和JavaScript是不同的編程語言,各自適用於不同的應(yīng)用場景。 Java用於大型企業(yè)和移動應(yīng)用開發(fā),而JavaScript主要用於網(wǎng)頁開發(fā)。

JavaScript評論:簡短說明 JavaScript評論:簡短說明 Jun 19, 2025 am 12:40 AM

JavascriptconcommentsenceenceEncorenceEnterential gransimenting,reading and guidingCodeeXecution.1)單inecommentsareusedforquickexplanations.2)多l(xiāng)inecommentsexplaincomplexlogicorprovideDocumentation.3)

如何在JS中與日期和時間合作? 如何在JS中與日期和時間合作? Jul 01, 2025 am 01:27 AM

JavaScript中的日期和時間處理需注意以下幾點:1.創(chuàng)建Date對像有多種方式,推薦使用ISO格式字符串以保證兼容性;2.獲取和設(shè)置時間信息可用get和set方法,注意月份從0開始;3.手動格式化日期需拼接字符串,也可使用第三方庫;4.處理時區(qū)問題建議使用支持時區(qū)的庫,如Luxon。掌握這些要點能有效避免常見錯誤。

為什麼要將標(biāo)籤放在的底部? 為什麼要將標(biāo)籤放在的底部? Jul 02, 2025 am 01:22 AM

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScript與Java:開發(fā)人員的全面比較 JavaScript與Java:開發(fā)人員的全面比較 Jun 20, 2025 am 12:21 AM

JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

JavaScript:探索用於高效編碼的數(shù)據(jù)類型 JavaScript:探索用於高效編碼的數(shù)據(jù)類型 Jun 20, 2025 am 12:46 AM

javascripthassevenfundaMentalDatatypes:數(shù)字,弦,布爾值,未定義,null,object和symbol.1)numberSeadUble-eaduble-ecisionFormat,forwidevaluerangesbutbecautious.2)

什麼是在DOM中冒泡和捕獲的事件? 什麼是在DOM中冒泡和捕獲的事件? Jul 02, 2025 am 01:19 AM

事件捕獲和冒泡是DOM中事件傳播的兩個階段,捕獲是從頂層向下到目標(biāo)元素,冒泡是從目標(biāo)元素向上傳播到頂層。 1.事件捕獲通過addEventListener的useCapture參數(shù)設(shè)為true實現(xiàn);2.事件冒泡是默認行為,useCapture設(shè)為false或省略;3.可使用event.stopPropagation()阻止事件傳播;4.冒泡支持事件委託,提高動態(tài)內(nèi)容處理效率;5.捕獲可用於提前攔截事件,如日誌記錄或錯誤處理。了解這兩個階段有助於精確控制JavaScript響應(yīng)用戶操作的時機和方式。

Java和JavaScript有什麼區(qū)別? Java和JavaScript有什麼區(qū)別? Jun 17, 2025 am 09:17 AM

Java和JavaScript是不同的編程語言。 1.Java是靜態(tài)類型、編譯型語言,適用於企業(yè)應(yīng)用和大型系統(tǒng)。 2.JavaScript是動態(tài)類型、解釋型語言,主要用於網(wǎng)頁交互和前端開發(fā)。

See all articles