私の理解からは、ボタンは機能を実行するために使用され、リンクはユーザーを別のページにナビゲートするために使用されます。しかし、モーダルの開閉という点でベストプラクティスは何ですか?<button>または<a>を使用してモーダルを開閉する方が便利ですか?
<a id="testModal" href="#">Open Modal</a>
または
<button id="testModal">Open Modal</button>
私の理解からは、ボタンは機能を実行するために使用され、リンクはユーザーを別のページにナビゲートするために使用されます。しかし、モーダルの開閉という点でベストプラクティスは何ですか?<button>または<a>を使用してモーダルを開閉する方が便利ですか?
<a id="testModal" href="#">Open Modal</a>
または
<button id="testModal">Open Modal</button>
<button>
変更<button>
から<a href="#">
とはそれにあなたのイベントハンドラを置きます。
要素が属しているにいくつかのより多くのコンテキスト
....コントロールは、私は別のページにかかりますか?
、クリックされたタップ、または活性化されたキーボードや音声で(あるいはここで新たなインタラクション方法を挿入)する場合であれば、ユーザーは(同じページ上のアンカーを含む)別のURLに泡立てされ、その後、<a href="[URL]">
を使用するアンカーを使用します。 href
属性を使用し、実際のURLが「#」ではないことを確認してください(それ以外の場合は、ハイパーリンクにはまったく必要ないJavaScriptを使用している可能性があります)。 href
がちょうど "#"を指している場合は、間違っている可能性があります。あなたの進歩的な強化の取り組みの一環として、指定されたアンカーを指している場合、それは完全に有効です。
コントロールが現在のページで何か変更されていますか?
アクティブにすると、ユーザーはページ(またはページ内のアンカー)に移動するのではなく、新しいビュー(メッセージボックス、レイアウトの変更など)が表示されます。 、<button>
を使用してください。<input type="button">
を使用することはできますが、既存のスタイルやそれ以降の開発者(私のような)との競合が起こりそうです。
コントロール送信フォームフィールドはありますか?
有効にすると、ユーザーが入力した情報(手動入力または画面上の項目の選択)がサーバーに返されてから<input type="submit">
を使用します。これは<form>
の中でよりよく生きています。より多くのスタイリングコントロールが必要な場合や、単なるテキスト文字列以外に埋め込む必要がある場合は、代わりに<button type="submit">
を使用してください。一瞬のキーボードユーザーの
キーボード上の考慮事項は、
と思います。ハイパーリンクは、Enterキーを押して起動できます。しかし、実際のボタンは、エンターキーまたはスペースバーを押すことによって起動することができます。ハイパーリンクにフォーカスがあり、ユーザーがスペースバーを押すと、ページは1画面分スクロールします。スクロールしない場合は、ユーザーは何も経験しません。同じように見えるインターフェイス要素のセットが与えられている場合、スペースバーを使って作業するものとそうでないものがある場合、ユーザーがページの振る舞いに大きな自信を持っているとは思えません。
スペースキーでトリガされたイベントは、キーが離されたときにのみ起動され、Enterキーを使用すると、キーを押して(離す前に)すぐにイベントが発生します。
私は2つの可能なケースがあると思います。
あなたのコンテンツが唯一の視覚的にページに隠されたり、ページに表示(スクリーンリーダーで読むことができます)とハッシュをリンクすることができますされ、その後、アンカータグが適切かもしれません(この場合は、例えば、それほど一般的ではありません。ページ上の段落や画像をモーダルとして強調表示している場合)。
ほとんどの場合、あなたのモーダルは同じページにロードされ、URLリンクを使用してナビゲートされることはありません(おそらくデータにアクセスするためのajax以外はカウントされません)。したがって、それはカスタム機能であり、ボタンが適切な選択肢です。
一言で言えば、ダイアログは現在のウィンドウ上にポップアップするものです。あなたは本当に窓から出ているわけではなく、一時的に利用できません。ダイアログが終了したら、通常はウィンドウに戻ります。その点で、別のページに行くつもりはないので、リンクを使用したくないということです。現在のページで何らかのアクションを行っています。ボタンを使用します。
スクリーンリーダーを使用している場合は、リンク先のページ(JAWSのIns + F7)を表示することがよくあります。私はまた、ページ上でどのようなアクションが利用可能であるかを見るために、ボタンのリスト(Ctrl + Ins + B)を表示します。モーダルダイアログをボタンリストに表示するアクションが必要です。