align-items
åºçº¿
广æ³å¯ç¨
*
èª 2015å¹´9æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
* æ¤ç¹æ§çæäºé¨åçæ¯æç¨åº¦å¯è½ææä¸åã
CSS align-items 屿§è®¾ç½®äºææç´æ¥åå
ç´ ç align-self å¼ä½ä¸ºä¸ä¸ªç»ãå¨ Flexbox ä¸ï¼å®æ§å¶åå
ç´ å¨äº¤åè½´ä¸ç对é½ãå¨ Grid å¸å±ä¸ï¼å®æ§å¶äºåå
ç´ å¨å
¶ç½æ ¼åºåå
çååè½´ä¸ç对é½ã
ä¸é¢ç交äºç¤ºä¾æ¼ç¤ºäºä½¿ç¨ç½æ ¼å¸å±ç align-items çä¸äºå¼ã
å°è¯ä¸ä¸
align-items: stretch;
align-items: center;
align-items: start;
align-items: end;
<section class="default-example" id="default-example">
<div class="example-container">
<div class="transition-all" id="example-element">
<div>One</div>
<div>Two</div>
<div>Three</div>
</div>
</div>
</section>
#example-element {
border: 1px solid #c5c5c5;
display: grid;
width: 200px;
grid-template-columns: 1fr 1fr;
grid-auto-rows: 80px;
grid-gap: 10px;
}
#example-element > div {
background-color: rgba(0, 0, 255, 0.2);
border: 3px solid blue;
}
è¯æ³
/* åºæ¬å
³é®å */
align-items: normal;
align-items: stretch;
/* å®ä½å¯¹é½ */
/* align-items ä¸è½è®¾ç½®ä¸º left å right */
align-items: center;
align-items: start;
align-items: end;
align-items: flex-start;
align-items: flex-end;
align-items: self-start;
align-items: self-end;
/* åºçº¿å¯¹é½ */
align-items: baseline;
align-items: first baseline;
align-items: last baseline; /* 溢åºå¯¹é½ï¼ä»
ç¨äºä½ç½®å¯¹é½ï¼ */
align-items: safe center;
align-items: unsafe center;
/* å
¨å±å¼ */
align-items: inherit;
align-items: initial;
align-items: revert;
align-items: revert-layer;
align-items: unset;
åå¼
normal-
è¿ä¸ªå ³é®åçææåå³äºæä»¬å¤å¨ä»ä¹å¸å±æ¨¡å¼ä¸ï¼
- å¨ç»å¯¹å®ä½çå¸å±ä¸ï¼å¯¹äºè¢«æ¿ä»£çç»å¯¹å®ä½çåï¼è¡ä¸ºä¸
start类似ï¼å¯¹äºå ¶ä»ææç»å¯¹å®ä½ççåï¼è¡ä¸ºä¸stretch类似ã - å¨ç»å¯¹å®ä½å¸å±çéæä½ç½®ä¸ï¼è¡ä¸ºä¸
stretch类似ã - 对äºé£äº flex å
ç´ èè¨ï¼è¡ä¸ºä¸
stretch类似ã - 对äºé£äº grid å
ç´ èè¨ï¼è¡ä¸ºä¸
stretch类似ï¼ä½å¯¹äºå ·æé¿å®½æ¯æåºæå°ºå¯¸ççåï¼å ¶è¡ä¸ºä¸start类似ã - è¿ä¸ªå±æ§ä¸éç¨äºå级çååè¡¨æ ¼ã
- å¨ç»å¯¹å®ä½çå¸å±ä¸ï¼å¯¹äºè¢«æ¿ä»£çç»å¯¹å®ä½çåï¼è¡ä¸ºä¸
flex-start-
åªå¨ flex å¸å±ä¸ä½¿ç¨ï¼å°å ç´ ä¸ flex 容å¨çä¸»è½´èµ·ç¹æäº¤åè½´èµ·ç¹å¯¹é½ã
flex-end-
åªå¨ flex å¸å±ä¸ä½¿ç¨ï¼å°å ç´ ä¸ flex 容å¨ç主轴æ«ç«¯æäº¤åè½´æ«ç«¯å¯¹é½ã
center-
flex å ç´ çå¤è¾¹è·æ¡å¨äº¤åè½´ä¸å± ä¸å¯¹é½ã妿å ç´ ç交åè½´å°ºå¯¸å¤§äº flex 容å¨ï¼å®å°å¨ä¸¤ä¸ªæ¹åä¸çè·æº¢åºã
start-
å°å ç´ ä¸å®¹å¨çä¸»è½´èµ·ç¹æäº¤åè½´èµ·ç¹å¯¹é½ã
end-
å°å ç´ ä¸å®¹å¨ç主轴æ«ç«¯æäº¤åè½´æ«ç«¯å¯¹é½ã
self-start-
å°å ç´ ä¸å®¹å¨çä¸»è½´èµ·ç¹æäº¤åè½´èµ·ç¹å¯¹é½ï¼è½´èµ·ç¹çæ¹å对åºäºå ç´ çèµ·å§æ¹åã
self-end-
å°å ç´ ä¸å®¹å¨ç主轴æ«ç«¯æäº¤åè½´æ«ç«¯å¯¹é½ï¼è½´æ«ç«¯çæ¹å对åºäºå ç´ çç»å°¾æ¹åã
baselineãfirst baselineãlast baseline-
ææ flex å ç´ é½å¯¹é½ï¼ä»¥ä½¿å®ä»¬ç flex 容å¨åºçº¿ 对é½ãè·ç¦»å ¶äº¤åè½´èµ·ç¹ååºçº¿ä¹é´æè¿çå ç´ ä¸è¡ç交åè½´èµ·ç¹å¯¹é½ã
stretch-
妿ï¼å¤ä¸ªï¼å ç´ çç»å大å°å°äºå®¹å¨ç大å°ï¼å ¶ä¸èªå¨è°æ´å¤§å°çå ç´ å°çéå¢å¤§ï¼ä»¥å¡«æ»¡å®¹å¨ï¼åæ¶è¿äºå ç´ ä»ç¶ä¿æå ¶å®½é«æ¯ä¾ç约æã
safe-
ä¸å ¶å®å¯¹é½å¼ä¸èµ·ä½¿ç¨ã妿æé对é½å¼å¯¼è´å ç´ æº¢åºå®¹å¨ï¼åå°å ç´ æ
startæ¹å¼å¯¹é½ã unsafe-
ä¸å ¶å®å¯¹é½å¼ä¸èµ·ä½¿ç¨ãä¸ç®¡å ç´ å容å¨çç¸å¯¹å°ºå¯¸ä»¥åæ¯å¦ä¼åçæº¢åºï¼é½ä¼éç¨ç»å®ç对é½å¼ã
å½¢å¼å®ä¹
| åå§å¼ | normal |
|---|---|
| éç¨å ç´ | ææå ç´ |
| æ¯å¦æ¯ç»§æ¿å±æ§ | å¦ |
| 计ç®å¼ | as specified |
| å¨ç»ç±»å | 离æ£å¼ |
å½¢å¼è¯æ³
align-items =
normal |
stretch |
<baseline-position> |
<overflow-position>? <self-position>
<baseline-position> =
[ first | last ]? &&
baseline
<overflow-position> =
unsafe |
safe
<self-position> =
center |
start |
end |
self-start |
self-end |
flex-start |
flex-end
示ä¾
>CSS
#container {
height: 200px;
width: 240px;
align-items: center; /* å¯ä»¥å¨è¿è¡å®ä¾ä¸æ´æ¹ */
background-color: #8c8c8c;
}
.flex {
display: flex;
flex-wrap: wrap;
}
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, 50px);
}
div > div {
box-sizing: border-box;
border: 2px solid #8c8c8c;
width: 50px;
display: flex;
align-items: center;
justify-content: center;
}
#item1 {
background-color: #8cffa0;
min-height: 30px;
}
#item2 {
background-color: #a0c8ff;
min-height: 50px;
}
#item3 {
background-color: #ffa08c;
min-height: 40px;
}
#item4 {
background-color: #ffff8c;
min-height: 60px;
}
#item5 {
background-color: #ff8cff;
min-height: 70px;
}
#item6 {
background-color: #8cffff;
min-height: 50px;
font-size: 30px;
}
select {
font-size: 16px;
}
.row {
margin-top: 10px;
}
HTML
<div id="container" class="flex">
<div id="item1">1</div>
<div id="item2">2</div>
<div id="item3">3</div>
<div id="item4">4</div>
<div id="item5">5</div>
<div id="item6">6</div>
</div>
<div class="row">
<label for="display">display: </label>
<select id="display">
<option value="flex">flex</option>
<option value="grid">grid</option>
</select>
</div>
<div class="row">
<label for="values">align-items: </label>
<select id="values">
<option value="normal">normal</option>
<option value="flex-start">flex-start</option>
<option value="flex-end">flex-end</option>
<option value="center" selected>center</option>
<option value="baseline">baseline</option>
<option value="stretch">stretch</option>
<option value="start">start</option>
<option value="end">end</option>
<option value="self-start">self-start</option>
<option value="self-end">self-end</option>
<option value="first baseline">first baseline</option>
<option value="last baseline">last baseline</option>
<option value="safe center">safe center</option>
<option value="unsafe center">unsafe center</option>
<option value="safe right">safe right</option>
<option value="unsafe right">unsafe right</option>
<option value="safe end">safe end</option>
<option value="unsafe end">unsafe end</option>
<option value="safe self-end">safe self-end</option>
<option value="unsafe self-end">unsafe self-end</option>
<option value="safe flex-end">safe flex-end</option>
<option value="unsafe flex-end">unsafe flex-end</option>
</select>
</div>
ç»æ
è§è
| è§è |
|---|
| CSS Box Alignment Module Level 3> # align-items-property> |
| CSS Flexible Box Layout Module Level 1> # align-items-property> |
æµè§å¨å ¼å®¹æ§
åè§
- CSS Flexbox æåï¼flex å¸å±çåºæ¬æ¦å¿µ
- CSS Flexbox æåï¼å¯¹é½å¼¹æ§å®¹å¨ä¸çå¼¹æ§é¡¹ç®
- CSS Grid æåï¼ç½æ ¼å¸å±ä¸ççæ¨¡å对é½
- CSS çå对é½
align-self屿§