浅谈 CSS3 新特性:多列布局

1,508 阅读2分钟

01.png

在以下情况使用多列布局:

  • 你想要你的文本看起来想报纸那种排版布局。
  • 您有一组要分成列的小项目。
  • 你不需要单独为指定的列写样式。

使用多列布局来创建列,文本会以连续流的形式依次填满每个列。这些列必须是相同的,包括大小和样式。

容器相关属性

column-count

column-count,描述元素应该被分割的列数。

语法:

column-count: number|auto;
  • number: 内容被划分的最大列数。如果 column-width 也设置了非零值,实际列数可能小于 column-count 的值。

    column-count: 100;
    column-width: 100px;
    

    实际只有 5 列:

    02.png

  • auto:列的数量由其他 CSS 属性指定,例如:column-width

    column-count: auto;
    column-width: 200px;
    

    01.png

column-width

column-width,设置列的理想宽度。

在需要填充可用空间时可能会更宽(比如,column-count 更小时),当可用空间太小时可能会更窄(比如,容器宽度太小)。

  • <length>,非负数,百分比无效。
  • auto,列宽取决于其他属性,例如 column-count

columns

column-widthcolumn-count 的简写属性。

语法:

columns: column-width column-count;

column-fill

column-fill,指定如何填充列:

  • balance:默认值,尽量将内容平均分配。 02.png

  • auto:按顺序填充 01.png

column-gap

column-gap,指定列与列之间的间隙。

  • normal:在 Multi-column 布局时默认间隔为 1em,其他类型布局默认间隔为 0
  • <length>:非负数。
  • <percentage>:非负数,基于容器的宽。

这个属性一开始是 Multi-column 布局 下的特有属性,但是现在在 Flexible Box(弹性盒子)以及 Grid layouts(网格布局)中都可以使用。

关于它的兼容性问题,IE 不兼容,但在 Edge 中已经兼容:

01.png

column-rule

在多列布局中,column-rule,描述了列与列之间的直线的样式,它也是所有 column-rule-\* 属性的简写,column-rule-widthcolumn-rule-stylecolumn-rule-color

语法:

column-rule: column-rule-width column-rule-style column-rule-color;

可以按 border 一样记忆。

  • column-rule-color:指定两列间边框的颜色

  • column-rule-style:指定两列间边框的样式

  • column-rule-width:指定两列间边框的厚度

列相关属性

column-span

column-span,指定元素是否要跨越所有的列

  • none,默认值,不跨列。
  • all,元素横跨所有列。该元素新建一个 BFC,在元素之前的正常流中的内容在所有列之间自动平衡。 01.png

浅谈 CSS3 新特性