Web検索はbingがおすすめ!

column-count を利用した段組みで、途中で次の列に分割表示されないようにする - CSS

column-count を利用した段組みで、途中で次の列に分割表示されないようにするコードを紹介します。

概要

column-count を利用して段組みされた表示ができますが、枠の途中で次の列に分割されて表示されてしまう場合があります。 この記事では、枠の途中で次の列に分割されないようにするコードを紹介します。

書式

枠の途中で分割されないようにするには break-inside プロパティを設定します。
break-inside:avoid;
プロパティの値には以下が指定できます。

意味
avoid 途中の改ページ、段落区切り、領域区切りいずれも禁止します。
avoid-page 途中の改ページを禁止します。
avoid-column 途中の段区切りを禁止します。
avoid-region 途中の領域区切りを禁止します。
auto 途中での分割を許容します。

実装例

コード

以下のコードを記述します。
column-count-simple-avoid-break.html
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
  <link rel="stylesheet" href="column-count-simple-avoid-break.css" />
</head>
<body>
  <h1>column-count による段組みのデモ (break-inside:avoid)</h1>

  <div class="Container">
    <div class="ContentFrame">
      <p>枠1です。</p>
      <p>枠1のサブキャプションです。<br />あいうえお</p>
      <ul>
        <li>AAAAA</li>
        <li>BBBBB</li>
        <li>CCCCC</li>
      </ul>
    </div>

    <div class="ContentFrame">
      <p>枠2です。</p>
    </div>

    <div class="ContentFrame">
      <p>枠3です。</p>
      <p>枠3のサブキャプションです。<br />あいうえお</p>
      <ul>
        <li>AAAAA</li>
        <li>BBBBB</li>
        <li>CCCCC</li>
        <li>DDDDD</li>
        <li>EEEEE</li>
        <li>FFFFF</li>
      </ul>
    </div>

    <div class="ContentFrame">
      <p>枠4です。</p>
      <p>枠4のサブキャプションです。<br />あいうえお</p>
    </div>

    <div class="ContentFrame">
      <p>枠5です。</p>
      <p>枠5のサブキャプションです。<br />あいうえお</p>
      <ul>
        <li>AAAAA</li>
        <li>BBBBB</li>
        <li>CCCCC</li>
        <li>DDDDD</li>
        <li>EEEEE</li>
      </ul>
    </div>

    <div class="ContentFrame">
      <p>枠6です。</p>
      <p>枠6のサブキャプションです。<br />あいうえお</p>
      <ul>
        <li>AAAAA</li>
        <li>BBBBB</li>
        <li>CCCCC</li>
        <li>DDDDD</li>
        <li>EEEEE</li>
        <li>FFFFF</li>
        <li>GGGGG</li>
        <li>HHHHH</li>
        <li>IIIII</li>
        <li>JJJJJ</li>
      </ul>
    </div>
  </div>

</body>
</html>
column-count-simple-avoid-break.css
.Container {
  border: 1px solid #0062a9;
  column-count: 4;
}

.ContentFrame {
  border: 1px solid #008912;
  break-inside:avoid;
}

解説

column-count: 4;の指定により、枠内を4段組みで表示します。
.Container {
  border: 1px solid #0062a9;
  column-count: 4;
}

内部の枠にbreak-inside:avoid; を指定して、枠が分割表示されないようにします。
.ContentFrame {
  border: 1px solid #008912;
  break-inside:avoid;
}

実行結果

上記のHTMLファイルをWebブラウザで表示します。下図のページが表示されます。枠の途中で分割されて次の列に表示されなくなりました。


break-inside:auto; の場合は下図の表示になります。枠の途中で分割され、次の列に表示されていることが確認できます。


著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。
掲載日: 2024-09-04
iPentec all rights reserverd.