margin-trim

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

margin-trim 屬性允許容器裁剪其子元素的毗鄰容器邊緣的邊距。

語法

css
margin-trim: none;
margin-trim: block;
margin-trim: block-start;
margin-trim: block-end;
margin-trim: inline;
margin-trim: inline-start;
margin-trim: inline-end;

/* Global values */
margin-trim: inherit;
margin-trim: initial;
margin-trim: revert;
margin-trim: revert-layer;
margin-trim: unset;

none

邊距不會被容器裁剪。

block

提供給塊級子元素,當它們毗鄰容器邊緣時的邊距會被裁剪為零,而不影響提供給容器的邊距。

block-start

第一個塊級子元素與容器邊緣的邊距會被裁剪為零。

block-end

最後一個塊級子元素與容器邊緣的邊距會被裁剪為零。

inline

提供給行內子元素,當它們毗鄰容器邊緣時的邊距會被裁剪為零,而不影響行首和行尾的間距。

inline-start

容器邊緣和第一個行內子元素之間的邊距會被裁剪為零。

inline-end

容器邊緣和最後一個行內子元素之間的邊距會被裁剪為零。

正式定義

初始值none
應用於塊容器和多列容器。它也適用於 ::first-letter
繼承性
計算值同指定值
動畫型別離散

正式語法

margin-trim = 
none |
[ block || inline ] |
[ block-start || inline-start || block-end || inline-end ]

示例

基本用法

一旦此屬性得到支援,它可能會像這樣工作

當你有一個包含一些行內子元素的容器,並且你想在每個子元素之間放置一個邊距,但不希望它干擾行尾的間距時,你可能會這樣做

css
article {
  background-color: red;
  margin: 20px;
  padding: 20px;
  display: inline-block;
}

article > span {
  background-color: black;
  color: white;
  text-align: center;
  padding: 10px;
  margin-right: 20px;
  margin-left: 30px;
}

這裡的問題是,你會在行右側多出 20px 的間距,所以你可能會這樣做來解決它

css
span:last-child {
  margin-right: 0;
  margin-left: 0;
}

為了實現這一點,不得不編寫另一個規則很麻煩,而且它也不是很靈活。相反,margin-trim 可以解決這個問題

css
article {
  margin-trim: inline-end;
  /* … */
}

類似地,要移除容器邊緣的左邊距

css
article {
  margin-trim: inline-start;
  /* … */
}

規範

規範
CSS 盒模型模組 第 4 級
# margin-trim

瀏覽器相容性

另見