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 bottom CSS property participates in setting the vertical position of a positioned element. This inset property has no effect on non-positioned elements.
bottom: 0;
bottom: 4em;
bottom: 10%;
bottom: 20px;
<section id="default-example">
<div class="example-container">
<div id="example-element">I am absolutely positioned.</div>
<p>
As much mud in the streets as if the waters had but newly retired from the
face of the earth, and it would not be wonderful to meet a Megalosaurus,
forty feet long or so, waddling like an elephantine lizard up Holborn
Hill.
</p>
</div>
</section>
.example-container {
border: 0.75em solid;
padding: 0.75em;
text-align: left;
position: relative;
width: 100%;
min-height: 200px;
}
#example-element {
background-color: #264653;
border: 4px solid #ffb500;
color: white;
position: absolute;
width: 140px;
height: 60px;
}
The effect of bottom depends on how the element is positioned (i.e., the value of the position property):
position is set to absolute or fixed, the bottom property specifies the distance between the outer edge of the element's bottom margin and the outer edge of the containing block's bottom padding, or, in the case of anchor positioned elements when the anchor() function is used within the value, relative to the position of the specified <anchor-side> edge. The bottom property is compatible with the top, bottom, start, end, self-start, self-end, center, and <percentage> values.position is set to relative, the bottom property specifies the distance the element's bottom edge is moved above its normal position.position is set to sticky, the bottom property is used to compute the sticky-constraint rectangle.position is set to static, the bottom property has no effect.When both top and bottom are specified, position is set to absolute or fixed, and height is unspecified (either auto or 100%) both the top and bottom distances are respected. In all other situations, if height is constrained in any way or position is set to relative, the top property takes precedence and the bottom property is ignored.
/* <length> values */ bottom: 3px; bottom: 2.4em; bottom: calc(anchor(--my-anchor 50%) + 5px); bottom: anchor-size(width); /* <percentage>s of the height of the containing block */ bottom: 10%; /* Keyword value */ bottom: auto; /* Global values */ bottom: inherit; bottom: initial; bottom: revert; bottom: revert-layer; bottom: unset;
<length>A negative, null, or positive <length>:
anchor() function resolves to a <length> value relative to the position of the associated anchor element's top or bottom edge (see Using inset properties with anchor() function values), and the anchor-size() function resolves to a <length> value relative to the associated anchor element's width or height (see Setting element position based on anchor size).<percentage>A <percentage> of the containing block's height.
autoSpecifies that:
top property, while height: auto is treated as a height based on the content; or if top is also auto, the element is positioned where it should vertically be positioned if it were a static element.top property; or if top is also auto, the element is not moved vertically at all.| Initial value | auto |
|---|---|
| Applies to | positioned elements |
| Inherited | no |
| Percentages | refer to the height of the containing block |
| Computed value | if specified as a length, the corresponding absolute length; if specified as a percentage, the specified value; otherwise, auto
|
| Animation type | a length, percentage or calc(); |
bottom =
auto |
<length-percentage> |
<anchor()> |
<anchor-size()>
<length-percentage> =
<length> |
<percentage>
<anchor()> =
anchor( <anchor-name>? &&
<anchor-side> , <length-percentage>? )
<anchor-size()> =
anchor-size( [ <anchor-name> || <anchor-size> ]? , <length-percentage>? )
<anchor-name> =
<dashed-ident>
<anchor-side> =
inside |
outside |
top |
left |
right |
bottom |
start |
end |
self-start |
self-end |
<percentage> |
center
<anchor-size> =
width |
height |
block |
inline |
self-block |
self-inline
This example demonstrates the difference in behavior of the bottom property, when position is absolute versus fixed.
<p> This<br />is<br />some<br />tall,<br />tall,<br />tall,<br />tall,<br />tall<br />content. </p> <div class="fixed"><p>Fixed</p></div> <div class="absolute"><p>Absolute</p></div>
p {
font-size: 30px;
line-height: 2em;
}
div {
width: 48%;
text-align: center;
background: rgb(55 55 55 / 20%);
border: 1px solid blue;
}
.absolute {
position: absolute;
bottom: 0;
left: 0;
}
.fixed {
position: fixed;
bottom: 0;
right: 0;
}
| Specification |
|---|
| CSS Positioned Layout Module Level 3> # insets> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
bottom |
1 | 12 | 1 | 6 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 | 1 |
anchor |
125 | 125 | No | 111 | 26 | 125 | No | 83 | 26 | 27.0 | 125 | 26 |
anchor-size |
132 | 132 | No | 117 | 26 | 132 | No | 87 | 26 | No | 132 | 26 |
auto |
1 | 12 | 1 | 15 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 | 1 |
top, left, and right
inset shorthandinset-block-start, inset-block-end, inset-inline-start, and inset-inline-end
inset-block and inset-inline shorthandsposition
© 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/bottom