Mis apuntes de desarrollo web </>

Box Model

Todos los elementos HTML se pueden considerar como cuadros.

El modelo de caja es esencialmente una caja que envuelve cada elemento HTML. Consiste en: márgenes, bordes, relleno y el contenido real.

Box model

Width & Height:

El ancho y el alto son las propiedades que definen el tamaño de todos los elementos DE BLOQUE. En los elementos de linea tanto el alto como el ancho ocupan solo lo que ocupe el contenido.

Ejemplo:

ejemplo ancho y alto

Elemento de bloque de 80*50

Elemento en linea

Margin:

Es la propiedad que permite generar espacio entre elementos. Es un shorthand (propiedad abreviada) que controla los 4 lados posibles a los que dar márgenes.

  1. margin-top: Margen superior.
  2. margin-right: Margen derecho.
  3. margin-bottom: Margen inferior.
  4. margin-left: Margen izquierdo.

Admite hasta 4 valores que van en el orden de las agujas del reloj.

  • 4 valores: margin:top right bottom left;
  • 3 valores: margin: top left/right bottom;
  • 2 valores: margin: top/bottom left/right;
  • 1 valor: margin: top/right/bottom/left;

Los elementos en bloque toman las 4 márgenes y los elementos en línea toman solo los valores de derecha e izquierda.

Los elementos en bloque, si tienen un ancho declarado, se pueden alinear hacia la izquierda (por defecto), hacia a la derecha o en el centro de la página mediante el valor auto en la propiedad de margin. Ojo, se alinea o se centra EL ELEMENTO, NO EL CONTENIDO.

Colapsado de márgenes:

En css las márgenes verticales para cualquier elemento colapsan. Esto quiere decir que por ejemplo, teniendo 2 elementos, uno encima del otro, el margin-bottom del primer elemento no se suma con el margin-top del segundo elemento. En márgenes horizontales si se suman pero las verticales no.

Tambien, algo que sucede siempre con las márgenes cuando se utilizan elementos hijos, es que las márgenes de dichos elementos afectan al elemento padre, pero hay formas de evitar eso.

Ejemplo:

ejemplo margin

Elemento de bloque 2

Elemento de bloque 3

Elemento en linea 2 Elemento en linea 3

Entre el bloque 2 y el bloque 3 solo hay 60px de margin, los cuales son del bloque 3, sin tomarse en cuenta el margin-bottom de 10px del bloque 2 debido al colapsado de márgenes.

Padding:

Es la propiedad que permite generar espacio interno entre el borde y la caja. Es un shorthand (propiedad abreviada) que controla los 4 lados posibles a los que dar padding.

  1. padding-top: padding superior.
  2. padding-right: padding derecho.
  3. padding-bottom: padding inferior.
  4. padding-left: padding izquierdo.

Admite hasta 4 valores que van en el orden de las agujas del reloj.

  • 4 valores: padding:top right bottom left;
  • 3 valores: padding: top left/right bottom;
  • 2 valores: padding: top/bottom left/right;
  • 1 valor: padding: top/right/bottom/left

A diferencia de margin, padding si aplica por los 4 lados a los elementos tanto en bloque como en línea.

Ejemplo:

ejemplo padding

Elemento de bloque 4

Elemento de bloque 5

Elemento en linea 4 Elemento en linea 5

Border:

Es la propiedad que permite modificar el borde de la caja. Es un shorthand (propiedad abreviada) que agrupa 3 propiedades:

  1. border-width: ancho del borde.
    • border-top-width
    • border-right-width
    • border-bottom width
    • border-left-width
  2. border-style: estilo del borde.
    • border-top-style
    • border-right-style
    • border-bottom style
    • border-left-style
  3. border-color: color del borde.
    • border-top-color
    • border-right-color
    • border-bottom color
    • border-left-color

De igual forma que en padding y margin, las 3 propiedades de border admiten de 1 a 4 valores que van en el orden de las agujas del reloj.

Ejemplo border

Box-sizing:

Es la propiedad que permite controlar el cálculo que hace el navegador a la hora de modificar las propiedades content, padding y border. Sus 2 valores son:

content-box:
Valor por defecto.
border-box:
Cálculo de tamaño del elemento incluyendo el padding y el border.

Display

La propiedad display sirve para cambiar el contexto de los elementos dentro del navegador, Admite varios valores:

none:
Hace que el elemento no se muestre, pero sigue cargándose.
block:
Hace que el elemento sea de bloque.
inline:
Hace que el elemento sea de línea.
inline-block:
Hace que el elemento sea de línea pero admite medidas y márgenes verticales.

Ejemplo:

ejemplo display 1 ejemplo display 2 ejemplo display 3

Elemento de bloque 11

Elemento de bloque 12

Elemento en linea 11 Elemento en linea 12 Elemento en linea 13