This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
* Some parts of this feature may have varying levels of support.
The margin CSS shorthand property sets the margin area on all four sides of an element.
margin: 1em;
margin: 5% 0;
margin: 10px 50px 20px;
margin: 10px 50px 20px 0;
margin: 0;
<section id="default-example">
<div id="container">
<div class="row"></div>
<div class="row transition-all" id="example-element"></div>
<div class="row"></div>
</div>
</section>
#container {
width: 300px;
height: 200px;
display: flex;
align-content: flex-start;
flex-direction: column;
justify-content: flex-start;
}
.row {
height: 33.33%;
display: inline-block;
border: solid #ce7777 10px;
background-color: #2b3a55;
flex-shrink: 0;
}
#example-element {
border: solid 10px #ffbf00;
background-color: #2b3a55;
}
This property is a shorthand for the following CSS properties:
/* apply to all four sides */ margin: 1em; margin: -3px; /* top and bottom | left and right */ margin: 5% auto; /* top | left and right | bottom */ margin: 1em auto 2em; /* top | right | bottom | left */ margin: 2px 1em 0 auto; /* anchor-size() values */ margin: 5% anchor-size(width); margin: calc(anchor-size(width) / 4) 1em 0 anchor-size(--my-anchor self-inline, 50px); /* Keyword values */ margin: auto; /* Global values */ margin: inherit; margin: initial; margin: revert; margin: revert-layer; margin: unset;
The margin property may be specified using one, two, three, or four values. Each value is a <length>, a <percentage>, or the keyword auto. Negative values draw the element closer to its neighbors than it would be by default.
<length>The size of the margin as a fixed value.
anchor-size() function resolves to a <length> value relative to the associated anchor element's width or height (see Setting element margin based on anchor size).<percentage>The size of the margin as a percentage, relative to the inline size (width in a horizontal language, defined by writing-mode) of the containing block.
autoThe browser selects a suitable margin to use. For example, in certain cases this value can be used to center an element.
This property can be used to set a margin on all four sides of an element. Margins create extra space around an element, unlike padding, which creates extra space within an element.
The top and bottom margins have no effect on non-replaced inline elements, such as <span> or <code>.
You can horizontally center an element within its parent by setting margin: 0 auto;.
A more common method to center an element horizontally is by setting display: flex; and justify-content: center; on a container, which centers its flex item children.
Elements' top and bottom margins are sometimes collapsed into a single margin that is equal to the larger of the two margins. See Mastering margin collapsing for more information.
| Initial value | as each of the properties of the shorthand:
|
|---|---|
| Applies to | all elements, except elements with table display types other than table-caption, table and inline-table. It also applies to ::first-letter. |
| Inherited | no |
| Percentages | refer to the width of the containing block |
| Computed value | as each of the properties of the shorthand:
|
| Animation type | a length |
margin =
<'margin-top'>{1,4}
<margin-top> =
<length-percentage> |
auto |
<anchor-size()>
<length-percentage> =
<length> |
<percentage>
<anchor-size()> =
anchor-size( [ <anchor-name> || <anchor-size> ]? , <length-percentage>? )
<anchor-name> =
<dashed-ident>
<anchor-size> =
width |
height |
block |
inline |
self-block |
self-inline
<div class="center">This element is centered.</div> <div class="outside">This element is positioned outside of its container.</div>
.center {
margin: auto;
background: lime;
width: 66%;
}
.outside {
margin: 3rem 0 0 -3rem;
background: cyan;
width: 66%;
}
margin: 5%; /* All sides: 5% margin */ margin: 10px; /* All sides: 10px margin */ margin: 1.6em 20px; /* top and bottom: 1.6em margin */ /* left and right: 20px margin */ margin: 10px 3% -1em; /* top: 10px margin */ /* left and right: 3% margin */ /* bottom: -1em margin */ margin: 10px 3px 30px 5px; /* top: 10px margin */ /* right: 3px margin */ /* bottom: 30px margin */ /* left: 5px margin */ margin: 2em auto; /* top and bottom: 2em margin */ /* Box is horizontally centered */ margin: auto; /* top and bottom: 0 margin */ /* Box is horizontally centered */
| Specification |
|---|
| CSS Box Model Module Level 3> # margin> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
margin |
1 | 12 | 1 | 3.5 | 1 | 18 | 4 | 10.1 | 1 | 1.0 | 4.4 | 1 |
anchor-size |
132 | 132 | No | 117 | 26 | 132 | No | 87 | 26 | No | 132 | 26 |
auto |
1 | 12Theauto value is not supported in quirks mode. |
1 | 3.5 | 1 | 18 | 4 | 14 | 1 | 1.0 | 37 | 1 |
margin-top, margin-right, margin-bottom, and margin-left
margin-block-start, margin-block-end, margin-inline-start, and margin-inline-end
margin-block and margin-inline shorthands
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/margin