備忘録的プログラミングリファレンス

columns プロパティ

 columns プロパティは、エレメントの内容をカラムに分割して表示する CSS のプロパティです。column-widthcolumn-count プロパティを一括して指定できます。

 column-width がカラムごとの幅で、column-count が分割数です。
 幅の値は CSS の長さで絶対長でなければならないようです。分割数は正の整数またはキーワードで指定します。

 ここでのカラムとは、新聞記事のような縦割りのレイアウトに表示することができるスタイルです。例えば以下のような表示です。

エレメントを幅150pxで auto で分割して表示(Exampleの参照
columns: 150px auto;
表示例

カラムについての説明です。<table> の説明でもカラムという表現が出てくるので混合してしまいます。

 エレメントの内容は左から順次表示されます。高さは指定がなければ自動で設定されます。

 column-widthcolumn-count では、 column-count が優先されます。詳しくはカラムに分割についてを参照してください。

 カラムに分割において、column-fillcolumn-span プロパティによって分割の調整ができます。
 また、カラムとカラムの間のギャップの調整や罫線の表示が column-gapcolumn-rule で出来ます。
 詳しくは分割の調整カラム間のギャップと罫線を参照してください。

ページ内 Index

カラムに分割について

 columns プロパティによってカラムに分割できるのですが、column-width プロパティとcolumn-count プロパティには優先順位があります。

 さらに分割表示されるカラムはいろいろと調整することができます。カラム幅の調整や子エレメントの扱い、カラム間のギャップの指定と罫線の表示を行うことができます。

column-width と column-count について

 column-count プロパティは最大表示数の指定で、column-width プロパティによる幅よりcolumn-count プロパティによる分割数の方が優先されます。
 column-width の幅で割った数より column-count プロパティによる指定の分割数が少ない場合は、column-count プロパティの指定が優先されて幅が調整されます。

 例えば以下は、幅を 10px と指定して2分割より大きくなるようにし、分割数を 2 で指定しています。

エレメントを幅10pxで 2分割して表示
columns: 10px 2;
表示例

カラムについての説明です。<table> の説明でもカラムという表現が出てくるので混合してしまいます。

 この例から分割数の方が優先されていることが分かります。

分割の調整

 分割における幅の調整には、column-fill プロパティを使用します。

 カラムに分割されるエレメントの子エレメントは、column-span プロパティによって、分割されないようにすることができます。column-span: all; によって子エレメントはカラムにまたがって表示することができます。
 column-span プロパティは子エレメントに指定します。

column-fill と column-span
columns: 150px auto;
column-fill: auto;

/* column-span は子エレメントに指定します */
表示例

カラムによる分割表示(このエレメントはカラムにまたがって表示されます)

カラムについての説明です。<table> の説明でもカラムという表現が出てくるので混合してしまいます。

 column-fill プロパティの値は none、all のみが指定できます。all に指定すると、高さが固定されない限りは内容が分割されているようには見えません。

カラム間のギャップと罫線

 カラム間のギャップの調整は column-gap プロパティで指定します。

 カラム間には column-rule によって罫線を表示することができ、罫線の線種( column-rule-style )、色( column-rule-color )、太さ( column-rule-width )を別々に指定することができます。

column-fill と column-span
columns: 150px auto;
column-gap: 2em;
column-rule: dotted red 5px;
表示例

カラムについての説明です。<table> の説明でもカラムという表現が出てくるので混合してしまいます。

構文(Syntax)

CSS

columns: auto auto | column-width column-count | initial | inherit ;

DOM ( JavaScript )

値の取得
String = object.style.columns;
値の設定
object.style.columns=" auto auto | column-width column-count | initial | inherit ";

値(Values)

Value摘要
auto auto初期値(default値)
column-width分割表示する際の幅
column-count分割表示の最大数
initial初期値に戻す
inherit親エレメントのプロパティを継承

備考(Remarks)

初期値(Default value)auto auto
継承(Inherited)No
CSS AnimationYes

Example

 columnsの例です。エレメントの内容全体を分割数で均等割され、左から順次表示されます。高さは、カラムの幅と分割数から決まります。

 分割幅が指定されている場合は分割数はautoになるようです。