--- 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.