おかざきるい
こんにちは!岡崎です!
今回は実務などで使用するwebアプリ開発者が知るべき最低限のHTMLタグを紹介していきたいと思います!
detailsタグ
やdialogタグ
, articleタグ
などのタグを理解し,セマンティックWEBを心掛けるべきですので,記事で触れるタグはもちろんですがそれ以外のタグについて知っておく必要があると筆者は考えています.見出しに使用します.
原則コンテンツ構造的に不自然にならないように使用しましょう.
h1
├ h2
└ h2
├ h3
├ h3
└ h3
ロゴやサービス名などに使われることとが多い.
ページのタイトルということでブログなどの大見出しにも使用されることがある.
※正解はないのでコーディングする人のこだわりや思想によって使用場所が異なります.
h1は原則ヘッダーなどに存在するロゴに使用しています.
ブログの記事ページなど,内容がタイトルとして表すことができる場合はブログのタイトルにも使用していたりします.
HTMLの使用では複数配置することは可能ですが,原則1ページに1つがベストプラクティスとされています.
スクリーンリーダーを使用するユーザーにとって大見出しが複数ある場合混乱を招いてしまう場合があるので事情がない場合は1つにしたほうが良いでしょう.
文字を挿入する際に使用します.
段落を意味することが多いです.
押下するとページ遷移するリンクを生成することができます.href属性
にURL,target属性
を指定することによってタブに暗黙的な名称を付けたり新規タブで開くことができる.
<a href="https://" target="_blank">リンク</a>
aタグを使用することでスクリーンリーダーを使用しているユーザーに遷移するリンクというのが伝えることができる.Tabキー
でフォーカスができ,Enterキー
で遷移することができるためアクセシビリティを考慮した実装を自前でする必要がなくなる.
押下すると動作するボタンを生成することができます.
ユーザーが押せるボタンは原則buttonタグ
で作成してください.(単純にアクセシビリティやユーザービリティが良くなり,ユーザー体験が向上します.)
※押せないボタンを実装する場合はdisable属性
を付与するだけで実装するべきものが減る
特定の条件下でtype
を指定しなかった場合はsubmit
が付与されたりするのでそれを避けるためにtype属性
をつけるのを癖づけましょう.
reactのルールではtype属性を指定しないとエラーが出たりします.
<button type="button">ボタン</button>
画面遷移をbuttonタグ
でしてしまうとスクリーンリーダーを使用しているユーザーは想像しづらくなってしまうため使用方法によってタグを考える必要があります.
画像を埋め込むことができるタグです.src属性
に画像のパス,alt属性
には画像が見えない人でもわかる文字を挿入してください.
また,ただのアイコンの場合でもalt属性
は空文字だけでも指定するようにしてください.
<img src="画像のパス" alt="画像を説明する文章" />
alt属性に文字を指定することで,画像が表示できなかった場合やスクリーンリーダーを使用した場合に画像の代わりに表示することができます.
空文字を指定することで画像に意味がないことを明示的に示すことができる.
また,スクリーンリーダーを使用した場合に読み上げを飛ばすことができる.
レイアウトを取るために使用します.
文字列の中で特定の位置にスタイルを当てたい場合に使用します.
<p>〇〇を導入後、CVRが<span>30%向上</span>しました!</p>
小要素にinput
やtextarea
などの要素がある場合,submitすることでURL先に情報を送信する.Enterキー
で送信されたり,button[type=submit]
を使用することでaction
先にページリクエスト(リダイレクト)が行われる.
近年のwebアプリではrestful apiを用意しjsonを取得,フロントエンドに反映するパターンが多いため,その場合はeventを取得しpreventDefault()でデフォルトの挙動を無効化することが多いです.
※php
やrails
などのviewファイルをHTML
直書きしている場合を除きます
document.querySelector('form').addEventListener('submit', (event) => {
event.preventDefault();
})
ユーザーが入力できる要素を生成します.
type属性をにinputの種類を指定することで数字だけのキーボードが出るようにしたりできます.
required属性を付与することで,入力がされていない場合のバリデーションをブラウザ単位でサポートすることができます.
placeholder属性に文字を入れることで入力前に薄く表示される文字を設定することができます.積極的に使用しましょう.
<input type="range" id="volume" name="volume" min="0" max="11" required />
ユーザーが複数入力できる要素を生成します.
基本的にはinputタグと変わりありません.
inputタグ
やtextareaタグ
,selectタグ
などの操作対象のタイトル?ラベル?に使用します.
pタグではなくlabelタグを使用することで文字をタップした場合のfocusの挙動が操作対象の要素に移るため,単純に使いやすくなり使用を推奨しています.
<label htmlfor="inputName">名前:</label>
<input id="inputName" />
改行することができます.
初めまして,<br />〇〇です.
Webページに記述された内容について、それが何を意味するかを表す「情報についての情報」(メタデータ)を一定の規則に従って付加し、コンピュータシステムによる自律的な情報の収集や加工を可能にする構想。
セマンティックWebとは - 意味をわかりやすく - IT用語辞典 e-Words ( https://e-words.jp/w/セマンティックWeb.html )
e-Wordsさんから引用しました.
要は単にHTMLを書くだけではなく,意味付けを意識したコーディングを意識することでクローラーにも認識されやすいことからSEO的にも良く,スクリーンリーダーの読み上げが変わる場合があるのでアクセシビリティ的にもより良い実装をすることができます.
ナビゲーションに使います.
例:ヘッダーのナビゲーションリンクやパンクズリストに使用します.
<nav class="crumbs">
<ol>
<li class="crumb"><a href="#">Bikes</a></li>
<li class="crumb"><a href="#">BMX</a></li>
<li class="crumb">Jump Bike 3000</li>
</ol>
</nav>
文章の見出しと本文を囲うタグとして使用します.
detailsタグ
はsummaryタグ
と合わせて使用します.
アコーディオンメニューを作成する際にjavascriptを使用し作成することが多いですが,javascriptで作成してしまうとスクリーンリーダーの挙動が実装頼りになってしまいますがdetailsタグを使用することで正しく読み上げが行われます.
以上よく使う / 知っておいたほうが良いタグを紹介しました!
他にもarticleタグ
やfigureタグ
,tableタグ
などさまざまなタグがありますが必要に応じて調べて使用するくらいの認識で大丈夫だと思います!
また,フロントエンドエンジニアとして仕事をしていく場合は一度HTMLのタグ一覧を確認してみてもいいかもしれません!
読んでいただきありがとうございました!
おかざきるい
フロントエンド中心にコード書きます。邦ロックとアイスとカメラが好きです。
トップページへ戻る