ยฟQuรฉ es el Box Sizing en CSS? ๐Ÿค”

5391 ๋‹จ์–ด spanishcss


ยกHola, gente bonita! ๐Ÿ‘‹
Quizรกs te๋Š” encontrado en muchos ejemplos de CSS la siguiente regla๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

*,
*::after,
*::before {
 box-sizing: border-box;
}


Te preguntaras a que se refiere, o porque siempre lo colocan en los estilos. Pues bien, en este articulo te lo explicare hasta con matemรกticasโ€ฆ๐Ÿคญ

๐ŸงยฟQuรฉ es el ์ƒ์ž ํฌ๊ธฐ ์กฐ์ •?



La propiedad box-sizing (tamaรฑo de caja) establece como se calcula el ancho y alto total de un elemento. Recuerda que en HTML todos los elementos son una caja y es muy importante comprender que es el box-model (modelo de caja) antes de pasar con el box-sizing.

La propiedad box-sizing tiene dos valores posibles: content-box Y border-box . El primero es el valor por defector asรญ que no es necesario colocarlo. Vamos a explicarlo con unos ejemplosโ€ฆ

๐Ÿ“ฆ์ฝ˜ํ…์ธ  ์ƒ์ž



์—” ์—˜ box-1 ํ…๊ณ  ์œ ์—” width ๋“œ 100px y ์œ ์—” height ๋“œ 120px si yo aรฑado un padding de 5px y un border de 2px ahora la caja va a medir 114px de ancho por 134px de alto. Esto es porque le estoy sumando el padding y border.

.box-1 {
 width: 100px;
 height: 120px;
 padding: 5px;
 border: 2px solid blue;
 box-sizing: content-box;
}




Esto hace que la caja se vea mรกs grande. Para llegar a estas medida total, el navegador hace el siguiente calculo:

์ตœ์ข… ๋„ˆ๋น„: ๋„ˆ๋น„ + (์™ผ์ชฝ ํŒจ๋”ฉ + ์˜ค๋ฅธ์ชฝ ํŒจ๋”ฉ) + (์˜ค๋ฅธ์ชฝ ํ…Œ๋‘๋ฆฌ + ์™ผ์ชฝ ํ…Œ๋‘๋ฆฌ)
์ตœ์ข… ๋„ˆ๋น„: 100px + (2 * 5px) + (2 * 2px) = 114px

์ตœ์ข… ๋†’์ด: ๋†’์ด + (ํŒจ๋”ฉ-ํƒ‘ + ํŒจ๋”ฉ-ํ•˜๋‹จ) + (๋ณด๋”-ํƒ‘ + ๋ณด๋”-ํ•˜๋‹จ)
์ตœ์ข… ๋†’์ด: 120px + (2 * 5px) + (2 * 2px) = 134px

El comportamiento por defecto de los navegadores al calcular el ancho y alto de un elemento es aplicar la anchura y altura al รกrea de contenido, sin tener en cuenta el borde y padding.

โœ…ํ…Œ๋‘๋ฆฌ ์ƒ์ž



El border box sirve para evitar lo anterior, sit tu necesitas que el elemento mida exactamente lo que especificaste en el width y height (100px x 120px each each), con el valor border-box lo puedes hacer. Border box hace que los elementos mantengan su tamaรฑo y se usa precisamente para que el box model no se rompa.

.box-2 {
 width: 100px;
 height: 120px;
 padding: 5px;
 border: 2px solid blue;
 box-sizing: border-box;
}




์ด๋ฏธ์ง€ ํฌ๊ธฐ๋Š” 86ํ”ฝ์…€, 106ํ”ฝ์…€, ์ตœ๋Œ€ 106ํ”ฝ์…€, ๋„ˆ๋น„ y ๋†’์ด(100ํ”ฝ์…€ x 120ํ”ฝ์…€)๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

86px x 106px๋กœ ํŒ๋งคํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๐Ÿฅด. Esto porque en lugar de sumar, el padding y border se restan del ancho y del alto para que despuรฉs la suma total sean las medidas exactas, este calculo lo hace el navegador de la siguiente manera:

๋„ˆ๋น„ - (์™ผ์ชฝ ํŒจ๋”ฉ + ์˜ค๋ฅธ์ชฝ ํŒจ๋”ฉ) - (์˜ค๋ฅธ์ชฝ ํ…Œ๋‘๋ฆฌ + ์™ผ์ชฝ ํ…Œ๋‘๋ฆฌ)
100px - (2 * 5px) - (2 * 2px) = 86px
86px + 10px ํŒจ๋”ฉ + 4px ํ…Œ๋‘๋ฆฌ = 100px

๋†’์ด - (ํŒจ๋”ฉ ์ƒ๋‹จ + ํŒจ๋”ฉ ํ•˜๋‹จ) - (๋ณด๋” ์ƒ๋‹จ + ๋ณด๋” ํ•˜๋‹จ)
120px - (2 * 5px) - (2 * 2px) = 106px
106px + 10px ํŒจ๋”ฉ + 4px ํ…Œ๋‘๋ฆฌ = 120px

Las diferencias entre content-box y border-box se pueden ver con la siguiente imagen. En el content box el padding y border del elemento se dibujan por fuera de la anchura y altura(se suman), mientras que en border-box, el padding y border se dibujan dentro del ancho y alto(se restan).


โš™๏ธ์ดˆ๊ธฐํ™”



Para no estar aplicando a cada uno de los elementos la propiedad box-sizing, podemos establecerlo de manera general, es decir, hacemos un "reset"de tal forma que a todos se les aplique el valor border-box, pero podemos hacerlo de dos ๊ตฌ๋ถ„ ํ˜•์‹:

1๏ธโƒฃ๋ฒ”์šฉ ๋ฐ•์Šค ์‚ฌ์ด์ง•



Esta regla lo que hace es aplicar la propiedad box-sizing con su valor border-box a todos los elementos y a todos los pseudoelementos (before y after):

*,
*::after,
*::before {
 box-sizing: border-box;
}


2๏ธโƒฃ์ƒ์†์„ ํ†ตํ•œ ๋ฒ”์šฉ ์ƒ์ž ํฌ๊ธฐ ์กฐ์ •



Este รบltimo reset se thinka mejor que la anterior. Por ejemplo si tienes un componente que solo fue diseรฑado para trabajar con el content-box entonces esta regla nos permite facilitar dicho cambio:

html{
 box-sizing: border-box;
}
*,
*::after,
*::before {
 box-sizing: inherit;
}


ํšŒ๊ท€:


  • Box Sizing | CSS Tricks
  • Box Sizing MDN

  • Leer์˜ ์€ํ˜œ๐Ÿฆธโ€โ™€๏ธ
    Mi redes sociales donde comparto notas de cรณdigo:

    ์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ