columns

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.

Thuộc tính viết tắt CSS columns đặt số cột tối đa khi hiển thị nội dung của phần tử, cùng với chiều rộng tối thiểu và chiều cao tối đa của các cột trong phần tử đó.

Try it

columns: 2;
columns: 6rem auto;
columns: 12em;
columns: 3;
<section id="default-example">
  <p id="example-element">
    London. Michaelmas term lately over, and the Lord Chancellor sitting in
    Lincoln's Inn Hall. Implacable November weather. As much mud in the streets
    as if the waters had but newly retired from the face of the earth, and it
    would not be wonderful to meet a Megalosaurus, forty feet long or so,
    waddling like an elephantine lizard up Holborn Hill.
  </p>
</section>
#example-element {
  min-width: 21rem;
  text-align: left;
}

Thuộc tính thành phần

Thuộc tính này là viết tắt của các thuộc tính CSS sau:

Cú pháp

css
/* Chiều rộng cột */
columns: 18em;

/* Số cột */
columns: auto;
columns: 2;

/* Chiều rộng và số cột */
columns: 2 auto;
columns: auto 12em;
columns: auto auto;

/* Chiều rộng và/hoặc số cột, và chiều cao cột */
columns: 18em / 10em;
columns: 2 / 90vh;
columns: 2 auto / 300px;

/* Giá trị toàn cục */
columns: inherit;
columns: initial;
columns: revert;
columns: revert-layer;
columns: unset;

Giá trị của thuộc tính columns có thể được chỉ định dưới dạng giá trị <column-count> và/hoặc <column-width>, theo bất kỳ thứ tự nào, tùy chọn theo sau là giá trị <column-height> đứng sau dấu gạch chéo (/).

Giá trị

<'column-width'>

Chiều rộng cột lý tưởng, được định nghĩa là <length> hoặc từ khóa auto. Chiều rộng thực tế có thể rộng hơn hoặc hẹp hơn để phù hợp với không gian có sẵn. Xem column-width.

<'column-count'>

Số cột lý tưởng để phân bố nội dung của phần tử, được định nghĩa là <integer> hoặc từ khóa auto. Nếu được chỉ định là <integer>, nó xác định số cột tối đa cho phép. Xem column-count.

<'column-height'>

Chiều cao của các cột, được định nghĩa là <length> hoặc từ khóa auto. Xem column-height.

Note: Đặt giá trị <column-height> sẽ đặt lại thuộc tính column-wrap về giá trị ban đầu của nó là auto. Khi <column-height> được đặt thành <length>, giá trị auto của column-wrap được hiểu là wrap. Khi <column-height> được đặt thành auto, nó được hiểu là nowrap.

Định nghĩa hình thức

Initial valueas each of the properties of the shorthand:
Applies toBlock containers except table wrapper boxes
Inheritedno
Computed valueas each of the properties of the shorthand:
Animation typeas each of the properties of the shorthand:

Cú pháp hình thức

columns = 
[ <'column-width'> || <'column-count'> ] [ / <'column-height'> ]?

<column-width> =
auto |
<length [0,∞]> |
min-content |
max-content |
fit-content( <length-percentage> )

<column-count> =
auto |
<integer [1,∞]>

<column-height> =
auto |
<length [0,∞]>

<length-percentage> =
<length> |
<percentage>

<integer> =
<number-token>

Ví dụ

Đặt ba cột bằng nhau

Ví dụ này cho thấy cách chia vùng chứa văn bản thành ba cột bằng nhau.

HTML

Chúng ta dùng một phần tử <p> cơ bản chứa nội dung văn bản.

html
<p class="content-box">
  This is a bunch of text split into three columns using the CSS
  <code>columns</code>
  property. The text is equally distributed over the columns.
</p>

CSS

Chúng ta đặt giá trị thuộc tính columns cho đoạn văn bao gồm giá trị <column-count>3 và giá trị <column-width>auto.

css
.content-box {
  columns: 3 auto;
}

Kết quả

Lưu ý cách văn bản được chia thành ba cột.

Tạo các cột có chiều cao cố định xuống dòng

Ví dụ này minh họa việc bao gồm giá trị <column-height> với thuộc tính viết tắt columns để chia vùng chứa văn bản thành các cột có chiều cao cố định và tự động xuống hàng mới khi chạm đến cạnh ngang của vùng chứa.

HTML

Chúng ta dùng một phần tử <p> cơ bản với một số văn bản.

html
<p class="content-box">
  This is a bunch of text split into three columns using the CSS
  <code>columns</code> property. This includes a <code>column-count</code> value
  of <code>3</code>, a <code>column-width</code> value of <code>auto</code>, and
  a <code>column-height</code> value of <code>5em</code>. The
  <code>column-wrap</code> value is set to its initial value, <code>auto</code>;
  when a <code>column-height</code> value is included,
  <code>column-wrap: auto</code> resolves to <code>wrap</code>, which allows the
  columns to wrap onto multiple rows. The text is equally distributed over the
  columns, and placed into multiple rows.
</p>

CSS

Chúng ta đặt giá trị thuộc tính columns cho đoạn văn bao gồm giá trị <column-count>3, giá trị <column-width>auto, và giá trị <column-height>5em. Vì <column-height> được đặt thành <length>, giá trị column-wrap của đoạn văn được tính toán thành wrap, cho phép các cột xuống nhiều hàng.

css
.content-box {
  columns: 3 auto / 5em;
}

Kết quả

Lưu ý cách văn bản được chia thành ba cột. Mỗi cột cao 5em. Sau mỗi ba cột, các cột xuống hàng mới theo chiều dọc (block direction).

Thông số kỹ thuật

Specification
CSS Multi-column Layout Module Level 2
# propdef-columns

Tương thích trình duyệt

Xem thêm