HTMLのa要素にはhref属性を指定しなくてもよい ― 2022年10月20日 23時30分
HTMLのa
要素はハイパーリンクを表す要素であり、リンク先のURLをhref
属性に指定します。しかし、a
要素の役割はそれだけではありません。HTML標準によれば、a
要素は「リンクとなりうる箇所のプレースホルダー」として使うこともできます。この場合はhref
属性を指定しません。
リンクとなりうる箇所の例として、ナビゲーションやタブUI、パンくずリストなどでの「現在の項目」があります。
<nav>
<ul>
<li><a href="/">ホーム</a></li>
<li><a>最新記事</a></li>
<li><a href="/archives">アーカイブ</a></li>
<li><a href="/settings">設定</a></li>
</ul>
</nav>
ReactなどJSXでa
要素を生成する場合、href
属性を指定しないためにはhref
プロパティにundefined
を指定します。
import React from "react";
type Item = {
label: string;
url: string;
isCurrent: boolean;
};
type Props = {
items: readonly Item[];
};
const Navigation: React.FC<Props> = ({ items }) => (
<nav>
<ul>
{items.map((item) => (
<li>
<a href={item.isCurrent ? undefined : item.url}>
{item.label}
</a>
</li>
))}
</ul>
</nav>
);
リンクのプレースホルダーとしてのa
要素は、うまく使えばテンプレートやCSSの記述を簡潔にできます。覚えておいて損はないでしょう。
なお、a
要素にhref
属性を指定しないと聞いてname
属性を指定するのかと思った人もいるでしょうが、現在のHTML標準ではa
要素のname
属性は廃止済みであり指定すべきでないとされています。
コメント
トラックバック
このエントリのトラックバックURL: http://nanto.asablo.jp/blog/2022/10/20/9534734/tb
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※投稿には管理者が設定した質問に答える必要があります。