2012-08-15 93 views
2

我發現,除非在表格上,<a>錨標籤幾乎總是用作按鈕。錨標籤作爲按鈕沒有href

我的問題不是爲什麼使用<a>標籤,而是爲什麼使用href="#"也。

據我瞭解,<a>沒有href是有效的HTML,事實上,提供了更多的差異化「按鈕」錨鏈接錨標記之間,如:link:visited如果有一個href只觸發。即使光標可以更改回指針,並通過更改::selection來突出顯示文本。 (example

雖然兩者都受影響:active(雖然甚至可以說a:visited:active, a:link:active {---}中的鏈接進行區分),我能想到的不是唯一的理由這樣做是Tab鍵順序也將被刪除。

然而,從好的一面,你可以刪除href="#"(這可以在測試頁面,JavaScript被禁用等有用),給一個'按鈕'不同的默認樣式,並更容易區分碼。另外,你總是可以將它分配給tabindex="0"以將其放回到標籤頁流中,並且在未來的css中可能會引入已在Opera中引入的nav-index(儘管這是一個有風險的屬性)。雖然刪除標籤順序可能很麻煩,但我認爲它是這樣的:您只需替換href="#"替換爲tabindex="0",它仍然區分「按鈕」和鏈接,並允許您對它們進行樣式設置。

所以我想我爲什麼href="#"被使用的原始問題仍然是我的主要焦點,但想聽聽我是否錯過了爲什麼應該/不應該做的潛在更好的分離方法從「按鈕」鏈接。

+1

錨標籤不再需要。給一個元素一個ID,你可以用它作爲一個錨點。 – 2012-08-15 19:21:59

+2

@arxanas:是的,我聽說HTML6正在刪除除'div'之外的所有元素。這真的會給網絡發展帶來革命性的變化。 – 2012-08-15 19:25:01

+0

@Lèsemajesté無論如何,誰需要所有這些新的麻煩標籤?有用的。 – Fewfre 2012-08-15 19:26:40

回答

2

使用屬性href="#"是因爲某些(真的)舊瀏覽器僅支持鏈接屬性,如onclick。通過使用href="#",您在此意義上將a元素轉換爲鏈接。後來,原來的原因被遺忘了,人們只是複製代碼。

當JavaScript在瀏覽器中被禁用時,href="#"屬性使該元素成爲當前文檔開始的鏈接。這幾乎從來都不是合理的回退;爲了提供非JavaScript回退,href屬性應該指向包含一些服務器端回退的URL。

當啓用JavaScript並且作者忘記了結束使用return false或其他能夠抑制正常鏈接處理的事件處理程序時,在處理程序執行後會執行鏈接。所以當前頁面被重新加載並定位在開始處。這可能會或可能不會被忽視。

+0

真的很老,你的意思是不再使用(或非常罕見)?而通過服務器端回退,你的意思是像(或許)PHP文件可以做同樣的事情,即使頁面會改變?雖然這並非總是可行,但我可以看到這個目的。 – Fewfre 2012-08-15 19:49:26

+0

真的很老,我的意思是像Netscape 4.通過服務器端回退,我確實是指(例如)一個PHP文件,它以某種方式重複了JavaScript代碼的功能。這並不總是可能的,或可行的。 – 2012-08-15 21:44:20

0

爲錨標籤按鈕提供諸如「#screen1」,「#screen2」之類的東西,並將它與某種路由或url匹配相結合,可以讓您的應用程序利用瀏覽器的後退和前進按鈕。

如果點擊#screen1,然後點擊#screen2,然後能夠使用後退按鈕進入screen1對於您的應用程序非常有用,您可能希望以這種方式使用hrefs。

+0

我在問如何使用它們作爲按鈕,而不是鏈接。換句話說,我問是否應該使用href值/不使用會導致問題。 – Fewfre 2012-08-15 19:35:51

+0

看看:http://www.containerstore.com/elfa/designCenter/index.htm左側的按鈕是帶有hrefs的錨定標籤,使用後退和前進將使您通過以前打開的菜單。 – NikB 2012-08-15 22:08:32