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; }