--- title: box-sizing slug: Web/CSS/box-sizing tags: - CSS - CSS Property - Reference translation_of: Web/CSS/box-sizing ---
La propietat CSS box-sizing s'utilitza per modificar el model de caixa CSS predeterminat usat per calcular l'amplada i l'alçada dels elements.
/* Keyword values */ box-sizing: content-box; box-sizing: border-box; /* Global values */ box-sizing: inherit; box-sizing: initial; box-sizing: unset;
En CSS, de manera predeterminada, l'amplada i l'alçada que s'assigna a un element només s'aplica a la caixa de contingut de l'element. Si l'element té qualsevol vora o farcit, aquest s'afegeix a l'amplada i alçada per arribar a la grandària de la caixa que es representa en la pantalla. Això significa que quan fixeu l'amplada i l'alçada, heu d'ajustar el valor que dóna per permetre qualsevol vora o farcit que pugui ser afegit. Això és especialment difícil quan s'implementa un disseny sensible.
La propietat box-sizing es pot utilitzar per ajustar aquest comportament:
content-box és el valor predeterminat i proporciona el comportament predeterminat de box-sizing CSS. Si s'estableix l'amplada d'un element a 100 píxels, la caixa de contingut de l'element serà de 100 píxels d'amplada i l'amplada de qualsevol vora o farciment s'afegirà a l'amplada final representada.border-box l'indica al navegador que tingui en compte qualsevol vora i farcit en el valor que s'especifiqui per a l'amplada i l'alçada. Si s'estableix l'amplada d'un element a 100 píxels, els 100 píxels inclouran qualsevol vora o farcit que s'hàgi afegit i la caixa de contingut s'encongirà per absorbir aquest ample addicional. Això generalment fa molt més fàcil la grandària dels elements.Alguns experts recomanen que els desenvolupadors web considerin aplicar rutinariament box-sizing: border-box a tots els elements.
<div class="container">
<div class="parent">
<p>Parent container</p>
<div class="child" style="box-sizing: content-box;">
<p>Child container</p>
<p class="css">
box-sizing: content-box;<br/>
width: 100%;<br/>
padding: 0;<br/>
border-width: 0;</p>
</div>
</div>
<div class="parent">
<p>Parent container</p>
<div class="child border-padding" style="box-sizing: content-box;">
<p>Child container</p>
<p class="css">
box-sizing: content-box;<br/>
width: 100%;<br/>
padding: 5px;<br/>
border-width: 10px;</p>
</div>
</div>
<div class="parent">
<p>Parent container</p>
<div class="child border-padding" style="box-sizing: border-box;">
<p>Child container</p>
<p class="css">
box-sizing: border-box;<br/>
width: 100%;<br/>
padding: 5px;<br/>
border-width: 10px;</p>
</div>
</div>
</div>
p {
margin-left: 0.2em;
font-family: "Open Sans", sans-serif;
}
.container {
display: flex;
}
.parent {
width: 220px;
border: solid 10px #FFC129;
margin: 0.8em;
}
.child {
width: 100%;
margin: 2em auto;
background-color: rgba(229, 232, 252, 0.6);
}
.border-padding {
padding: 5px;
border: solid #5B6DCD 10px;
}
.css {
font-family: monospace;
}
{{EmbedLiveSample("box-sizing", 1200, 340, "", "", "example-outcome-frame")}}
L'exemple anterior mostra tres escenaris. En cada escenari hi ha un DIV pare (amb una vora taronja) que conté un DIV fill. El fill té fixat un width: 100% i un fons blau pàl·lid.
box-sizing: content-box. El DIV fill no té farcit ni cap vora, i s'adapta perfectament a l'interior del seu pare.box-sizing: content-box. El DIV fill se li ha afegit farcit i una vora. El fill es vessa fora del pare perquè el seu ample es calcula amb només el contingut: llavors s'afegeix el farciment i la vora per fer l'amplada representada.box-sizing: border-box. El DIV fill ara s'adapta perfectament a l'interior del seu pare, ja que el seu width: 100% representa el farciment i la vora.{{cssinfo}}
La propietat box-sizing s'especifica com una paraula clau única seleccionada de la llista de valors a continuació.
content-box.box {width: 350px;}, apliqueu {border: 10px solid black;} , llavors el resultat representat és una caixa de width: 370px.border-box.box {width: 350px; border: 10px solid black;} leads to a box rendered in the browser of width: 350px. The content box can't be negative and is floored to 0, making it impossible to use border-box to make the element disappear.{{csssyntax}}
<div class="content-box">Content box</div> <br> <div class="border-box">Border box</div>
div {
width: 160px;
height: 80px;
padding: 20px;
border: 8px solid red;
background: yellow;
}
.content-box {
box-sizing: content-box;
}
.border-box {
box-sizing: border-box;
}
{{EmbedLiveSample('Exemple','auto','300')}}
| Especificació | Estat | Comentari |
|---|---|---|
| {{SpecName('CSS3 Basic UI', '#box-sizing', 'box-sizing')}} | {{Spec2('CSS3 Basic UI')}} | Definició inicial. |
| Descripció | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|---|
| Suport bàsic | 1.0 {{property_prefix("-webkit")}}[1] 10.0 |
{{CompatVersionUnknown}}{{property_prefix("-webkit")}} {{CompatVersionUnknown}} |
{{CompatGeckoDesktop("1.0")}}{{property_prefix("-moz")}}[1] |
8.0[1] |
7.0 | 3.0 (522){{property_prefix("-webkit")}} 5.1[3] |
padding-box{{non-standard_inline}} {{deprecated_inline}} |
{{CompatNo}} | {{CompatNo}} | {{CompatGeckoDesktop("1.0")}}{{property_prefix("-moz")}}[1] {{CompatGeckoDesktop("29.0")}} Eliminat a {{CompatGeckoDesktop("50.0")}} |
{{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
| Descripció | Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Suport bàsic | 2.1{{property_prefix("-webkit")}}[1] 4.0 |
{{CompatVersionUnknown}}{{property_prefix("-webkit")}} {{CompatVersionUnknown}} |
{{CompatGeckoMobile("1.0")}}{{property_prefix("-moz")}}[1] {{CompatGeckoMobile("29.0")}}[2] |
9.0 | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
padding-box{{non-standard_inline}} {{deprecated_inline}} |
{{CompatNo}} | {{CompatNo}} | {{CompatGeckoMobile("1.0")}}{{property_prefix("-moz")}}[1] {{CompatGeckoMobile("29.0")}} Eliminat a {{CompatGeckoMobile("50.0")}} |
{{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
[1] box-sizing no es respectat quan l'alçada es calcula a partir de {{domxref("window.getComputedStyle()")}}, en Internet Explorer (totes les versions), en Firefox anterior a la 23, i en Chrome. Edge no presenta el problema. Tingueu en compte que la propietat currentStyle retorna el valor correcte de height.
[2] A més del suport no prefixat, Gecko 44.0 {{geckoRelease("44.0")}} va afegir suport per a una versió prefixada -webkit de la propietat per raons de compatibilitat web darrere de la preferència layout.css.prefixes.webkit, per defecte a false. Des de Gecko 49.0 {{geckoRelease("49.0")}} la preferència per defecte és true.
[3] El prefix de proveïdor -webkit s'ha eliminat a 534.12.