本文へ
ハクソク

世界を動かす技術を、日本語で。

HTMLリスト

元記事: 原文(blog.frankmtaylor.com)

概要

  • HTMLでの リスト の種類と使い分けについて解説
  • コントロールリスト、 順序付きリスト、 説明リスト など多様なリスト形式を紹介
  • + や + の実用例を提示
  • リスト選択時の 注意点 や アクセシビリティ の観点もカバー
  • 実際のHTMLコード例とともに 応用的な使い方 を解説

あなたの知らないHTMLリストの世界

  • HTMLには 5種類 のリストが存在
    • 順序付きリスト(
        )
    • 順序なしリスト(
        )
    • 説明リスト()
    • メニューリスト()
    • コントロールリスト(++)
  • MDNやW3Schoolsの入門ではなく、 実践的・応用的な視点 から解説
  • リストの スタイリング 方法ではなく、 適切な使い分け に焦点

どのリストを使うべきかの判断基準

  • ユーザー入力用のコントロール なら
    • + (固定リスト)
    • + (候補リスト)
  • 順番が意味を持つ場合 は
      (順序付きリスト)
    1. キーと値のペア なら (説明リスト)
    2. UIの操作用コントロール なら (メニューリスト)
    3. 上記以外 は
        (順序なしリスト)

      コントロールリストの使い方

      • +

        • ユーザーが リストから1つまたは複数選択 する場合に利用

        • multiple属性 で複数選択も可能

        • optgroup で選択肢をグループ分け

        • disabled属性 で選択不可グループの設定も可能


        • で視覚的な区切りも追加可能(CSS不要)

        • 例:言語選択リスト

          • ...
      • +

        • ユーザーに 候補を提示しつつ自由入力 を許可
        • datalistにidを付与 し、inputのlist属性に指定
        • optionのvalue属性 利用時は注意
          • valueが入力値になり、ラベルと異なる表示になるため混乱の原因
        • 数値や週などの特殊な型 にも対応
        • と組み合わせて ラベル付き目盛 も実現可能
        • ブラウザ間の表示差 に注意(Chrome系はCSSで柔軟、Firefoxは追加対応要)

      順序付きリスト(
        )の活用

      • 順番が意味を持つ情報 の集合に利用

        • アルゴリズム
        • イベントの時系列
        • 手順やレシピ
        • アルファベットなど連続性のあるリスト
      • 視覚的な番号付け の有無ではなく、 順序の重要性 で判断

      • 順序が変わると 意味が変わる情報 は必ず

          を使用

          • 例:バナナブレッドのレシピ
              1. オーブンを予熱し、型に油を塗る
              2. 材料を混ぜる
              3. 型に生地を流し込む
              4. 焼き上げる

      まとめと実践ポイント

      • HTMLリストの使い分け は構造・意味を重視
      • アクセシビリティ や ユーザー体験 を考慮した選択
      • ネイティブ要素 の利用でブラウザ互換性や保守性向上
      • ラベル・値の混同 や ブラウザ差異 に注意
      • リストの本質 は「情報のまとまり」と「意味の伝達」

      このガイドを参考に、 最適なリスト形式 を選択し、より 意味のあるHTML構造 を実現してください。

      提供: ハクソク · 要約更新:

      AIによる日本語要約です。内容は原文とあわせてご確認ください。

      Hacker Newsの議論を読む

      Hackerたちの意見

      フロントエンドリードを何年もやってたのに、知らなかった役立つ情報がいっぱいあった!これ、仕事で絶対使うようにするよ。

      ちょっと楽しい読み物だった。例をテストしてみたら、datalistがモバイルサファリではうまく動かないみたいだね(かなり大きな市場だから、互換性の問題があるなら使う価値はほぼないって言えるかも)。

      └

      初めての仕事をしていた頃、datalistはFirefoxでは動かなかったんだ。それが原因で、Firefoxはサポートされているブラウザのリストから外れちゃった。Chrome以外のブラウザをサポートするのは、ずっと問題だったよ。

      └

      うまく動くけど、iOSのGBoardではダメなんだよね。

      └

      AndroidのFirefoxでも動かないね。

      └

      入力とdatalistは、HTMLで言うところのWindowsのコンボボックスみたいなもので、昔は最悪のUI要素って言われてたんだよね。(これ、使いやすさに関する記事でミーム状態になってたから、あんまりおすすめじゃないかも。)

      これが本当のHTMLマジックって感じだね:一、二、三

      └

      一、二、三、修正したよ。

      「選択肢がたくさんあるけど、[理由]でユーザーにその一部を選ばせたくない場合はどうする?」オプトグループにdisabled属性を追加しよう。モバイルサファリでは壊れてるみたいで、実際には無効になってないから、無効なアイテムも選べちゃう。

      └

      壊れてるわけじゃないけど、最新のサファリで動くはずなのに変だね。https://caniuse.com/mdn-html_elements_optgroup_disabled これはサファリのバグかもしれない。

      良い情報だけど、datalistにはあまり期待しない方がいいよ。実際に役立つにはフックが足りなさすぎるから、ちょっとしたプロトタイプ以外には使えない。

      └

      一度datalistを使ってコンボボックスを作ろうとしたけど、うまくいかなかったな。

      Hacker Newsで議論の続きを見る