box-sizing
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨2015å¹´7æâ©.
box-sizing CSS 屬æ§è¨å®å¦ä½è¨ç®å
ç´ ç總寬度èé«åº¦ã
å試ä¸ä¸
box-sizing: content-box;
width: 100%;
box-sizing: content-box;
width: 100%;
border: solid #5b6dcd 10px;
padding: 5px;
box-sizing: border-box;
width: 100%;
border: solid #5b6dcd 10px;
padding: 5px;
<section id="default-example">
<div id="example-element-parent">
<p>ç¶å®¹å¨</p>
<div class="transition-all" id="example-element">
<p>å容å¨</p>
</div>
</div>
</section>
#example-element-parent {
width: 220px;
height: 200px;
border: solid 10px #ffc129;
margin: 0.8em;
}
#example-element {
height: 60px;
margin: 2em auto;
background-color: rgba(81, 81, 81, 0.6);
}
#example-element > p {
margin: 0;
}
å¨ CSS çæ¨¡åä¸ï¼é è¨æ
æ³ä¸ï¼ä½ çºå
ç´ æå®ç width å height åªæç¨æ¼å
ç´ çå
§å®¹ååã妿å
ç´ æéæ¡æå
§éè·ï¼éäºæå å° width å height ä¸ï¼å¾èå¾åºç«é¢ä¸åç¾ççå大å°ãéæå³èç¶ä½ è¨å® width å height æï¼å¿
é 調æ´ä½ 給çå¼ä»¥èæ
®éæ¡æå
§éè·ãä¾å¦ï¼å¦æä½ æååè¨çº width: 25%; ççåï¼è¥å
¶ä¸ä»»ä½ä¸åæå·¦å³å
§éè·æå·¦å³éæ¡ï¼é è¨æ
æ³ä¸å®åå°ç¡æ³å¨ç¶å®¹å¨çéå¶å
§ææä¸è¡ã
box-sizing 屬æ§å¯ç¨ä¾èª¿æ´æ¤è¡çºï¼
-
content-boxæ¯é è¨ç CSS çæ¨¡åè¡çºãå¦æä½ å°å ç´ ç寬度è¨å®çº 100 åç´ ï¼åå ç´ çå §å®¹æ¡å°æ¯ 100 åç´ å¯¬ï¼ä»»ä½éæ¡æå §éè·ç寬度å°å å°æçµçåç¾å¯¬åº¦ä¸ï¼ä½¿å ç´ å¯¬åº¦è¶ é 100 åç´ ã -
border-boxå訴ç覽å¨å°ä»»ä½éæ¡åå §éè·è¨ç®å¨å ç´ ç寬度åé«åº¦å §ãå¦æä½ å°å ç´ ç寬度è¨å®çº 100 åç´ ï¼åé 100 åç´ å°å æ¬ä»»ä½æ·»å çéæ¡æå §éè·ï¼å §å®¹æ¡æç¸®å°ä»¥å¸æ¶éäºé¡å¤ç寬度ãéé常使å ç´ ç尺寸調æ´è®å¾æ´å 容æãbox-sizing: border-boxæ¯ç覽å¨å°<table>ã<select>ã<button>å ç´ ï¼ä»¥åå°radioãcheckboxãresetãbuttonãsubmitãcoloræsearché¡åç<input>å ç´ æä½¿ç¨çé è¨æ¨£å¼ã
å註ï¼å° box-sizing è¨çº border-box é常å°å
ç´ ä½å±é常æç¨ãéå¯ä»¥è®å
ç´ å°ºå¯¸èçæ´å®¹æï¼ä¸¦æ¶é¤è¨±å¤å¨ä½å±å
§å®¹æå¯è½éå°çåé¡ãç¶èï¼ç¶ä½¿ç¨ position: relative æ position: absolute æï¼ä½¿ç¨ box-sizing: content-box å¯ä»¥ä½¿å®ä½å¼èå
§å®¹ç¸éï¼ä¸¦ç¨ç«æ¼éæ¡åå
§éè·å°ºå¯¸çè®åï¼éå¨æäºæ
æ³ä¸å¯è½æ¯çæ³çã
èªæ³
box-sizing: border-box;
box-sizing: content-box;
/* å
¨åå¼ */
box-sizing: inherit;
box-sizing: initial;
box-sizing: revert;
box-sizing: revert-layer;
box-sizing: unset;
box-sizing å±¬æ§æ¯å¾ä»¥ä¸å¼å表ä¸é¸æçå®ä¸ééµåã
å¼
content-box-
鿝 CSS æ¨æºæå®çåå§å¼åé è¨å¼ã
widthåheight屬æ§å å«å §å®¹ï¼ä½ä¸å æ¬å §éè·ãéæ¡æå¤éè·ãä¾å¦ï¼.box {width: 350px; border: 10px solid black;}æåç¾å¯¬åº¦çº 370px ççåãæ¤æï¼å ç´ ç尺寸è¨ç®çºï¼å¯¬åº¦ = å §å®¹ç寬度ï¼é«åº¦ = å §å®¹çé«åº¦ãï¼éæ¡åå §éè·ä¸å æ¬å¨è¨ç®ä¸ãï¼
border-box-
widthåheight屬æ§å å«å §å®¹ãå §éè·åéæ¡ï¼ä½ä¸å æ¬å¤éè·ãè«æ³¨æï¼å §éè·åéæ¡æå¨çåå §ãä¾å¦ï¼.box {width: 350px; border: 10px solid black;}æåç¾å¯¬åº¦çº 350px ççåï¼å ¶ä¸å §å®¹ååçå¯¬åº¦çº 330pxãå §å®¹æ¡ç寬度ä¸è½çºè² æ¸ï¼æå°å¼çº 0ï¼å æ¤ç¡æ³ä½¿ç¨border-box使å ç´ æ¶å¤±ãæ¤æï¼å ç´ ç尺寸è¨ç®çºï¼å¯¬åº¦ = éæ¡ + å §éè· + å §å®¹ç寬度ï¼é«åº¦ = éæ¡ + å §éè· + å §å®¹çé«åº¦ã
å½¢å¼å®ç¾©
| é è¨å¼ | content-box |
|---|---|
| Applies to | all elements that accept width or height |
| ç¹¼æ¿èå¦ | no |
| Computed value | as specified |
| Animation type | discrete |
å½¢å¼èªæ³
box-sizing =
content-box |
border-box
ç¯ä¾
>ä½¿ç¨ content-box å border-box ççå尺寸
æ¤ç¯ä¾å±ç¤ºäºä¸åç box-sizing å¼å¦ä½æ¹è®å
©åå
¶ä»æ¢ä»¶ç¸åçå
ç´ çåç¾å°ºå¯¸ã
HTML
<div class="content-box">Content box</div>
<br />
<div class="border-box">Border box</div>
CSS
div {
width: 160px;
height: 80px;
padding: 20px;
border: 8px solid red;
background: yellow;
}
.content-box {
box-sizing: content-box;
/* 總寬度: 160px + (2 * 20px) + (2 * 8px) = 216px
總é«åº¦: 80px + (2 * 20px) + (2 * 8px) = 136px
å
§å®¹æ¡å¯¬åº¦: 160px
å
§å®¹æ¡é«åº¦: 80px */
}
.border-box {
box-sizing: border-box;
/* 總寬度: 160px
總é«åº¦: 80px
å
§å®¹æ¡å¯¬åº¦: 160px - (2 * 20px) - (2 * 8px) = 104px
å
§å®¹æ¡é«åº¦: 80px - (2 * 20px) - (2 * 8px) = 24px */
}
çµæ
must be a stringè¦ç¯
| Specification |
|---|
| CSS Box Sizing Module Level 3 > # box-sizing > |