files/en-us/web/css/reference/properties/margin-trim/index.md
{{SeeCompatTable}}
The margin-trim property allows the container to trim the margins of its children where they adjoin the container's edges.
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
{{cssinfo}}
{{csssyntax}}
Once support is implemented for this property, it will probably work like so:
When you've got a container with some inline children and you want to put a margin between each child but not have it interfere with the spacing at the end of the row, you might do something like this:
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;
}
The problem here is that you'd end up with 20px too much spacing at the right of the row, so you'd maybe do this to fix it:
span:last-child {
margin-right: 0;
margin-left: 0;
}
It is a pain having to write another rule to achieve this, and it is also not very flexible. Instead, margin-trim could fix it:
article {
margin-trim: inline-end;
/* … */
}
Similarly, to remove left margin with the container's edge:
article {
margin-trim: inline-start;
/* … */
}
{{Specifications}}
{{Compat}}