昔、HTML要素についてざっと学んだことがありましたが、記憶が曖昧になっています。 改めてHTML要素を網羅的に理解し直したいと思い、HTML解体新書-仕様から紐解く本格入門 という書籍を読んでみました。 また、HTML 要素リファレンス - HTML: ハイパーテキストマークアップ言語 | MDNも参考にしました。
この記事では、その中で特に印象に残った要素について紹介し、個人的な気づきについてお伝えします。
main は、ページ内で最も重要なコンテンツをまとめる要素で、ページごとに1つだけ使用います。
main内には、ナビゲーションなど、他のページでも共通して表示されるコンテンツは含めない方が良いとされています。
これまでは、main要素内に他のページでも繰り返される要素を含めていましたが、これを機に構成を見直したいと思います。
header と footer は、コンテンツを読む前後に配置される要素です。
書籍を読む前は、headerはグローバルナビゲーション、footerはサイト全体のフッターに使うものだと思っていました。 しかし、articleやsection要素内でも、記事のタイトルや執筆日をheader、コメントやリアクションをfooterとして使う考えに気づき、柔軟な使い方ができると感じました。
aside は、メインコンテンツと直接的な関係はないものの、補足的な情報を提供する要素です。 サイドバーや注意書き、補足説明に適しており、たとえば記事内の関連リンクなどに使用できます。
ブログ記事のarticle要素では、記事を読み終わった後のコメントやリアクションはメイン内容に直接関わるためfooterに配置し、 一方、関連記事や関連タグのリストは補足的な要素としてasideに配置するのが良さそうだと感じました。
article は、ブログ記事のように自己完結するコンテンツを表す要素です。 自己完結しているため、article要素内の内容は、その部分だけ切り取っても意味が通じることが求められます。 また、article内にはh1〜h6の見出しを付けることが推奨されます。
articleという名称からも、ブログ記事や雑誌の記事、フォーラムの投稿など、事実や内容を独立して伝える文章に使うことが想定されています。 「記事」とは「事実を書くこと、またはその文章」を指すため、この要素が自己完結的な情報に適していると理解しました。
time は、日時を表現するための要素で、datetime属性にマシンリーダブルな形式の日付を入れ、人間が読みやすい日付を表示すると良いとされています。
これまで日付の表示を何度も実装してきましたが、time要素を使用すべきだったと感じました。より正確でセマンティックな実装ができる点が魅力です。
address は、住所だけでなく連絡先を示すための要素です。
住所の他にも、SNSリンクやメールアドレスなど、連絡手段をaddress要素に含めると良さそうです。幅広く使える要素だと感じました。
section は汎用的なセクション区切りの要素で、見出しを伴うことが推奨されています。
navやasideなど、より適切な要素がある場合はそちらを優先し、それらがない場合にsectionを使用します。 セクションを区切りたいときに活用できる便利な要素です。
fieldset は、form内でチェックボックスやラジオボタンのグループをまとめる際に使用する要素です。 グループ名はlegend要素で付けることができます。
これまでに何度もチェックボックスやラジオボタンの実装を行ってきましたが、fieldsetを活用していなかったと反省しました。 より意味のあるマークアップができると感じました。
リンクに関する関係性は、 rel属性 で定義できます。外部リンクにはrel="external"を付けた方が良いでしょう。
また、 ping属性 を使うと、リンク先に遷移する前に指定したURLへPOSTリクエストが送信され、トラッキングに利用できます。 これまで独自実装で対応していましたが、ping属性を使えば簡単に実現できるため、とても便利だと感じました。
small は、補足的な情報を小さく表示するための要素です。 例えば「180円(税込)」の「税込」のような付加情報を視覚的に小さくしたいときに便利です。
em は強調を示し、strong はさらに緊急性や重要性を持つ強調に使用します。 mark は、参照や関連性がある場合に注目させたい部分に使うのが適しています。
これまでは「目立たせたい」という意味で何となくemやstrongを使っていましたが、用途に応じて使い分けることが大切だと改めて感じました...。
novalidate属性 を使用すると、入力チェック(バリデーション)を無効化できます。 下書き保存や一時的なデータ入力を許可するフォームなどで活用すると便利です。
autocomplete属性 は、ユーザーが入力する際に候補を提示するために便利です。
datalist を使用すると、input(テキスト)フィールドに候補を表示できます。 ただし、すべてのブラウザでサポートされているわけではない点に注意が必要です。
caption はtableに説明を付けるための要素で、 figcaption はfigureに説明を付けるために使用します。
どちらも、画像やテーブルの補足説明を明確にできるため、より分かりやすいコンテンツ作成に役立つと感じました。
hgroup は、タイトルとサブタイトルをグループ化する際に使用します。 これにより、関連する見出しをひとまとまりにして、より整理された構造を提供できます。
HTMLを書く際、「どちらが正しいのだろう?」と悩むことが多々ありましたが、 今回の気づきを通して、いくつかの疑問に答えが見つかったように思います。 今後は、よりセマンティックに合った要素を意識して使っていきたいです。
-
※ ログイン不要で投稿できます。
※ 同じブラウザから投稿を削除できます。
0
読み込み中...
タグ「書籍レビュー」の記事
以下の書籍を読みました。 感想について書こうと思います。 https://books.mdn.co.jp/books/3225303033/ 概要 本書では、数年以内に流行った比較的新しいCSSテクニックについて紹介されていました。 例えば
2026年03月15日
Googleレコメンドで、以下のCSSに関する書籍が流れてきました。 CSS 優良デザイン×アイデア事典 プロがシェアする現場の即戦力テクニック|株式会社エムディエヌコーポレーション - books.mdn.co.jp なんとなくレコメンド
2026年03月10日
以下の書籍を読みました。 書籍の感想を書こうと思います。 https://note.com/ingectared/n/n7883798f12ce トンマナ TONEは雰囲気や印象の調子。 MANNERはそれを形づくり形式やルール。 この2つ
2026年03月07日
タグ「フロントエンド」の記事
Webフロントエンドのコードレビューをしているときに考えていることについて書きます。 毎日1記事投稿、1記事30分という制約を課していますので、本記事は完璧ではありません。(言い訳) また希望的な考えもあるので、実践していないものもあります
2026年03月12日
AI にコードを書かせた後、余計なコードを見つけて消す作業があります。 不毛なことなので、それらの作業を減らすためのお作法を紹介します。 未使用コードを消す 以下でも書きましたが、未使用コードの検査に knip を使うことが多いです。 ht
最近、iframeを使っています。 クライアントサイドで埋め込む想定で、iframeを使おうとしています。 色々と苦労したことがあったので、書いて残しておこうと思います。 レスポンスヘッダー 前提として、ウェブアプリケーションをプロダクショ