Advertisement
  1. Web Design
  2. CSS

Revisitando la propiedad CSS Background

Scroll to top
Read Time: 8 min

() translation by (you can also view the original English article)

En este tutorial vamos a hablar sobre una de las mas viejas, mas familiares, propiedades CSS: background background es una de las muchas propiedad CSS cuyas características son pasadas por alto. De hecho, tuvo una mejora con CSS3, recibiendo nuevas capacidades ademas de solo agregar una imagen de fondo o color. Veamos algunas de ellas.

Retallo de posición del fondo

Posicionar la imagen de fondo es simple y algo con lo que ya eres familiar. Si queremos posicionar el fondo en la esquina inferior derecha del elemento, usamos bottom right en background-position Por ejemplo:

1
#workspace {
2
    width: 100%;
3
  max-width: 668px;
4
	height: 400px;
5
	background-color: #525d62;
6
	background-image: url(images/macbook.png);
7
	background-repeat: no-repeat;
8
	background-position: right bottom;
9
}

O, abreviado, background, luego de la definición del url:

1
#workspace {
2
    width: 100%;
3
	max-width: 668px;
4
	height: 400px;
5
	background: #525d62 url(images/macbook.png) no-repeat right bottom;
6
}

Desde la llegada de CSS3 hemos sido capaces de especificar la position del retallo; las distancias precisas sobre la posición del set. Tomando nuestro ejemplo de bottom right, incluimos bottom 20px right 30px para posicionar el fondo a 20px del border inferior y 30px del border izquierdo.

1
#workspace {
2
    width: 100%;
3
	max-width: 668px;
4
	height: 400px;
5
	background-color: #525d62;
6
	background-image: url(images/macbook.png);
7
	background-repeat: no-repeat;
8
	background-position: right 30px bottom 20px;
9
}

Las posiciones (bottom, top, right, left) pueden ser definidas en cualquier orden, pero la longitud del desplazamiento debe ser definida después de cada posición del fondo.

Los créditos son para Metin Kazan por las ilustraciones.

2. Múltiples Imágenes de Fondo

La propiedad background también nos permite añadir múltiples imágenes de fondo. Además, vamos a ampliar nuestro ejemplo anterior con más cosas e ingenios.

Añadimos estas imágenes a un solo background o a través de la declaración background-image para separar cada una con una coma. Usamos la propiedad background-position, la cual también acepta múltiples valores para controlar cada una de esas imágenes de fondo.

1
#workspace {
2
	height: 400px;
3
	background-color: #525d62;
4
	background-image: 
5
        url(images/macbook.png),
6
		url(images/mouse.png),
7
		url(images/hdd.png),
8
		url(images/phone.png),
9
		url(images/ipad.png),
10
		url(images/coffee.png),
11
		url(images/camera.png);
12
	background-repeat: no-repeat;
13
	background-position: 
14
            50% 50%,   /* macbook.png */
15
            75% 295px, /* mouse.png */
16
            75% 230px, /* hdd.png */
17
            96% 240px, /* phone.png */
18
            20% 250px, /* ipad.png */
19
            22% 190px, /* coffee.png */
20
            7% 280px; /* camera.png */
21
}

Podemos usar unidades fijas (como pixeles) o unidades flexibles (como los porcentajes) o una combinación de las dos.

Cada par de valores representa las coordenadas desde la esquina superior izquierda del elemento contenedor hasta la esquina superior izquierda de la imagen. Por ejemplo, la esquina superior izquierda de la cámara de la imagen es 280px desde la parte superior del contenedor, luego 7% de la anchura disponible hacia el otro lado desde la izquierda.

Nota: La anchura disponible es el total de anchura del elemento contenedor, menos la anchura de la imagen de fondo. Por lo tanto, una imagen de fondo ubicada 50% en el eje x aparecerá exactamente centrada.

Movimiento

Asimismo, ya que background-position es una propiedad que se puede llegar a animar, podemos crear un fondo más atractivo y más animado.

1
#workspace {
2
	width: 600px;
3
	height: 400px;
4
	background-color: #525d62;
5
    background-repeat: no-repeat;
6
	background-image: 
7
        url(images/macbook.png),
8
        url(images/mouse.png),
9
		url(images/hdd.png),
10
		url(images/phone.png),
11
		url(images/ipad.png),
12
		url(images/coffee.png),
13
		url(images/camera.png);
14
	background-position: 
15
		50% 50%, 
16
		430px 295px, 
17
		425px 230px, 
18
		480px 240px, 
19
		105px 250px, 
20
		120px 190px, 
21
		40px 280px;
22
	animation: 3s ease 0s inView forwards;
23
}
24
@keyframes inView {
25
    0% {
26
		background-position-y: 600%, 451px, -448px, 240px, 496px, -44px, 280px;
27
		background-position-x: 50%, 75%, 75%, 200%, 20%, 22%, -100%;
28
	}
29
	20% {
30
		background-position-y: 50%, 451px, -448px, 240px, 496px, -44px, 280px;
31
		background-position-x: 50%, 75%, 75%, 200%, 20%, 22%, -100%;
32
	}
33
	30% {
34
		background-position-y: 50%, 295px, -448px, 240px, 496px, -44px, 280px;	
35
		background-position-x: 50%, 75%, 75%, 200%, 20%, 22%, -100%;
36
	}
37
	40% {
38
		background-position-y: 50%, 295px, 230px, 240px, 250px, -44px, 280px;
39
		background-position-x: 50%, 75%, 75%, 200%, 0%, 22%, -100%;
40
	}
41
	50% {
42
		background-position-y: 50%, 295px, 230px, 240px, 250px, 190px, 280px;
43
		background-position-x: 50%, 75%, 75%, 96%, 0%, 22%, -100%;
44
	}
45
	60% {
46
		background-position-y: 50%, 295px, 230px, 240px, 250px, 190px, 280px;
47
		background-position-x: 50%, 75%, 75%, 96%, 0%, 22%, 7%;
48
	}
49
	100% {
50
		background-position-y: 50%, 295px, 230px, 240px, 250px, 190px, 280px; 
51
	}
52
}

Aquí hemos ajustado un número de fotogramas en una línea de tiempo. En cada fotograma hemos alterado los valores de background-position-xbackground-position-y de cada imagen de fondo. Por supuesto, la animación es ciertamente rudimentaria, ¡así que por favor amablemente le pido que tome CodePen y lo mejore!

Nota: Haga clic en Rerun en la parte inferior derecha de la pluma para ver la animación.

Aprenda más sobre las animaciones CSS

Un Par de Puntos Significativos

Los fondos que usamos están ordenados de forma secuencial, el primero en la lista aparecer en la parte de arriba del orden, mientras que el último en la lista aparecerá al fondo del orden de los fondos.

1
#workspace {
2
    width: 600px;
3
    height: 400px;
4
	background-color: #525d62;
5
	background-image: 
6
        url(images/macbook.png),
7
		url(images/mouse.png),
8
		url(images/hdd.png),
9
		url(images/phone.png),
10
		url(images/ipad.png),
11
		url(images/coffee.png),
12
		url(images/camera.png); /* stacked at the bottom */
13
	background-repeat: no-repeat;
14
}

Todas las sub-propiedades de background (background-repeatbackground-size, background-repeat, etc.) pueden ser definidas varias veces, excepto background-color. Si aplicamos múltiples fondos usando la abreviatura de la propiedad background, entonces defina el color de fondo como el último valor que va a tomar efecto. Por ejemplo:

1
#workspace {
2
	height: 400px;
3
	background: 
4
        url(images/macbook.png) 50% 50% no-repeat,
5
		url(images/mouse.png) 430px 295px no-repeat,
6
		url(images/camera.png) 425px 230px no-repeat #525d62;
7
}

De manera alternativa, añada un background-color separado, posterior a la propiedad corta:

1
#workspace {
2
    width: 600px;
3
    height: 400px;
4
	background: 
5
        url(images/macbook.png) 50% 50% no-repeat,
6
		url(images/mouse.png) 430px 295px no-repeat,
7
		url(images/camera.png) 425px 230px no-repeat;
8
    background-color: #525d62;
9
}

Los dos códigos hacen los mismo, pero yo encuentro que el último es más intuitivo e interesante.

3. Fusionar Imágenes de Fondo

La propiedad background-blend-mode hace lo mismo que usted encontrará en las aplicaciones como Photoshop o Gimp, ésta mezcla las imágenes de fondo con otra, así como también con lo que sea que esté debajo.

La propiedad background-blend-mode toma ciertos valores familiares tales como overlay y multiply entre algunos otros con los cuales Jonathan Cutrell hace un trabajo fantástico de explicación en su tutorial sobre ese tema. Recomiendo que lea su artículo para que podamos pasar a ver algunos ejemplos prácticos.

Hay varias maneras de usar el Modo de Mezcla CSS para crear diseños sorprendentes, tales como mezclando un degradado con una imagen, el cual Ian Yates señala en su inspirador resumen.

Para crear este efecto, añadamos una imagen de fondo y un degrado y apliquemos el modo de mezcla overlay.

1
#blend {
2
	background-repeat: no-repeat;
3
	background-image: url( 'img/people-15.jpg' ),
4
					  linear-gradient(135deg, rgba(175,0,79,1) 0%,rgba(255,114,187,1) 100%);
5
	background-blend-mode: overlay;
6
}

Overlay impacta a los dos fondos que hemos mencionado aquí, así que podría necesitar ser prudente si no quiere que todo se mezcle. Si queremos evitar que todo se mezcle con el color de fondo, ajuste el segundo valor a normal el cual aplicará a nuestra segunda imagen de fondo.

1
#blend {
2
	background-repeat: no-repeat;
3
	background-image: url( '../img/people-15.jpg' ),
4
					  linear-gradient(135deg, rgba(175,0,79,1) 0%,rgba(255,114,187,1) 100%);
5
	background-color: yellow;
6
    background-blend-mode: overlay, normal;
7
}

4. Recortando el Fondo

La propiedad background-clip es una utilidad que controla cómo el color de fondo y la imagen se cruzan dentro del modelo de contenido de caja CSS. De forma similar, la propiedad box-sizing y la propiedad background-clip ocupan tres valores válidos llamados:

  • border-box es un valor por defecto que expande la imagen de fondo o el color por todo el trayecto hasta el borde exterior del elemento.
  • padding-box expandirá el fondo arriba del borde exterior del padding, o en otras palabras, el borde interior del borde.
  • content-box preservará el fondo dentro del elemento contenido como se muestra debajo:

Un ejemplo practico donde hemos encontrado que la propiedad background-clip es útil es cuando tengo creado un botón con un icono, usando un solo elemento. En la siguiente demostración, nuestra imagen se expandirá desde el borde izquierdo hasta la derecha del elemento, incluso, si añadimos padding en cada lado, ya que éste todavía aplica border-box.

Si queremos envolver el icono con un poco de espacio en blanco, por lo general, tendríamos que envolverlo en otro elemento y aplicar un padding en ese elemento extra. Usando la propiedad background-clip, podemos hacer esto de manera elegante al configurar esto a través de la propiedad content-box y sustituyendo el padding con bordes del mismo color como el color de fondo.

Resumiendo

La propiedad background es una que usamos con frecuencia en nuestros proyectos. Por fortuna, este artículo le ha recordado de su amplia variedad de usos, y espero escuchar más ideas en los comentarios.

Una nota final: los navegadores que tienen soporte para estas propiedades (con la excepción de background-blend-mode son magníficas. De acuerdo a CanIUse, la opción de múltiples fondos tiene soporte desde Internet Explorer 9 en adelante con tan sólo un par de problemas triviales. Las opciones de imagen de fondo, tales como la propiedad background-clip, está disponible casi para todos.

Las opciones de mezcla, al momento de escribir este artículo, funcionaban mejor en Chrome, Opera y son, parcialmente, aplicables en Safari debido a algunos errores, pero lamentablemente parece no haber hecho ningún progreso con Microsoft Edge.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Web Design tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.