<a>
nchor要素は、単にアンカーでありますまたは一部のコンテンツからもともとHTML仕様では名前付きアンカー(<a name="foo">
)とリンクアンカー(<a href="#foo">
)が許可されていました。
フラグメント識別子が[id]
属性を指定するようになりました(下位互換性のために、依然として[name]
属性を指定することはできますが)名前付きアンカーフォーマットはあまり一般的ではありません。 An <a>
element without an [href]
attribute is still valid。
セマンティクスとスタイリングに関する限り、<a>
要素は、[href]
属性を持たない限りリンク(:link
)ではありません。これの副作用は、<a>
要素が[href]
でない場合、デフォルトではタブ付けの順序になりません。
実際の質問は、<a>
要素だけが<button>
の適切な表現であるかどうかです。意味的レベルでは、link
とbutton
の間に明確な違いがあります。
ボタンは、クリックするとアクションが発生する原因となります。
リンクは、現在のドキュメントのナビゲーションを変更するボタンです。発生したナビゲーションは、フラグメント識別子(#foo
)の場合は文書内を移動するか、URLの場合は新しい文書に移動します(/bar
)。
リンクは特別な種類のボタンなので、代替機能を実行するためにアクションがオーバーライドされることがよくあります。アンカーをボタンとして使用し続けることは、一貫性の観点からは大丈夫ですが、意味的にはそれほど正確ではありません。
あなたがボタンとして<a>
要素(または<span>
、または<div>
)を使用しての意味とアクセシビリティを懸念している場合は、次の属性を追加する必要があります
<a role="button" tabindex="0" ...>...</a>
button roleは、ユーザーのことを伝えます特定の要素は、下位の要素が持つ可能性のあるセマンティクスのオーバーライドとしてボタンとして扱われます。 <span>
と<div>
要素については
、あなたはスペースのためのJavaScriptのキーリスナーを追加したり、click
イベントをトリガするを入力することもできます。 <a href>
と<button>
の要素はデフォルトでこれを行いますが、ボタンのない要素はそうしません。 click
トリガーを別のキーにバインドする方が意味がある場合もあります。たとえば、Webアプリケーションの「ヘルプ」ボタンは、F1にバインドされている可能性があります。
'href ="# "'聞いたことがあります。 'javascript:void(0)'聞いたことがあります。これまで私はこれまで聞いたことがないが、最も理にかなっているようだ。これは標準であり、ほとんどのブラウザで機能します。 – Zacqary
@Zacqary、 '[role =" button "]'は何も具体的なことはしませんが、あなたはまだクリックイベントを聞く必要があります。これは、スクリーンリーダーが元の意味値ではなくボタンとして要素を表すことを知るように、補助ナビゲーション(別名スクリーンリーダー)に使用されることを意味します。 '[tabindex]'を追加すると、その要素がタブ順に追加されます。特別な状況では、実際にはタブをナビゲート可能にする必要はないかもしれませんが、オプションの属性です。既にボタンである要素は、 '[role =" button "]'を必要としません。 – zzzzBov
hrefなしで名前なしのアンカータグを使用するのは有効なHTMLですか?私たちのアプリでは無効にされている(したがってhref属性はありませんが)ユーザーにはまだ表示されている削除リンクがいくつかあります。 –