flex-basis
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨2015å¹´9æâ©.
flex-basis 㯠CSS ã®ããããã£ã§ããã¬ãã¯ã¹ã¢ã¤ãã ã®ä¸»è¦é¨åã®åæã®å¯¸æ³ãè¨å®ãã¾ãã box-sizing ã§è¨å®ãã¦ããªãéãããã®ããããã£ã¯ã³ã³ãã³ãããã¯ã¹ã®å¯¸æ³ãå®ç¾©ãã¾ãã
ã¡ã¢:
flex ã®ä¸æ¬æå®ã auto ã initial ãªã©ã®å¤ã§ä½¿ç¨ããæ¹ããflex-basis 宣è¨ãåç¬ã§ä½¿ç¨ãããããæ¨å¥¨ããã¾ãã ãã¼ã¯ã¼ãå¤ã¯ãflex-growãflex-shrinkãflex-basis ã®ä¿¡é ¼æ§ã®é«ãçµã¿åããã«å±éãããä¸è¬çã«æã¾ãããã¬ãã¯ã¹ã®åä½ãå®ç¾ãããããªãã¾ãã
試ãã¦ã¿ã¾ããã
flex-basis: auto;
flex-basis: 0;
flex-basis: 200px;
<section class="default-example" id="default-example">
<div class="transition-all" id="example-element">Item One</div>
<div>Item Two</div>
<div>Item Three</div>
</section>
.default-example {
border: 1px solid #c5c5c5;
width: auto;
max-height: 300px;
display: flex;
}
.default-example > div {
background-color: rgb(0 0 255 / 0.2);
border: 3px solid blue;
margin: 10px;
flex-grow: 1;
flex-shrink: 1;
flex-basis: auto;
}
ãã®ä¾ã§ã¯ã3 ã¤ãã¹ã¦ã®ã¢ã¤ãã ã® flex-grow 㨠flex-shrink ããããã£ãã¨ãã« 1 ã«è¨å®ããã¦ããããã¬ãã¯ã¹ã¢ã¤ãã ãåæã® flex-basis ãã伸é·ããã縮å°ãããã§ãããã¨ã示ãã¦ãã¾ãã
ãã®ãã¢ã§ã¯æåã®ãã¬ãã¯ã¹ã¢ã¤ãã ã«è¨å®ãã flex-basis å¤ã夿´ããå©ç¨ã§ãã空éãã£ã±ãã«ä¼¸é·ãããã縮å°ãããããã¾ããä»ã®ãã¬ãã¯ã¹ã¢ã¤ãã ããµã¤ãºã夿´ãããå°ãªãã¨ã min-content ã®ãµã¤ãºã«ãªãã¾ããä¾ãã°ãæåã®ã¢ã¤ãã ã® flex-basis ã 200px ã«è¨å®ããã¨ãå§ã㯠200px ã§ãããå©ç¨ã§ãã空éã«åãããã«ç¸®å°ããã¾ãã
ãã flex-basis ã auto 以å¤ã®å¤ã«è¨å®ããã¦ãã¦ãåããã¬ãã¯ã¹ã¢ã¤ãã ã« width ï¼flex-direction: column ã®å ´å㯠heightï¼ãè¨å®ããã¦ããå ´åã¯ãflex-basis ã®å¤ãåªå
ããã¾ãã
æ§æ
/* å¹
ãæå®ãã */
flex-basis: 10em;
flex-basis: 3px;
flex-basis: 50%;
flex-basis: auto;
/* åºæã®ãµã¤ãºæå®ãã¼ã¯ã¼ã */
flex-basis: max-content;
flex-basis: min-content;
flex-basis: fit-content;
/* ãã¬ãã¯ã¹ã¢ã¤ãã ã®å
容ã«åºã¥ãã¦èªåè¨å®ãã */
flex-basis: content;
/* ã°ãã¼ãã«å¤ */
flex-basis: inherit;
flex-basis: initial;
flex-basis: revert;
flex-basis: revert-layer;
flex-basis: unset;
flex-basis ããããã£ã¯ãcontent ãã¼ã¯ã¼ãã¾ã㯠<'width'> ã§æå®ãã¾ãã
å¤
content-
ãã¬ãã¯ã¹ã¢ã¤ãã ã®ã³ã³ãã³ãã«åºã¥ãã¦ãèªåçã«å¤§ãããæ±ºãã¾ãã
<'width'>-
以ä¸ã®åä½ã®ããããã§ãã
<length>ã¯çµ¶å¯¾çãªå¤ãè¨å®ãã¾ãã<percentage>ã¯å å«ãããã¯ã®ã³ã³ãã³ãé åã®å¹ ã¾ãã¯é«ãã«å¯¾ããå²åãè¨å®ãã¾ããflex-basisã®ãã¼ã»ã³ãå¤ã¯ãã¬ãã¯ã¹ã³ã³ããã¼ã«å¯¾ãã¦è§£æ±ºããã¾ãããã¬ãã¯ã¹ã³ã³ããã¼ã®ãµã¤ãºãä¸å®ã®å ´åãflex-basisã®ä½¿ç¨ããå¤ã¯contentã¨ãªãã¾ããautoã¯æ¨ªæ¸ãã¢ã¼ãã§ã¯widthã®å¤ã縦æ¸ãã¢ã¼ãã§ã¯heightã®å¤ã使ç¨ãã¾ãã対å¿ããå¤ãautoã§ãã£ãå ´åã代ããã«contentã®å¤ã使ç¨ããã¾ããmax-contentã¯å¹ ã®å å¨çãªæ¨å¥¨å¤ãè¨å®ãã¾ããmin-contentã¯å¹ ã®å å¨çãªæå°å¤ãè¨å®ãã¾ããfit-contentã¯ãç¾å¨ã®è¦ç´ ã®ã³ã³ãã³ãã«åºã¥ãã¦è¨ç®ããããmin-contentã¨max-contentã®å¤ã§å²ã¾ãããå å«ãããã¯ã®ã³ã³ãã³ãé åã®ä½¿ç¨å¯è½ãªæå¤§ãµã¤ãºãè¨å®ãã¾ãã
å ¬å¼å®ç¾©
| åæå¤ | auto |
|---|---|
| é©ç¨å¯¾è±¡ | ããã¼å ã®æ¬ä¼¼è¦ç´ ãå«ããã¬ãã¯ã¹ã¢ã¤ãã |
| ç¶æ¿ | ãªã |
| ãã¼ã»ã³ãå¤ | ãã¬ãã¯ã¹ã³ã³ããã¼ã®å é¨ã®ä¸»è¦ãªå¯¸æ³ã«å¯¾ããç¸å¯¾å¤ |
| è¨ç®å¤ | æå®éãããã ãç¸å¯¾çãªé·ãã¯ã¯çµ¶å¯¾çãªé·ãã«å¤æããã |
| ã¢ãã¡ã¼ã·ã§ã³ã®ç¨®é¡ | length ã¾ã㯠ãã¼ã»ã³ãå¤, calc(); |
形弿æ³
flex-basis =
content |
<'width'>
<width> =
auto |
<length-percentage [0,â]> |
min-content |
max-content |
fit-content( <length-percentage [0,â]> ) |
<calc-size()> |
<anchor-size()> |
stretch |
fit-content |
contain
<length-percentage> =
<length> |
<percentage>
<calc-size()> =
calc-size( <calc-size-basis> , <calc-sum> )
<anchor-size()> =
anchor-size( [ <anchor-name> || <anchor-size> ]? , <length-percentage>? )
<calc-size-basis> =
<size-keyword> |
<calc-size()> |
any |
<calc-sum>
<calc-sum> =
<calc-product> [ [ '+' | '-' ] <calc-product> ]*
<anchor-name> =
<dashed-ident>
<anchor-size> =
width |
height |
block |
inline |
self-block |
self-inline
<calc-product> =
<calc-value> [ [ '*' | / ] <calc-value> ]*
<calc-value> =
<number> |
<dimension> |
<percentage> |
<calc-keyword> |
( <calc-sum> )
<calc-keyword> =
e |
pi |
infinity |
-infinity |
NaN
ä¾
>ãã¬ãã¯ã¹ã¢ã¤ãã ã®åæã®å¯¸æ³ã®è¨å®
HTML
<ul class="container">
<li class="flex flex1">1: flex-basis ãã¹ã</li>
<li class="flex flex2">2: flex-basis ãã¹ã</li>
<li class="flex flex3">3: flex-basis ãã¹ã</li>
<li class="flex flex4">4: flex-basis ãã¹ã</li>
<li class="flex flex5">5: flex-basis ãã¹ã</li>
</ul>
<ul class="container">
<li class="flex flex6">6: flex-basis ãã¹ã</li>
</ul>
CSS
.container {
font-family: "Arial", sans-serif;
margin: 0;
padding: 0;
list-style-type: none;
display: flex;
flex-wrap: wrap;
}
.flex {
background: #6ab6d8;
padding: 10px;
margin-bottom: 50px;
border: 3px solid #2e86bb;
color: white;
font-size: 14px;
text-align: center;
position: relative;
}
.flex::after {
position: absolute;
z-index: 1;
left: 0;
top: 100%;
margin-top: 10px;
width: 100%;
color: #333333;
font-size: 12px;
}
.flex1 {
flex-basis: auto;
}
.flex1::after {
content: "auto";
}
.flex2 {
flex-basis: max-content;
}
.flex2::after {
content: "max-content";
}
.flex3 {
flex-basis: min-content;
}
.flex3::after {
content: "min-content";
}
.flex4 {
flex-basis: fit-content;
}
.flex4::after {
content: "fit-content";
}
.flex5 {
flex-basis: content;
}
.flex5::after {
content: "content";
}
çµæ
flex-basis ã® 0 㨠0% ã®éã
ãã®ä¾ã¯ flex-basis ã 0 ã®å ´å㨠flex-basis ã 0% ã®å ´åã¨ã®éãã示ãã¾ãã flex-direction ã column ã«è¨å®ããã¦ããããã¬ãã¯ã¹ã³ã³ããã¼ã¨ãã¬ãã¯ã¹ã¢ã¤ãã ã«é«ããè¨å®ããã¦ããªãå ´åã§ãã 0 ã¯çµ¶å¯¾çãªé·ãã§ããããã¼ã»ã³ãå¤ã® flex-basis ã®å¤ã¯ content ã®å¤ã«è§£æ±ºãã¾ãã
HTML
åãæ§é ã®ãã¬ãã¯ã¹ã³ã³ããã¼ã 2 ã¤è¨ç½®ãã¦ãããflex-basis ã®å¤ä»¥å¤ã¯åãããã«ã¹ã¿ã¤ã«è¨å®ããã¦ãã¾ããã³ã³ããã¼ã¯ããããè¦åºãã® <div> 㨠<section> ã® 2 ã¤ã®åè¦ç´ ãæã£ã¦ãã¾ãã <section> è¦ç´ ã¯ã³ã³ãã³ãã¨ã㦠<div> ãæã£ã¦ãã¾ãããããã¯ãã¬ãã¯ã¹ã¢ã¤ãã ã¨ãã¦ã¯è¨å®ããã¾ããããé«ãã¯æå®ããã¾ãã
<div class="container basis-0">
<div>è¦åºã</div>
<section>
flex-basis: 0;
<div class="content"></div>
</section>
</div>
<div class="container basis-0-percent">
<div>è¦åºã</div>
<section>
flex-basis: 0%;
<div class="content"></div>
</section>
</div>
CSS
ã³ã³ããã¼ã横ã«ä¸¦ãã§ããã¤ã³ã©ã¤ã³ãã¬ãã¯ã¹ã³ã³ããã¼ã¨ãã¦ã¹ã¿ã¤ã«è¨å®ããæ¯è¼ãããããã¾ãã flex-direction ã column ã«è¨å®ãã¾ããæåã®ã³ã³ããã¼ã®ãã¬ãã¯ã¹ã¢ã¤ãã ã® flex-basis å¤ã¯ 0ã 2 ã¤ç®ã®ã³ã³ããã¼ã®ãã¬ãã¯ã¹ã¢ã¤ãã ã® flex-basis å¤ã¯ 0% ã§ããã©ã¡ãã®ãã¬ãã¯ã¹ã³ã³ããã¼ããã®ãã¬ãã¯ã¹ã¢ã¤ãã ãé«ãã¯æç¤ºçã«è¨å®ããã¦ãã¾ãããã section è¦ç´ ã®é«ã㯠200px ãè¶
ãããã¨ãã§ãããåè¦ç´ ã®é«ã㯠300px ã«ãªãã¾ãã
.container {
width: 40vw;
padding: 1rem;
border: 1px dashed blue;
display: inline-flex;
flex-direction: column;
}
section {
border: 1px solid red;
overflow: auto;
min-height: 200px;
}
.content {
background: wheat;
height: 300px;
}
.container.basis-0 > * {
flex-basis: 0;
}
.container.basis-0-percent > * {
flex-basis: 0%;
}
çµæ
æåã®ã³ã³ããã¼ã®ä¸ã«ã¯ flex-basis: 0 ãè¨å®ããã¦ããã <section> è¦ç´ ã®åæä¸»è¦ãµã¤ãºã¯ã¼ãã§ãé«ãå¶éã® 200px ã¾ã§ä¼¸é·ãã¾ãã 2 ã¤ç®ã®ã³ã³ããã¼ã®ä¸ã§ã¯ã flex-basis: 0%ã§ã¯ã <section> è¦ç´ 㯠300px ã®åæä¸»è¦ãµã¤ãºã«ãªãã¾ãããªããªãããã¬ãã¯ã¹ã³ã³ããã¼ã¯é«ããè¨å®ãã¦ããªãã®ã§ããã¼ã»ã³ãå¤ã® flex-basis ã®å¤ã content å¤ã«è§£æ±ºãããããã§ãã
仿§æ¸
| Specification |
|---|
| CSS Flexible Box Layout Module Level 1 > # flex-basis-property > |