Multi-column 多栏布局的简单使用

549 阅读2分钟

这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战

Multi-column

假设我们有这样的 html 结构,一个 <article/> 元素下有 3 个 p 元素,分别显示了一大段文字:

<main>
  <article>
    <p>
      Lorem ipsum dolor sit amet consectetur, adipisicing elit. Assumenda, sapiente?
    </p>
    <p>
      Lorem ipsum dolor sit amet consectetur adipisicing elit. 
    </p>
    <p>
      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut, cum. 
    </p>
  </article>
</main>

在正常情况下,这三段是按顺序从上到下排列的

我们可以给父容器设置一个 column-count 属性,从而给父容器开启多栏布局,它的值是一个数字,用来规定显示多少列,这里给它设置为 3

article {
  column-count: 3;
  /*
  	column-count可以简写为columns
  	即columns: 3;
  */
}

LIR7Ir.png

或者直接用 column-width 设置每列固定的宽度,浏览器会自动根据空间来决定显示多少列:

article {
  column-width: 100px;
}

LIRnzy.png

我们可以使用 column-gap 设置列边距

article {
  column-count: 3;
  /* 设置多栏的行间距为50px */
  column-gap: 50px;
}

LIP2c6.png

可以使用 column-rule 设置分隔线样式,属性值和 border 一样

article {
  column-count: 3;
  column-rule: 1px solid #fff;
}

LIPizH.png

multi-column 默认是平均分配内容到各列的,每列的高度都是相同

可以使用 column-fill 来改变它的分布方式

可选值说明
balance平均分布,平均分配内容到各列(缺省值)
auto填满一列之后再开启新的一列
article {
  height: 100px;
  column-count: 3;
  column-fill: auto;
}

LIPOwU.png

最后,我们可以使用column-span将元素进行跨栏显示

h2 {
  /* 横跨整个横栏 */
  column-span: all;
  text-align: center;
}

LIRqnk.png

总结:

属性说明
column-count用于直接规定列数
columnscolumn-count的简写形式
column-width规定每列宽度,数量自适应
column-gap设置列间距
column-rule设置列的分隔线
column-fill设置列的分布
column-span设置跨列