複雑な要素 (画像、段落、その他のものを含む) にリンクを設定したい。私はそれが機能することを知っていますが、<div>
要素の中に要素を入れても大丈夫<a>
ですか?
3 に答える
はいといいえ。
完全なHTMLまたはXHTMLの推奨事項では許可されていません。
HTML 5ドラフトでは許可されていますがdisplay: block
、一部のブラウザーでアンカーを機能させるには、アンカーを明示的に設定するなどの操作が必要になる場合があります。他の人が単にそれをサポートしていないことに気付くかもしれません(これに対するブラウザのサポートを示すリファレンスにリンクできるようにしたいのですが、知らない場合はコメントしてください)。
とはいえ、大きなクリックターゲットを設定すると便利ですが、一部のブラウザ(特にスクリーンリーダー)の「リンクをすくい取るモード」に適したアプローチではありません。コンテンツで通常のリンクを使用し、要素全体のクリックに反応するようにJavaScriptを適用する方がよい場合があります。
XHTML1.0 および HTML4.01 の場合: いいえ。a
は、他のインライン要素のみを含むことができるインライン要素です (ただし、別の は含みませんa
)。
HTML5 の場合: はい、許可されています。ただし、リンクに何百もの文字が含まれる理由を考えてみてください。
これは SEO にとっては悪いことであり (希薄化だと思います)、障害のある多くのユーザーにとっては悪いことです ( 「ヘイ、スクリーン リーダー、このリンクの機能を教えてください」-「このリンクを 30 分ほど読み上げさせてください」 )。使いやすさ。
別の解決策は、div または意味のあるテキストの見出しにリンクを配置することです。次に、JS で div を最初にやりたかったように動作させます。次に、支援技術 (スクリーン リーダーなど) を使用しているユーザー、キーボード ユーザー (リンクをタブで移動できる)、および JS を使用している視力のあるマウス ユーザーに対して機能します。
いいえ、IE7 以下を気にしない限り。display:block に設定しても、リンクは IE7 では正しく機能しません。