Chromium 抵達 Flexbox 差距

CSS gap 屬性適用於 Chromium 的 CSS Flexbox 和多欄版面配置引擎。

CSS 間距

gap相對於資料流,也就是說,它會根據內容流的方向動態變更。舉例來說,gap 會自動調整您為國際使用者設定的不同 writing-modedirection 值。這可大幅減輕元件和 CSS 作者的排版問題。減少程式碼進一步調度資源。

Gap 示範了本地化支援功能,因為它可處理方向和書寫模式的變更: Codepen | 推文

瀏覽器相容性

瀏覽器支援

  • Chrome:57。
  • Edge:16.
  • Firefox:52。
  • Safari:10.1。

資料來源

用量

gap 可接受任何 CSS 長度百分比做為值。

.gap-example {
  display: grid;
  gap: 10px;
  gap: 2ch;
  gap: 5%;
  gap: 1em;
  gap: 3vmax;
}


間隔長度可以超過 1 個,將用於列和欄。

速記法
.grid {
  display: grid;
  gap: 10px;
}
一次設定列和欄
已展開
.grid {
  display: grid;
  row-gap: 10px;
  column-gap: 10px;
}


間隔可以傳遞 2 個長度,將用於列和欄。

速記法
.grid {
  display: grid;
  gap: 10px 5%;
}
一次設定分開的資料列和資料欄
已展開
.grid {
  display: grid;
  row-gap: 10px;
  column-gap: 5%;
}

Flexbox gap

gap 加入 Flexbox 之前,策略包括負邊界、複雜的選取器、:last:first 類型的虛擬類別選取器,或其他用於管理動態版面配置和包裝子項集合的空間的手段。

先前的嘗試

以下是使用者用來取得空白間距的模式。

擬造類別選取器
.layout > :not(:last-child) {
  margin-bottom: 10px;
  margin-right: 10px;
}
被切除大腦的貓頭鷹
.layout > * + * {
  margin-bottom: 10px;
  margin-right: 10px;
}
來源

不過,上述做法無法完全取代 gap,而且經常需要調整 @media:lang() 來因應包裝情境、寫入模式或方向。新增一或兩個媒體查詢似乎沒什麼大不了,但這些查詢會累積,導致版面配置邏輯變得複雜。

上述作者真正的意向是讓其他子物品不接觸。

解藥:gap

.layout {
  display: flex;
  gap: 10px;
}

在前 2 個範例 (不含 Flexbox gap) 中,系統會指定子項,並指派與其他元素的間距。在對症療法間距範例中,容器擁有間距。每個子項都能減輕負擔,同時集中管理間距。簡化一致性。重新排序、變更檢視區、移除元素、附加新元素等,且間距保持一致。沒有新的選取器,也沒有新的媒體查詢,只有空格。

Chromium 開發人員工具更新

這些更新會影響 Chromium 開發人員工具,請注意「Styles」窗格現在如何處理 grid-gapgap 👍?

辦公室裡有兩個人正在桌邊工作。
DevTools 會顯示 grid-gapgap,其中 gap 會顯示在 grid-gap 下方,讓級聯使用最新的語法。

開發人員工具同時支援 grid-gapgap,這是因為 gap 基本上是先前語法的別名。

新版面配置的潛力

有了 Flexbox gap,我們不但能提供便利性,我們提供功能強大、完美太空的內建內建版面配置。在影片和下列程式碼範例中,Grid 無法達成 Flexbox 的版面配置。即使格線是內建指派的,也必須有相同的列數和欄數。

推文

此外,請注意,當子項以這種方式內在包裝時,子項之間的間距會如何動態調整。媒體查詢無法偵測這類包裝來做出智慧調整。Flexbox gap 可以,而且會在所有國際化作業中為您執行這項操作。

多欄 gap

除了 Flexbox 支援 gap 語法外,多欄版面配置也支援較短的 gap 語法。

article {
  column-width: 40ch;
  column-gap: 5ch;
  gap: 5ch;
}

差不多,