Estilos de caja

Colores de fondo

CSS3 nos permite utilizar el modo de color HSB que permite reunir en un solo y único gráfico los modelos colorimétricos RGB y CMJN.

La sintaxis sería: hsl (187, 5%, 84%), donde el primer valor corresponde al tono, el segundo valor a la saturación y el último valor al brillo.

Con la unidad hsla, es posible añadir un cuarto valor opcional, la transparencia. Su valor va de 0, totalmente transparente, a 1, totalmente opaco (sin transparencia).

	#rojo { 
		width: 200px; 
		height: 100px; 
		background-color: hsl(0,96%,42%); 
	} 
	#blanco { 
	   position: relative; 
	   top: -30px; 
	   left: 50px; 
	   width: 200px; 
	   height: 100px; 
	   background-color: hsla(58,95%,95%,.8); 
	}
				

Al igual que para el TSL con transparencia, el modo RGB, ahora acepta la transparencia en unidades rgba().

Ejemplo: background-color: rgba(200,20,10,.5);

La nueva propiedad opacity permite aplicar transparencias a todos los elementos HTML y a sus descendientes.

Título de nivel 1

Magna Nibh Malesuada

	#transp { 
		width: 250px; 
		padding: 10px; 
		background-color: blue; 
		opacity: .4;
		text-align: center; 
}			
				


Fondos múltiples

Vamos a comprobar el funcionamiento de la propiedad background que nos permitirá colocar varias imágenes de fondo:

#imagenesMultiples { 
   position: absolute; 
   top:  10px; 
   left: 10px; 
   width: 150px; 
   height: 80px; 
   border: 1px solid #333; 
   background: url("uno.png") top left no-repeat, 
		url("dos.png") top right no-repeat, 
		url("tres.png") bottom left no-repeat, 
		url("cuatro.png") bottom right no-repeat; 
}			
				

#imagenesMultiples2 { 
   width: 400px; 
   height: 250px; 
   border: 1px solid #333; 
   background: url("../img/1.gif") top left repeat-x, 
               url("../img/4.gif") bottom right repeat-y; 
}
				


Bordes con imágenes

	#contenido {
		border-style: solid;
		border-width: 81px 135px 153px 145px;
		-moz-border-image: url(borde.png) 81 135 153 145 repeat;
		-webkit-border-image: url(borde.png) 81 135 153 145 repeat;
		-o-border-image: url(borde.png) 81 135 153 145 repeat;
		border-image: url(borde.png) 81 135 153 145 repeat;
		width: 40%;
		margin-left: 20px;
	}
				

Los argumentos de la propiedad border-image):

  • url(''): ruta de acceso a la imagen.
  • 20: porción en píxeles de la imagen que se usará para cada elemento decorativo. Vamos a usar 20 píxeles de la imagen para cada elemento. Si el valor es el mismo para todos los lados, bastará con indicar un único valor, que será el equivalente de: 20 20 20 20. Si los valores son diferentes para los distintos lados, indique dichos valores en este orden: arriba, derecha, abajo, izquierda.
  • round: permite repetir la imagen y redimensionarla para que ocupe la totalidad del borde, sin que aparezca cortada (los dos otros valores son: stretch para estirar el motivo sobre toda la dimensión del lado y repeat para repetir el motivo, que podría aparecer cortado).

Otras propiedades del fondo

La propiedad background-origin permite definir la posición inicial de una imagen de fondo de una caja. Estos son sus posibles valores:

{background-origin: padding-box;}
{background-origin: border-box;}
{background-origin: content-box;}

La propiedad background-clip permite recortar una imagen de fondo. Utiliza los mismos valores de la propiedad background-origin, con las mismas especificaciones.

{background-clip: padding-box;}
{background-clip: border-box;}
{background-clip: content-box;}

La propiedad background-size permite definir el tamaño de la imagen de fondo en función del elemento que la contenga.

Indicando porcentaje:

En el ejemplo se ha reducido la imagen al 50% del tamaño de la caja que la contiene.

	#tamano1 { 
	   width: 400px; 
	   height: 250px; 
	   border: 1px solid; #333; 
	   background: url("../img/suiza.jpg") no-repeat; 
	   background-size: 50%; 
	}
				

Indicando un valor:

En este ejemplo, la imagen tiene un tamaño fijo, no proporcional.

	#tamano2 { 
	   width: 400px; 
	   height: 250px; 
	   border: 1px solid; #333; 
	   background: url("../img/suiza.jpg") no-repeat; 
	   background-size: 300px 50px; 
	}
				

Cover:

En este ejemplo, el valor cover permite redimensionar proporcionalmente la imagen en un sentido. En este caso se trata de una redimensión horizontal.

	#tamano3 { 
	   width: 400px; 
	   height: 250px; 
	   border: 1px solid; #333; 
	   background: url("../img/suiza.jpg") no-repeat; 
	   background-size: cover; 
	}			
				

Contain:

En este último ejemplo, el valor contain permite redimensionar proporcionalmente la imagen en un sentido que permita su publicación sin que aparezca cortada.

	#tamano4 { 
	   width: 400px; 
	   height: 250px; 
	   border: 1px solid; #333; 
	   background: url("../img/suiza.jpg") no-repeat; 
	   background-size: contain; 
	}
				

Bordes redondeados

Gracias a la propiedad border-radius podemos aplicar bordes redondeados, que pueden incluso ser diferentes para cada una de las esquinas.

	#redondos {  
	   border-radius: 10px 30px 20px 40px;  
	   width: 200px;  
	   height: 90px;  
	   background-color: red;  
	}				

Estos efectos pueden aplicarse a diferentes elementos de la web, como por ejemplo en las tablas:

# Top 10 Juegos más vendidos Plataforma
1 Wii Sports Wii
2 Super Mario Bros. NES
3 Mario Kart Wii Wii
4 Wii Sports Resort Wii
5 Pokémon, Red, Blue y Green Game Boy
6 Tetris Game Boy
7 New Super Mario Bros. Nintendo DS
8 Wii Play Wii
9 Duck Hunt NES
10 New Super Mario Bros. Wii Wii
table {
	border-spacing: 0; 
    width: 500px;
}	

.bordered { 
	border: solid #000 1px; 
    border-radius: 20px;
	background-color: #fff;
    box-shadow: 0px 3px 3px #000; 
}

.bordered td, .bordered th { 
    border-left: 1px solid #ccc; 
    border-top: 1px solid #ccc; 
    padding: 10px; 
    text-align: left; 
}

.bordered th { 
    background-color: #dce9f9; 
    background-image: -webkit-linear-gradient(top, #ebf3fc, #dce9f9); 
    background-image: -moz-linear-gradient(top, #ebf3fc, #dce9f9); 
    background-image: -ms-linear-gradient(top, #ebf3fc, #dce9f9); 
    background-image: -o-linear-gradient(top, #ebf3fc, #dce9f9); 
    background-image: linear-gradient(top, #ebf3fc, #dce9f9); 
    box-shadow: 0 1px 0 rgba(255,255,255,.8) inset;
    border-top: none; 
    text-shadow: 0 1px 0 rgba(255,255,255,.5);  
}

.bordered td:first-child, .bordered th:first-child { 
    border-left: none;
}

.bordered th:first-child { 
    border-radius: 20px 0 0 0; 
}

.bordered th:last-child { 
    border-radius: 0 20px 0 0; 
}

.bordered tr:last-child td:first-child { 
    border-radius: 0 0 0 20px; 
}

.bordered tr:last-child td:last-child { 
    border-radius: 0 0 20px 0; 
}

.bordered tr:hover { 
    background: #fbf8e9; 
}