minmax()

Baseline 已廣泛支援

此功能已非常成熟,可在多種裝置和瀏覽器版本上使用。自 2017 年 10 月以來,它已在各大瀏覽器中可用。

minmax() CSS 函式定義了一個尺寸範圍,該範圍大於或等於 min 且小於或等於 max。它與 CSS 網格一起使用。

試一試

grid-template-columns: minmax(20px, auto) 1fr 1fr;
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
grid-template-columns: minmax(2ch, 10ch) 1fr 1fr;
<section class="default-example" id="default-example">
  <div class="example-container">
    <div class="transition-all" id="example-element">
      <div>One. This column has more text in it.</div>
      <div>Two</div>
      <div>Three</div>
      <div>Four</div>
      <div>Five</div>
    </div>
  </div>
</section>
#example-element {
  border: 1px solid #c5c5c5;
  display: grid;
  grid-gap: 10px;
  width: 250px;
}

#example-element > div {
  background-color: rgb(0 0 255 / 0.2);
  border: 3px solid blue;
  text-align: left;
}

語法

css
/* <inflexible-breadth>, <track-breadth> values */
minmax(200px, 1fr)
minmax(400px, 50%)
minmax(30%, 300px)
minmax(100px, max-content)
minmax(min-content, 400px)
minmax(max-content, auto)
minmax(auto, 300px)
minmax(min-content, auto)

/* <fixed-breadth>, <track-breadth> values */
minmax(200px, 1fr)
minmax(30%, 300px)
minmax(400px, 50%)
minmax(50%, min-content)
minmax(300px, max-content)
minmax(200px, auto)

/* <inflexible-breadth>, <fixed-breadth> values */
minmax(400px, 50%)
minmax(30%, 300px)
minmax(min-content, 200px)
minmax(max-content, 200px)
minmax(auto, 300px)

一個接受兩個引數 minmax 的函式。

每個引數都可以是 <length><percentage><flex> 值,或者是關鍵字值 max-contentmin-contentauto 之一。

如果 max < min,則 max 被忽略,minmax(min,max) 被視為 min。作為最大值,<flex> 值設定網格軌道(grid track)的彈性因子;它不能作為最小值。

<length>

一個非負的長度。

<percentage>

一個非負的百分比,在列網格軌道中相對於網格容器的行內尺寸,在行網格軌道中相對於網格容器的塊尺寸。如果網格容器的尺寸取決於其軌道的尺寸,則 <percentage> 必須被視為 auto使用者代理可以調整軌道對網格容器尺寸的固有尺寸貢獻,並透過最小量增加軌道的最終尺寸,以實現百分比。

<flex>

一個帶有 fr 單位的非負尺寸,指定軌道的彈性因子。每個 <flex> 尺寸的軌道根據其彈性因子按比例分配剩餘空間。

max-content

表示佔據網格項的網格項的最大內容貢獻。

min-content

表示佔據網格項的網格項的最小內容貢獻。

auto

作為 min,它表示佔據網格軌道的網格項的最大最小尺寸(由 min-width/min-height 指定)。作為 max,它與 max-content 相同。然而,與 max-content 不同,它允許透過 align-contentjustify-content 屬性值(如 normalstretch)來擴充套件軌道。

正式語法

<minmax()> = 
minmax( min , max )

CSS 屬性

minmax() 函式可用於

示例

CSS

css
#container {
  display: grid;
  grid-template-columns: minmax(min-content, 300px) minmax(200px, 1fr) 150px;
  grid-gap: 5px;
  box-sizing: border-box;
  height: 200px;
  width: 100%;
  background-color: #8cffa0;
  padding: 10px;
}

#container > div {
  background-color: #8ca0ff;
  padding: 5px;
}

HTML

html
<div id="container">
  <div>Item as wide as the content, but at most 300 pixels.</div>
  <div>Item with flexible width but a minimum of 200 pixels.</div>
  <div>Inflexible item of 150 pixels width.</div>
</div>

結果

規範

規範
CSS 網格佈局模組 Level 2
# funcdef-grid-template-columns-minmax

瀏覽器相容性

另見