CSS - 複数カラムレイアウト

こんにちは、Web開発者の卵さんたち!今日は、CSSの複数カラムレイアウトのワクワクする世界に飛び込みます。あなたの近所の親切なコンピュータの先生として、私は多くの例と説明を交えてこの旅を案内します。それでは、始めましょう!

CSS - Multi columns

複数カラムレイアウトの紹介

新聞を読んでいると、テキストが整然とカラムに組まれていることに気づきますよね?それはまさに、私たちがWebページ上でCSSを使って達成しようとしているものです!複数カラムレイアウトを使うことで、視覚的に魅力的で読みやすいコンテンツ構造を作成できます。

CSS 複数カラムレイアウト - 3カラムレイアウト

まずは基本的な3カラムレイアウトから始めましょう。これは雑誌スタイルのコンテンツを作成するのに最適で、ウェブページ上の情報を整理するのにも役立ちます。

<div class="three-column">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
.three-column {
column-count: 3;
column-gap: 40px;
}

この例では、column-countプロパティを使って3カラムを指定しています。column-gapプロパティは各カラム間のスペースを設定します。

CSS 複数カラムレイアウト - column-widthの設定

時々、カラムの数を指定する代わりに、各カラムの特定の幅を設定したい場合があります。その方法を見てみましょう:

<div class="flexible-columns">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
.flexible-columns {
column-width: 200px;
}

ここでは、column-widthを使って各カラムの幅を200ピクセルに設定しています。ブラウザはこの幅を保ちながら、可能な限り多くのカラムを作成します。

CSS 複数カラムレイアウト - カラムのスタイル

今度はカラムに少しスタイルを加えましょう。境界線を追加したり、背景色を変更したり、さらに他のこともできます!

<div class="styled-columns">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
.styled-columns {
column-count: 3;
column-gap: 40px;
column-rule: 4px dotted #ff00ff;
column-rule-style: dotted;
column-rule-width: 4px;
column-rule-color: #ff00ff;
}

この例では、column-ruleを shorthand プロパティとして使ってカラム間に点線を追加しています。これらのプロパティは個別に column-rule-stylecolumn-rule-width、および column-rule-color を使って設定することもできます。

CSS 複数カラムレイアウト - カラム跨ぎ

時々、コンテンツの一部を複数のカラムに跨げたい場合があります。それをどうやるか見てみましょう:

<div class="spanning-columns">
<h2>この見出しはすべてのカラムに跨ります</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<p class="span-two">このパラグラフは2カラムに跨ります。Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
<p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>
</div>
.spanning-columns {
column-count: 3;
column-gap: 40px;
}

.spanning-columns h2 {
column-span: all;
text-align: center;
}

.span-two {
column-span: 2;
background-color: #f0f0f0;
padding: 10px;
}

ここでは、column-span: allを使って見出しがすべてのカラムに跨るようにし、column-span: 2を使ってパラグラフが2カラムに跨るようにしています。

CSS 複数カラムレイアウト - フラグメント化

フラグメント化は、コンテンツがカラム間でどのように分割されるかを指します。それをどのように制御できるか見てみましょう:

<div class="fragmented-columns">
<h3>第1章</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<h3>第2章</h3>
<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
.fragmented-columns {
column-count: 2;
column-gap: 40px;
}

.fragmented-columns h3 {
break-after: column;
}

この例では、break-after: columnを使って各章の見出しが新しいカラムの顶部から始まるようにしています。

関連プロパティ

これまで学んだすべてのプロパティを便利な表にまとめます:

プロパティ 説明
column-count カラムの数を指定
column-width 各カラムの幅を設定
column-gap カラム間のスペースを定義
column-rule カラム間の線を設定する shorthand プロパティ
column-rule-style カラムルールのスタイルを設定
column-rule-width カラムルールの幅を設定
column-rule-color カラムルールの色を設定
column-span 要素がカラムに跨るかどうかを指定
break-after 要素の後ろでのカラム分割を制御

そして、それで終わりです、皆さん!私たちはCSSの複数カラムレイアウトの世界を旅しました。練習が成功の鍵ですので、これらのプロパティを試してみてください。誰 knows? 次の大きな雑誌スタイルのウェブサイトを作成するかもしれません!

私の古い教授がよく言っていたように、「CSSは料理みたいなものです。最初はごちゃつくかもしれませんが、練習を積むことで、すぐに名作を創作できるようになります!」 codingを続け、学び続け、そして最も重要なのは、楽しむことです!

Credits: Image by storyset