2012-10-15 38 views
0

我正在創建一個Web應用程序,它具有更改單個頁面上的元素的命令列表。該頁面100%依賴於JavaScript。因此,我編寫這些鏈接:使用按鈕而不是單個頁面的Web應用程序的鏈接

<a href="#">Command #1</a> 

懷疑,這是語義上是正確的,我發現很多地方,說明我應該使用button代替。

這是有道理的,但意味着我必須改變一個按鈕的樣式,看起來像一個鏈接,感覺哈克。這是正確的方法嗎?

+1

「語義上正確」的東西並不是一個模糊的概念。而且,我選擇的答案顯然是一個「堅實的答案」。 –

回答

1

HTML5規範是在相當清楚,你不應該使用a

如果a元素有href屬性,那麼它表示超鏈接(超文本錨)。

definition of "hyperlink"是:

這些鏈接到其他資源[...]

所以,不要在您的單頁Web應用程序 「動作」 使用a

你應該與button或resp。input(我會說type的值爲button)。

如果您想要深入瞭解更新的HTML5內容,請參閱menucommand


只是可以肯定:你不應該「提高」其他元素(如spandiv)與JS要像鏈接/按鈕。如果沒有進一步的工作,這將是無法訪問的。

+0

太好了,謝謝你。該按鈕的附加好處是它使我能夠禁用它們。從來不知道命令,看起來很完美。謝謝! –

+1

「到其他資源的鏈接」可能指的是當前頁面的不同狀態。因此,HTML5草案的措辭並沒有給出任何可靠的答案。 'menu'和'command'元素幾乎沒有值得一提的瀏覽器支持。在需要JavaScript支持的環境中,爲什麼'span'或'div'或其他元素不能用作JavaScript驅動的控件沒有固定的原因。按鈕是一種自然的方式,但不是唯一的。 –

+0

@Jukka:「當前頁面的不同狀態」→你的意思是指URL片段中的「id」/「name」?或者是其他東西? – unor

0

我不認爲使用鏈接在語義上是不正確的。如果它讓你感覺更好,你可以將鏈接設置爲按鈕。否則,如果仍然以錯誤的方式揉搓你,那麼設計一個按鈕看起來就像是一個鏈接沒有任何不妥。您的應用程序的功能應該與您呈現按鈕的方式無關,只要它們執行相同的操作並符合您的期望。

正如評論中所提到的,如果您想使用按鈕,請記住它們的樣式爲表單元素,並且使用錨標籤可能會更困難。

+0

或造型''看起來像一個鏈接。 – Colleen

+0

另外請記住,當涉及到大小調整時,'button'元素樣式就像表單控件一樣。有時,如果您最初使用非形式元素(如「a」標籤),則可能需要更多的工作來獲得「提交/重置」的「按鈕」或「輸入」以與其他元素對齊。 – prodigitalson

+0

@prodigitalson,好點,我沒有想到這一點。 – Mohamad

2

您給元素的風格與它的語義上是否正確的代碼無關,所以我不會太擔心。

Links是爲了將用戶鏈接到網頁上的頁面。

HTML Input元素旨在接受用戶輸入並與他們做事。

基於這個簡單的啓發式,我會說一個按鈕!

0

兩者在技術上都很好用。對我而言,如果它是文本鏈接,那麼我會使用<a>標記,如果它是表單按鈕或圖像,請使用<button>。這樣你就符合要素的用途了。

0

一般來說,我更喜歡使用div的這些東西。鏈接帶有許多固有的瀏覽器樣式,對於按鈕更是如此。 Div唯一的規則是display:block。所以它爲我節省了一些重置css行。另外它可以節省我一些js代碼來防止默認行爲。再加上這樣的事實,即沒有正確的語義選擇,那麼使用div就很有意義。

+0

鍵盤用戶如何激活「'div'按鈕」? – unor

+0

這對於可訪問性來說是不好的做法。如果您的推理是默認樣式,請嘗試使用CSS重置。 – user1337

相關問題