Cuando trabajas con CSS, es esencial comprender el concepto de "modelo de caja", ya que es la base para aplicar estilos visuales a los elementos HTML. Imagina que cada elemento renderizado se comporta como una caja, la cual está compuesta por cuatro áreas principales: el contenido, el padding, el borde y el margin.
¿Cómo se definen los márgenes, bordes y padding?
Margin: Es el espacio externo de la caja hacia afuera. Funciona como una separación entre la caja y otros elementos. Aunque el margin es transparente y no visible, asegura que la caja tenga un respiro alrededor de otros elementos en la página.
Borde: Es la línea que rodea el contenido de la caja. El borde puede tener color y grosor, permitiendo destacarse si es necesario. Por defecto, es transparente, pero lo puedes personalizar.
Padding: Este es el espacio interno de la caja hacia adentro. Ayuda a posicionar el contenido dentro de la caja, brindando un margen interno entre el contenido y los bordes del elemento.
¿Cómo se establece el tamaño y el posicionamiento?
Width y Height: Dictan el ancho y el alto de la caja, respectivamente. Puedes manipular estos valores para ajustar tanto el tamaño del contenedor como el del contenido dentro de él.
Posicionamiento: Utilizando propiedades como top, bottom, right y left, puedes mover la caja en cualquier dirección, según se requiera.
Ejemplo práctico del modelo de caja en CSS
Para entender mejor el modelo de caja, veamos un ejemplo de código en HTML y CSS.
<!DOCTYPEhtml><htmllang="es"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><linkrel="stylesheet"href="estilos.css"><title>Modelo de Caja</title></head><body><main><section><h1>Soy un título</h1><div><p>Soy un párrafo</p></div></section></main></body></html>
A menudo, cuando aplicas padding y border, estos pueden causar que la caja se desborde, generando barras de scroll no deseadas. Una solución eficaz es utilizar box-sizing: border-box, lo cual asegura que el tamaño total del elemento respete las dimensiones del padding y el borde. Así, al establecer un ancho del 100%, el navegador automáticamente reajusta el contenido para evitar el scroll horizontal.
¿Qué debes recordar siempre?
Al comenzar con CSS, es crucial reiniciar los estilos predeterminados del navegador, lo que incluye margin y padding, aplicando el selector universal *. Esto garantiza que no tengas comportamientos inesperados en las dimensiones de los elementos:
Box-sizing Universal: Agregar box-sizing: border-box; en el selector universal para un manejo más uniforme de las dimensiones.
De esta manera, tendrás un control total sobre el espacio y tamaño de tus elementos, asegurando que tus diseños sean consistentes y visualmente agradables. ¿Listo para el siguiente paso? Vamos a explorar cómo la herencia en CSS puede facilitar aún más el manejo de estilos. ¡Te espero en la próxima clase!
Gracias por el aporte, esto es algo que me cuesta entender todavía.
Tremendo.
Quedo super.
Para usar padding/margin les recomiendo el siguiente truco:
Piensen en el sentido de las manecillas del reloj empezando desde las 12 y en ese orden va a ir tomando los valores para asignarlos al elemento
Buen aporte.
Excelente aporte, gracias
Una mejor práctica que usar el '*' antes de todo en su CSS es utilizar Normalice CSS, sirve para ajustar los estilos que dan los navegadores web.
En este vídeo lo explican muy bien
Yo utilizo este archivo para todos mis proyectos web y me ayuda muchísimo.
¡Gracias! :D
Es mejor practica usar normalice que usar el ' * ' en cada proyecto?
Cual seria la diferencia?
Resumen
En la web los elementos se piensan en forma de rectángulos. A esto se le conoce como Modelo de caja.
Las cajas tienen parámetros que podemos editar en nuestro CSS
Margin
Espacio que hay del borde de la caja hacia afuera. Visualmente, permite separar a la caja de elementos externos.
Padding
Espacio que hay del borde de la caja hacia adentro. Visualmente, permite separar a la caja de elementos internos.
Border
Es el borde de la caja. Por defecto, a partir de ahí medimos las distancias de nuestra caja con elementos internos o externos.
Pensandolo como una casa:
El margin es el jardin o la acera que te aleja de las otras casas.
El border son tus paredes.
El padding es el espacio que tienen tus paredes con tus muebles.
El content son tus muebles.
Buena explicación
buen aporte!
Las imágenes:
Gracias
Gracias por las imagenes!
El Margin es un espacio fuera de la caja, este principalmente se hace para que haya un espacio entre diferentes elementos.
Mientras que el Padding es un espacio pero dentro de la caja.
Podriamos decir que es la separacion del contenido ante su borde, para que no se ve como sofocado el contenido dentro de su contenedor.
El box-sizing:border-box lo que hace es que el tamaño definido a la caja u contenedor no cambie pese a que tenga padding u borde asignado…
Si la caja tiene un tamaño de 700px este no cambiara su tamaño, siempre sera de 700px aunque tenga puesto padding u border
Para asignar un margin u padding se sigue las manecillas de un reloj
!Imagen
una buena explicacion, me ayudaste a entender la funcion de margin y padding
Esa propiedad de box-sizing:border-box, es lo máximo. aplíquenla por defecto. Y luego si no lo necesitan la sobreescriben.
La había visto y jamas la había entendido.
Diego la explico muy bien!
¿Cuál sería la ventaja de hacer eso?
Estoy aprendiendo e intentando comprender al cien esta clase...
Excelente ! gracias por compartir los link. Siempre e tenido problemas con los nombres de variables, clases e id jajaja
Se ve interesante los videos, pero me aburrí al minuto 5.
Geniales apuntes!
Gracias! :)
Por defecto en el modelo de caja de CSS, el ancho y alto asignado a un elemento es aplicado solo al contenido de la caja del elemento. Si el elemento tiene algún borde (border) o relleno (padding), este es entonces añadido al ancho y alto a alcanzar el tamaño de la caja que es desplegada en pantalla. Esto significa que cuando se definen el ancho y alto, se tiene que ajustar el valor definido para permitir cualquier borde o relleno que se pueda añadir.
*
*
La propiedad box-sizing puede ser usada para ajustar el siguiente comportamiento:
• content-box es el comportamiento CSS por defecto para el tamaño de la caja (box-sizing). Si se define el ancho de un elemento en 100 pixeles, la caja del contenido del elemento tendrá 100 pixeles de ancho, y el ancho de cualquier borde o relleno ser añadirá al ancho final desplegado.
• border-box le dice al navegador tomar en cuenta para cualquier valor que se especifique de borde o de relleno para el ancho o alto de un elemento. Es decir, si se define un elemento con un ancho de 100 pixeles. Esos 100 pixeles incluíran cualquier borde o relleno que se añadan, y la caja de contenido se encogerá para absorber ese ancho extra. Esto típicamente hace mucho más fácil dimensionar elementos.
/*El código con el que siempre debemos iniciar nuestro CSS 😉*/*{ box-sizing: border-box;padding:0;margin:0;}
Toda la info en 🤓
experimentando un poco.
muy ordenado, genial!
Referencia MDN
El modelo de cajas CSS estándar
En el modelo de cajas estándar, cuando estableces los atributos width y height para una caja, defines el ancho y el alto del contenido de la caja. Cualquier área de relleno y borde se añade a ese ancho y alto para obtener el tamaño total que ocupa la caja. Esto se muestra en la imagen que encontrarás a continuación.
Si suponemos que la caja tiene el CSS siguiente, que establece los valores para las propiedades width, height, margin, border, y padding:
El espacio que ocupa nuestra caja usando el modelo de cajas estándar será en realidad de 410 px (350 + 25 + 25 + 5 + 5); y su altura, de 210 px (150 + 25 + 25 + 5 + 5), porque el área de relleno y el borde se añaden al ancho que se utiliza para el contenido de la caja.
Nota: El margen no se cuenta para el tamaño real de la caja; por supuesto, afecta al espacio total que la caja ocupa en la página, pero solo al espacio de fuera de la caja. El área de la caja se termina en el borde, no se extiende hasta el margen.
El modelo de cajas CSS alternativo
Podrías pensar que es más bien incómodo tener que sumar el borde y el área de relleno para obtener el tamaño real de la caja, ¡y tienes razón! Por este motivo, CSS introdujo un modelo de caja alternativo algún tiempo después del modelo de cajas estándar. Con este modelo, cualquier ancho es el ancho de la caja visible en la página, por lo tanto, el ancho del área de contenido es ese ancho menos el ancho para el relleno y el borde. El mismo CSS que hemos usado antes daría entonces el resultado siguiente (ancho = 350 px, altura = 150 px).
Por defecto, los navegadores usan el modelo de cajas estándar. Si deseas activar el modelo de cajas alternativo para un elemento, hazlo configurando box-sizing: border-box. Con ello, le dices al navegador que tome como el borde de la caja el área definida por cualquier tamaño que establezcas.
.box{ box-sizing: border-box;}
solo confirmenme el MODELO DE CAJA contiene el MARGIN PADDING Y EL BORDE???
Sí, son las dimensiones del elemento, margin, padding y border :)
Así es, se vería así
Cuando hablamos de Modelo de Caja o Box Model es posible que nos encontremos con el término Layout.
--
Layout se refiere a la geometría de los elementos, define como, con que tamaño, con que separación, y en que posición se dibujaran los elementos en pantalla.
El modelo de caja es el algoritmo por el cual el navegador dibuja las cajas en pantalla.
En este modelo tenemos tres cajas internas:
content box
padding box (separación del borde con el contenido.)
border box
Y de último una caja externa invisible:
margin box
Este último es un margen que separa dicho elemento del resto de elementos.
Nota: Tener en cuenta que los porcentajes son relativos al tamaño del elemento padre. En este caso como usamos un ancho 100% en main, y su padre es body, por eso tomo todo el ancho de la pantalla, Si previamente a body le hubiéramos declarado ancho de 50px, el 100% de main serian 50px.
Con estas clases no me preocupo del tiempo que demoren, me concentro tanto que solo avanzo y avanzo y avanzo, nunca paro de aprender 💚
x2, hasta se me olvida el pomodoro jaja
es un quebradero de cabeza esta clase, el modelo de cajas es lo que menos me gusta y lo que menos entiendo de css
también, no entiendo nada toca buscar algún tutorial
igual
Clase 25 - Modelo de caja
¿Qué forma tienen los elementos HTML cuando son renderizados?
Forma de cajas.
¿Cómo se le llama a los estilos que se les puede agregar a las cajas que conforman los elementos de HTML?
Modelo de caja.
¿Cuáles son los estilos que podemos aplicar al modelo de caja?
Margin.
Border.
Padding.
Content
Width.
Height.
¿Qué es margin en el modelo de caja?
Es el espacio externo que hay entre una caja y otra.
¿De qué color es el margin de un elemento HTML?
Transparente.
¿Qué es el border en el modelo de caja?
Es el contorno de un elemento.
¿Qué aspectos modificar del border en CSS?
Estilo o forma.
Ancho.
Color.
¿Cuál es el color por defecto del border de un elemento?
Transparente.
¿Qué es el padding en el modelo de caja?
Es el espacio interno que hay entre el border y el content del modelo de caja.
¿Para qué podemos usar el padding?
Para reubicar el content en el modelo de caja.
¿Qué otro nombre podemos usar para referirnos al padding?
Relleno.
¿Qué es el content en el modelo de caja?
Es el contenido de una etiqueta HTML, por ejemplo:
+Texto.
Imagenes.
Videos.
Formularios.
¿Qué es el width y el haight del content en el modelo de caja?
Width: Ancho del content.
Height: Alto del content.
¿Qué posiciones podemos dar a un elemento con CSS?
Top: Arriba.
Right: Derecha.
Bottom: Abajo.
Left: Izquierda.
¿De qué color es el color de fondo por defecto de un elemento HTML?
Transparente.
¿Los elementos HTML tienen una imagen de fondo por defecto?
No.
¿Para qué nos sirve la propiedad width?
Para manipular el ancho de un elemento HTML.
¿Para qué nos sirve la propiedad height?
Para manipular el ancho de un elemento HTML.
¿Para qué nos sirve la propiedad border?
Para manipular el borde de un elemento HTML.
¿Qué aspectos podemos modificar del borde de un elemento con la ayuda de la propiedad border?
Ancho.
Estilo o forma.
Color.
¿Qué resultado obtenemos con la declaración border: 10px solid grey?
El resultado que tenemos al usar esta declaración es un borde visible y continuo de color gris y de un ancho de 10px.
¿Para qué nos sirve la propiedad padding?
Para agregar un espacio interno a un elemento HTML.
¿Cómo es la distribución del padding en un elemento HTML si a la propiedad padding le damos dos valores?
El primer valor se asigna a la parte de arriba y de abajo, mientras que el segundo valor se asigna a la parte de la derecha e izquierda.
¿Cómo es la distribución del padding en un elemento HTML si a la propiedad padding solo le damos un valor?
Este valor se asignará arriba, a la derecha, abajo y a la izquierda.
¿Cómo podemos ser específicos a la hora de asignar un valor arriba, a la derecha, abajo o a la izquierda usando las propiedades border, margin y padding?
Agregándole a estas propiedades lo siguiente:
-top = se asigna el valor solo a la parte de arriba del elemento.
-right = se asigna el valor solo a la parte derecha del elemento.
-bottom = se asigna el valor solo a la parte de abajo del elemento.
-left = se asigna el valor a la parte izquierda del elemento.
¿Qué propiedades determinan el tamaño total de un elemento HTML?
Border.
Margin.
Padding.
Width.
Height.
Como vemos es muy importante a la hora de asignar un tamaño a un elemento que todos los valores anteriores se suman para dar el tamaño real de un elemento.
¿Qué pasa si no tenemos en cuenta los valores de border, margin, padding, width y height a la hora de asignar un tamaño a un elemento HTML?
Podríamos generar un scroll hacia los lados, lo cual es una mala experiencia para los usuarios.
¿Cuál es el selector universal?
Se representa con el símbolo del asterisco (*).
Para qué nos sirve el selector universal?
Para darle estilos a todos los elementos de HTML que tenga el proyecto.
¿Cómo podemos resetear los estilos que asignan los navegadores a los elementos HTML?
Lo podemos hacer usando la siguiente regla CSS:
*{padding:0;margin:0;}
Lo que estamos haciendo con esta regla es eliminando el padding y margin que tengan los elementos de HTML. Es importante que esta regla de CSS la escribamos al inicio de nuestro archivo CSS, de lo contrario podríamos estar sobreescribiendo estilos anteriores a este.
¿Para qué nos sirve la declaración box-sizing: border-box?
Con esta propiedad podemos hacer que el navegador tenga en cuenta automáticamente los valores de padding, border, width y height, para calcular el tamaño de un elemento HTML y no se cree un scroll hacia los lados sin que nosotros lo queramos.
Sintaxis:
box-sizing: border-box;
Gracias por compartir tu resumen. ¡Me han servido mucho!
Siempre comienza tu css con
*{ box-sizing: border-box;padding:0;margin:0;}
de hecho es una mala practica quitarle el padding y margin a todos los elementos
Usa Normalize!
Acerca del:
*{margin:0;padding:0; box-sizing: border-box;}
En lo personal yo no lo aplico porque me elimina algunos margins que en realidad me erán útiles y que al final tengo que volver a poner, como los de los párrafos o encabezados. Además en algunos sitios (o canales de Youtube) recomiendan no usar esta regla.
¿Qué se podría hacer entonces?
En cuanto al scroll horizontal, este es causado por dos cosas:
El body tiene un margin por defecto, el cual se puede quitar con un margin: 0 SOLO en el body.
Al poner width: 100% en el main, lo que se está tratando de hacer es que ocupe todo el ancho. Esto es innecesario ya que main es un elemento de bloque, y como tal por defecto ocupa todo el ancho que tenga disponible (incluso tomando en cuenta el padding y el border). Por lo que esta declaración se puede omitir y ya no tendríamos que usar box-sizing: border-box.
Lo que yo hago es poner margin: 0 SOLO en el body ya que es lo único que causa problemas (en la mayoría de los casos).
Pero existe una mejor solución: existe una librería llamada que es una hoja de estilos que elimina algunos margins y padding que pueden ser molestos, dejando los que si sirven.