簡體   English   中英

他們為什么不贊成HTML <a>元素</a>的&#39;name&#39;屬性<a>?</a>

[英]Why did they deprecate the 'name' attribute for HTML <a> elements?

據我了解 ,在HTML5我們應該開始使用id屬性來引用a元素,而不是name屬性。 問題在於,還存在一個約束,即每個文檔的id應該唯一。

現在,我看到很多的,你會想引用一組相關的情況下, a元素(JS,通常情況下)。 通過擺脫name屬性,我們不得不重用相同的id或使用class名。 類按理說應該是關於介紹,所以這也是一個不完美的解決方案,如果你引用的a的非演示相關的原因。

我想另一種HTML5替代方法是使用諸如data-name類的東西,但這似乎有點黑。 有什么我想念的嗎? 是否有秘密的W3陰謀完全淘汰name

編輯:對於那些說“課程不一定要與演講有關”的人,我很難找到具體的資料來源,但是我知道我至少讀過幾個強調這一點的博客/文章。 我覺得那些人不是JS程序員...

還:感謝您提供所有經過充分解釋和深思熟慮的答案!

在HTML5中,我們應該開始使用id屬性而不是name屬性來引用元素。

HTML 4中引入了使用id進行鏈接的用法。XHTML1不推薦使用name屬性。 這是用HTML 5維護的。

問題在於,還存在一個約束,即每個文檔的id應該唯一。

不明確的鏈接目標沒有用!

查看HTML 3.2中a元素的name屬性定義

這應該是一個字符串,用於為當前HTML文檔的范圍定義唯一的名稱

為支持id而棄用它不會添加任何新的唯一性約束。

現在,我看到很多的,你會想引用一組相關的情況下, a元素(JS,通常情況下)。

在很多情況下,您想引用各種不同類型的相關元素。 HTML為此提供了類。 您甚至可以讓一個元素成為其中一個以上的成員。

上課應該是關於演講

不,他們不是。 類是將一組元素標識為一組的通用方法。

查看字典中類的定義:

具有某種屬性或屬性的事物的集合或類別,並通過種類,類型或質量與其他屬性或屬性區分開

另請參見class屬性的HTML 5定義,其中沒有提到嚴格用於表示,並且使用示例之一是JavaScript。

它們主要與CSS一起使用只是因為人們經常希望將樣式應用於元素組。

嗯,HTML。 你有多不穩定。

這個問題,似乎是混亂name為錨屬性和name的輸入屬性。 在HTML5之前的日子里,您需要一種將傳出鏈接(通過href )與內部文檔鏈接( #書簽)區分開的方法。

那么,他們將如何實現這一目標? 在此處指定: http//www.w3.org/TR/html401/struct/links.html

通過激活這些鏈接(通過單擊鼠標,通過鍵盤輸入,語音命令等),用戶可以訪問這些資源。 請注意,每個源錨中的href屬性都使用URI指定目標錨的地址。

鏈接的目標錨點可以是HTML文檔中的元素。 必須為目標錨指定一個錨名稱,並且尋址此錨的任何URI必須包括該名稱作為其片段標識符。

HTML文檔中的目標錨可以通過A元素(使用name屬性命名)或任何其他元素(使用id屬性命名)指定。

是的,給錨定一個name屬性(用作片段標識符),另一個錨定可以link到該屬性。

只是,與HTML5,他們決定任何元素(除了a )可以作為片段標識符(這是有道理的-應該只有你可以鏈接一個片段...) -這就是為什么他們不推薦使用的name屬性。

至於如何選擇它們呢? class屬性非常好(當然,它用於樣式設置,但這是否純粹是表示形式?)

另一個引號(來自w3c: http : //www.w3.org/TR/html401/struct/global.html#adef-class

另一方面,class屬性為一個元素分配一個或多個類名。 可以說該元素屬於這些類。 一個類名可以被幾個元素實例共享。 class屬性在HTML中具有多個角色:

*作為樣式表選擇器(當作者希望將樣式信息分配給一組元素時)。

*用於用戶代理的通用處理。

我認為沒有理由不使用類或數據屬性。

關於name屬性,您的觀點應該是唯一的! 多個具有相同名稱a元素並不是很有用,因為在URL中鏈接到它們將變得模棱兩可: www.example.com#my-named-element

在我們公司,我們探索了使用data-behaviors屬性,如下所示:

<a href='#' data-behaviors='something-cool something-else'>Click Me</a>

在JS中,我們使用以下方法將事件綁定到它:

$(".container").on("click", "data-behaviors=~'something-cool'", function(e){
  e.preventDefault();
})

我們還探討了使用命名約定為.js-something-cool以免混淆哪些類適用於CSS,哪些特定於javascript功能。

最后,我們最終選擇了js-類名稱方案,因為它比data-behavior版本使用起來笨拙。 但是有時我們會根據需要混合搭配。

例如,您可以使用以下切換功能:

<a href='#' data-toggle='#opened-div'>Click Me</a>

<div id='opened-div'>Some stuff</div>

這樣,您的數據屬性既可以用來綁定事件, 也可以決定要切換的元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM