The align-self
CSS property aligns flex items of the current flex line overriding the align-items
value. If any of the item's cross-axis margin is set to auto
, then align-self
is ignored.
The property doesn't apply to block-level boxes, or to table cells.
/* Keyword values */ align-self: auto; align-self: normal; /* Positional alignment */ align-self: center; /* Put the item around the center */ align-self: start; /* Put the item at the start */ align-self: end; /* Put the item at the end */ align-self: self-start; /* Align the item flush at the start */ align-self: self-end; /* Align the item flush at the end */ align-self: flex-start; /* Put the flex item at the start */ align-self: flex-end; /* Put the flex item at the end */ align-self: left; /* Put the item at the left */ align-self: right; /* Put the item at the right */ /* Baseline alignment */ align-self: baseline; align-self: first baseline; align-self: last baseline; align-self: stretch; /* Stretch 'auto'-sized items to fit the container */ /* Overflow alignment */ align-self: safe center; align-self: unsafe center; /* Global values */ align-self: inherit; align-self: initial; align-self: unset;
Initial value | auto |
---|---|
Applies to | flex items, including in-flow pseudo-elements |
Inherited | no |
Media | visual |
Computed value |
auto computes to itself on absolutely-positioned elements, and to the computed value of align-items on the parent (minus any legacy keywords) on all other boxes, or start if the box has no parent. Its behavior depends on the layout model, as described for justify-self . Otherwise the specified value. |
Animation type | discrete |
Canonical order | the unique non-ambiguous order defined by the formal grammar |
auto
align-items
value.normal
start
on replaced absolutely-positioned boxes, and as stretch
on all other absolutely-positioned boxes.
stretch
.stretch
.stretch
, except for boxes with an aspect ratio or an intrinsic sizes where it behaves like start
.self-start
self-end
flex-start
flex-end
center
baseline
first baseline
last baseline
first baseline
is start
, the one for last baseline
is end
.stretch
auto
-sized, its size is increased equally (not proportionally), while still respecting the constraints imposed by max-height
/max-width
(or equivalent functionality), so that the combined size of all auto
-sized items exactly fills the alignment container along the cross axis.safe
start
.unsafe
auto | flex-start | flex-end | center | baseline | stretch
<section> <div>Item #1</div> <div>Item #2</div> <div>Item #3</div> </section>
section { display: flex; align-items: center; height: 120px; background: beige; } div { height: 60px; background: cyan; margin: 5px; } div:nth-child(3) { align-self: flex-end; background: pink; }
Specification | Status | Comment |
---|---|---|
CSS Box Alignment Module Level 3 The definition of 'align-self' in that specification. | Working Draft | Adds the [ first | last ]? baseline , self-start , self-end , start , end , left , right , unsafe | safe values. |
CSS Flexible Box Layout Module The definition of 'align-self' in that specification. | Candidate Recommendation | Initial definition. |
Feature | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support |
36 21 -webkit- |
Yes |
201 18 — 202 49 -webkit- |
11 | 12.1 | No |
start and end
|
? | ? | Yes | ? | ? | ? |
left and right
|
? | ? | 52 | ? | ? | ? |
baseline |
? | ? | Yes | ? | ? | ? |
first baseline and last baseline
|
? | ? | 52 | ? | ? | ? |
stretch |
? | ? | 52 | ? | ? | ? |
Feature | Android webview | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
Basic support | ? | ? |
Yes Yes -webkit- |
Yes | ? | No | No |
start and end
|
? | ? | ? | ? | ? | ? | ? |
left and right
|
? | ? | ? | 52 | ? | ? | ? |
baseline |
? | ? | ? | Yes | ? | ? | ? |
first baseline and last baseline
|
? | ? | ? | 52 | ? | ? | ? |
stretch |
? | ? | ? | 52 | ? | ? | ? |
1. Before Firefox 27, only single-line flexbox is supported.
2. From version 18 until version 20 (exclusive): this feature is behind the layout.css.flexbox.enabled
preference (needs to be set to true
). To change preferences in Firefox, visit about:config.
3. From version 48: this feature is behind the layout.css.prefixes.webkit
preference (needs to be set to true
). To change preferences in Firefox, visit about:config.
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/align-self