リストのなかのリスト、どう整える?「ネスト(入れ子)」を美しく見せる魔法のコツ
こんにちは!Web制作の世界へようこそ。
HTMLでリストを作っているとき、「この項目の下に、さらに細かい項目を並べたいな」と思うこと、ありますよね。例えば、お買い物のメモを作るとき、「野菜」という項目の下に「キャベツ」「人参」と並べたいようなケースです。
これを技術用語で「ネスト(入れ子)」と呼びます。
でも、いざやってみると「あれ?なんだかインデント(左側の余白)が深すぎて変な見た目になっちゃった…」「親のスタイルが子にも引き継がれて崩れてしまう」なんて経験、一度はありませんか?
大丈夫です。これ、初心者が必ずと言っていいほどつまずく「登竜門」のようなもの。今日は、このリストのインデントを自分好みに、そして綺麗に制御する方法を、一緒に紐解いていきましょう!
—
なぜ「リストの中にリスト」を入れると崩れるの?
ブラウザには、もともと「リストは左側にこれくらいの余白(パディング)をとるよ!」という初期設定があります。
リストの中にさらにリストを入れると、その「初期設定の余白」が二重、三重に重なってしまうんです。結果として、どんどん右側に押しやられて、ガタガタの見た目になってしまう……これが正体です。
これを解決するコツは、「ブラウザの言いなりにならず、自分たちで余白をリセットする」こと。たったこれだけで、驚くほどスッキリしますよ。
—
ステップ1:まずはHTMLの基本を整理する
まずは、入れ子構造をしっかり作ってみましょう。ポイントは、`li`(リスト項目)の中に、さらに新しい`ul`(リスト)をそっと潜り込ませることです。
- お買い物リスト
- キャベツ
- 人参
- 掃除用具
ここで大切なのは、「リストの階層を意識したマークアップ」です。`li`の中に`ul`が入るという形を崩さないようにしてくださいね。
—
ステップ2:CSSで「インデント」を支配する
さあ、ここからが腕の見せ所です!CSSを使って、この重なり合う余白をコントロールします。
重要なのは、`padding-left` を指定して、自分たちが心地よいと思う「深さ」に調整してあげること。そして、デフォルトでついている余白を一度「0」にリセットするのが鉄則です。
/ リストの初期設定を一旦リセットします /
.main-list, .sub-list {
list-style: none; / 点(マーク)を一旦消す /
padding-left: 0; / ブラウザの初期余白を消去 /
}
/ 階層ごとの見た目を整える /
.main-list {
padding-left: 20px; / 親リストの左側余白 /
}
.sub-list {
margin-top: 10px; / 親項目との距離を確保 /
padding-left: 30px; / 子リストのインデントを少し深めにする /
border-left: 2px solid #ccc; / 階層が見えやすいように線を追加 /
}
/ 項目に個性を出す /
.sub-list li {
margin-bottom: 5px;
color: #555;
}
このコードのポイント
- `list-style: none;`: これで、ブラウザが勝手につける「点」を消せます。オリジナルのアイコンを使いたいときにも役立ちますよ。
- `padding-left` の調整: 親と子のインデント幅を変えることで、視覚的に「あ、これは子項目なんだな」と直感的に伝わるようになります。
—
「継承」を味方につける心構え
CSSの素晴らしいところであり、ときに厄介なのが「継承(親のスタイルが子に伝わること)」です。
もし「ネストしたリストだけ文字サイズを小さくしたい」という場合は、以下のようにセレクタを工夫するだけでOKです。
.main-list { font-size: 16px; }
.sub-list { font-size: 14px; } / 親の影響を受けつつ、上書きができる /
こうして、「親のリストは大きく、その中のリストは少し控えめに」といったメリハリをつけると、デザインの完成度がグッと上がります。
—
最後に:完璧を目指さなくていいんです
Web制作を始めたばかりの頃は、「なぜかコード通りにならない!」と頭を抱えることも多いはず。でも、それはあなたが「どうすれば綺麗に見えるか」を真剣に考えている証拠です。
まずは、`padding-left` を「0」にして、自分の手で余白を足していく……というプロセスを試してみてください。ブラウザのデフォルトに頼らず、自分の手でコントロールできるようになると、Web制作はもっと楽しくなりますよ。
もし崩れてしまっても大丈夫。デベロッパーツール(ブラウザの右クリック→「検証」)を開いて、どこに余白があるのか一つずつチェックしていけば、必ず答えは見つかります。
あなたのコードが、世界中の誰かにとって読みやすいものになりますように。応援しています!

コメント