3

フォーム上にない限り、<a>アンカータグはほとんどの場合ボタンとして使用されます。

私の質問は、なぜ<a>タグが使用されるのかではなく、なぜタグも使用されるのかというhref="#"ことです。

私の理解では、hrefがない場合は有効なhtmlであり、実際には、hrefがある場合にのみトリガーされるため、「ボタン」アンカーと<a>リンクアンカータグをより区別できます。カーソルもポインタに戻すことができ、を変更することでテキストがハイライトされる問題が発生します。(:link:visited::selection

どちらも影響を受けますが:active(リンクについて言うことで区別できますがa:visited:active, a:link:active {---})、これを行わないと考えることができる唯一の理由は、タブの順序も削除されることです。

ただし、プラス面としては、削除してhref="#"(ページのテスト、JavaScriptが無効になっているなどの場合に便利です)、「ボタン」に異なるデフォルトスタイルを指定し、コードで区別しやすくなります。また、いつでも割り当ててタブフローtabindex="0"に戻すことができます。将来、cssは、Operaですでに導入されているnav-indexを導入する可能性があります(これはリスクのあるプロパティですが)。

タブの順序を削除するのは面倒な場合がありますが、私はそれをそのように考えています。単に「ボタン」とリンクを区別するhref="#"ために置き換えるだけで、スタイルを設定することもできます。tabindex="0"

ですから、なぜ使用されるのかという私の最初の質問href="#"が依然として私の主な焦点だと思いますが、リンクを「ボタン」から分離するためのより良い方法になる可能性があるために、なぜ実行すべき/すべきでないのかという興味のあるポイントを見逃した場合は聞きたいです。 。

4

2 に答える 2

2

href="#"一部の(実際に)古いブラウザonclickはリンクのみのような属性をサポートしていたため、この属性が使用されます。を使用href="#"することによりa、この意味で要素をリンクに変換します。その後、元の理由は忘れられ、人々はコードをコピーしただけでした。

ブラウザでJavaScriptが無効になっている場合、href="#"属性は要素を現在のドキュメントの先頭へのリンクにします。これが合理的なフォールバックになることはほとんどありません。JavaScript以外のフォールバックを提供するには、href属性がサーバー側のフォールバックを含むURLを指している必要があります。

JavaScriptが有効になっていて、作成者がイベントハンドラーを終了するのを忘れた場合、return falseまたは通常のリンク処理を抑制する何かを忘れた場合、ハンドラーの実行後にリンクがたどられます。そのため、現在のページが再読み込みされ、先頭に配置されます。これは見過ごされる場合とされない場合があります。

于 2012-08-15T19:37:37.227 に答える
0

アンカータグボタンに「#screen1」、「#screen2」などのhrefを付け、それをある種のルーティングまたはURLマッチングと組み合わせると、アプリケーションでブラウザの戻るボタンと進むボタンを利用できるようになります。

#screen1をクリックしてから#screen2をクリックし、戻るボタンを使用してscreen1にアクセスできると便利な場合は、この方法でhrefを使用することをお勧めします。

于 2012-08-15T19:30:27.833 に答える