CSSのcolumn-spanプロパティ:詳細ガイド


column-spanプロパティは、マルチカラムレイアウトにおいて、要素が占めるカラム数を指定するために使用されます。これは、段落、見出し、画像など、様々な要素に適用できます。

構文

selector {
  column-span: value;
}

  • <integer>:要素は指定された数のカラムにまたがって表示されます。
  • all:要素はすべてのカラムにまたがって表示されます。
  • none:要素は1つのカラムにのみ表示されます。(デフォルト)

次の例では、#header要素はすべてのカラムにまたがって表示され、#main要素は2つのカラムにまたがって表示されます。

#container {
  column-count: 3;
}

#header {
  column-span: all;
  background-color: #f0f0f0;
}

#main {
  column-span: 2;
  padding: 10px;
}
  • column-gapプロパティを使用して、カラム間のスペースを調整することができます。
  • 要素がcolumn-spanプロパティによって複数のカラムにまたがる場合、その要素の高さは自動的に調整されます。
  • column-spanプロパティは、インライン要素には適用できません。


<!DOCTYPE html>
<html>
<head>
  <title>Column Span Example</title>
  <style>
    #container {
      column-count: 3;
      column-gap: 20px;
    }

    #header {
      column-span: all;
      background-color: #f0f0f0;
      padding: 10px;
      text-align: center;
    }

    #main {
      column-span: 2;
      padding: 10px;
    }

    #sidebar {
      padding: 10px;
    }
  </style>
</head>
<body>
  <div id="container">
    <h1 id="header">This is the header</h1>
    <p id="main">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed et quam eget ipsum ullamcorper tincidunt. Nullam convallis risus eget quam aliquam, eget ullamcorper quam tincidunt. Sed velit mauris, tincidunt eget enim sit amet, ullamcorper quis enim. Donec vitae leo eget mi congue tincidunt. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed elementum leo vel lectus cursus, at laoreet mi ultricies. Nullam eget quam euismod, semper risus vitae, tincidunt dui. Donec sed dui ac tellus suscipit hendrerit.</p>
    <aside id="sidebar">
      <h2>Sidebar</h2>
      <ul>
        <li>Item 1</li>
        <li>Item 2</li>
        <li>Item 3</li>
      </ul>
    </aside>
  </div>
</body>
</html>

この例では、#header要素はすべてのカラムにまたがり、#main要素は2つのカラムにまたがり、#sidebar要素は1つのカラムを占有します。

応用例

以下の例は、column-spanプロパティを使用して、より複雑なレイアウトを作成する方法を示しています。

<!DOCTYPE html>
<html>
<head>
  <title>Full-Width Header and Footer</title>
  <style>
    #container {
      column-count: 2;
      column-gap: 20px;
    }

    #header {
      column-span: all;
      background-color: #f0f0f0;
      padding: 10px;
      text-align: center;
    }

    #main {
      padding: 10px;
    }

    #footer {
      column-span: all;
      background-color: #f0f0f0;
      padding: 10px;
      text-align: center;
    }
  </style>
</head>
<body>
  <div id="container">
    <h1 id="header">This is the header</h1>
    <p id="main">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed et quam eget ipsum ullamcorper tincidunt. Nullam convallis risus eget quam aliquam, eget ullamcorper quam tincidunt. Sed velit mauris, tincidunt eget enim sit amet, ullamcorper quis enim. Donec vitae leo eget mi congue tincidunt. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed elementum leo vel lectus cursus, at laoreet mi ultricies. Nullam eget quam euismod, semper risus vitae, tincidunt dui. Donec sed dui ac tellus suscipit hendrerit.</p>
    <p id="main">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed et quam eget ipsum ullamcorper tincidunt. Nullam convallis risus eget quam aliquam, eget ullamcorper quam tincidunt. Sed velit mauris, tincidunt eget enim sit amet, ullamcorper quis


grid-layoutモジュールを使用する

CSS grid-layoutモジュールは、より柔軟で強力なレイアウトを作成するための機能を提供します。column-spanプロパティと同様に、要素を複数のカラムにまたがらせることができますが、行方向にも要素をスパンすることができます。さらに、grid-layoutモジュールを使用して、より複雑なレイアウトを作成することもできます。

利点

  • レスポンシブレイアウトを簡単に作成できる
  • 行方向にも要素をスパンできる
  • より柔軟で強力なレイアウトを作成できる

欠点

  • 古いブラウザではサポートされていない場合がある
  • column-spanプロパティよりも複雑で習得するのが難しい


#container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  column-gap: 20px;
}

#header {
  grid-column: 1 / span 3;
  background-color: #f0f0f0;
  padding: 10px;
  text-align: center;
}

#main {
  grid-column: 2;
  padding: 10px;
}

#sidebar {
  grid-column: 3;
  padding: 10px;
}

floatプロパティを使用する

floatプロパティを使用して、要素を左右に寄せることができます。この方法を使用して、要素を複数のカラムにまたがらせることもできますが、column-spanプロパティほど柔軟ではありません。また、古いブラウザではレイアウトが崩れる可能性があります。

利点

  • シンプルで理解しやすい

欠点

  • レスポンシブレイアウトに適していない
  • 古いブラウザでレイアウトが崩れる可能性がある
  • column-spanプロパティほど柔軟ではない


#container {
  column-count: 3;
  column-gap: 20px;
}

#header {
  float: left;
  width: 100%;
  background-color: #f0f0f0;
  padding: 10px;
  text-align: center;
}

#main {
  float: left;
  width: 66.66%;
  padding: 10px;
}

#sidebar {
  float: right;
  width: 33.33%;
  padding: 10px;
}

絶対配置を使用する

絶対配置を使用して、要素を好きな場所に配置することができます。この方法を使用して、要素を複数のカラムにまたがらせることもできますが、複雑でメンテナンスが難しくなる可能性があります。

利点

  • 要素を好きな場所に配置できる

欠点

  • レスポンシブレイアウトに適していない
  • 複雑でメンテナンスが難しい


#container {
  position: relative;
  column-count: 3;
  column-gap: 20px;
}

#header {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  background-color: #f0f0f0;
  padding: 10px;
  text-align: center;
}

#main {
  position: absolute;
  top: 0;
  left: 50%;
  width: 66.66%;
  padding: 10px;
}

#sidebar {
  position: absolute;
  top: 0;
  right: 0;
  width: 33.33%;
  padding: 10px;
}

column-spanプロパティは、多くの場合、マルチカラムレイアウトで要素をスパンさせるための最良の方法ですが、状況によっては代替手段が必要となる場合があります。上記で紹介した代替方法はそれぞれ利点と欠点があるため、要件に合わせて最適な方法を選択する必要があります。

  • 要素が`column-
  • column-spanプロパティは、インライン要素には適用できません。