我正在創建一個Web應用程序,它具有更改單個頁面上的元素的命令列表。該頁面100%依賴於JavaScript。因此,我編寫這些鏈接:使用按鈕而不是單個頁面的Web應用程序的鏈接
<a href="#">Command #1</a>
懷疑,這是語義上是正確的,我發現很多地方,說明我應該使用button
代替。
這是有道理的,但意味着我必須改變一個按鈕的樣式,看起來像一個鏈接,感覺哈克。這是正確的方法嗎?
我正在創建一個Web應用程序,它具有更改單個頁面上的元素的命令列表。該頁面100%依賴於JavaScript。因此,我編寫這些鏈接:使用按鈕而不是單個頁面的Web應用程序的鏈接
<a href="#">Command #1</a>
懷疑,這是語義上是正確的,我發現很多地方,說明我應該使用button
代替。
這是有道理的,但意味着我必須改變一個按鈕的樣式,看起來像一個鏈接,感覺哈克。這是正確的方法嗎?
HTML5規範是在相當清楚,你不應該使用a
:
如果
a
元素有href
屬性,那麼它表示超鏈接(超文本錨)。
這些鏈接到其他資源[...]
所以,不要在您的單頁Web應用程序 「動作」 使用a
。
你應該與button
或resp。input
(我會說type
的值爲button
)。
如果您想要深入瞭解更新的HTML5內容,請參閱menu
和command
。
只是可以肯定:你不應該「提高」其他元素(如span
或div
)與JS要像鏈接/按鈕。如果沒有進一步的工作,這將是無法訪問的。
太好了,謝謝你。該按鈕的附加好處是它使我能夠禁用它們。從來不知道命令,看起來很完美。謝謝! –
「到其他資源的鏈接」可能指的是當前頁面的不同狀態。因此,HTML5草案的措辭並沒有給出任何可靠的答案。 'menu'和'command'元素幾乎沒有值得一提的瀏覽器支持。在需要JavaScript支持的環境中,爲什麼'span'或'div'或其他元素不能用作JavaScript驅動的控件沒有固定的原因。按鈕是一種自然的方式,但不是唯一的。 –
@Jukka:「當前頁面的不同狀態」→你的意思是指URL片段中的「id」/「name」?或者是其他東西? – unor
我不認爲使用鏈接在語義上是不正確的。如果它讓你感覺更好,你可以將鏈接設置爲按鈕。否則,如果仍然以錯誤的方式揉搓你,那麼設計一個按鈕看起來就像是一個鏈接沒有任何不妥。您的應用程序的功能應該與您呈現按鈕的方式無關,只要它們執行相同的操作並符合您的期望。
正如評論中所提到的,如果您想使用按鈕,請記住它們的樣式爲表單元素,並且使用錨標籤可能會更困難。
或造型''看起來像一個鏈接。 – Colleen
另外請記住,當涉及到大小調整時,'button'元素樣式就像表單控件一樣。有時,如果您最初使用非形式元素(如「a」標籤),則可能需要更多的工作來獲得「提交/重置」的「按鈕」或「輸入」以與其他元素對齊。 – prodigitalson
@prodigitalson,好點,我沒有想到這一點。 – Mohamad
您給元素的風格與它的語義上是否正確的代碼無關,所以我不會太擔心。
Links
是爲了將用戶鏈接到網頁上的頁面。
HTML Input
元素旨在接受用戶輸入並與他們做事。
基於這個簡單的啓發式,我會說一個按鈕!
兩者在技術上都很好用。對我而言,如果它是文本鏈接,那麼我會使用<a>
標記,如果它是表單按鈕或圖像,請使用<button>
。這樣你就符合要素的用途了。
「語義上正確」的東西並不是一個模糊的概念。而且,我選擇的答案顯然是一個「堅實的答案」。 –