Manual CSS3
Manual CSS3
1. Qu hay de nuevo en CSS3? ................................. 3 2. Atributo gradiente de colores en borde en firefox ....... 4 3. Bordes redondeados ........................................... 6 4. Mltiples imgenes de fondo................................. 7 5. Colores RGBA ................................................... 8 6. Ruptura de palabras (Word-wrap)........................... 9 7. Textos multicolumna ......................................... 10 8. Sombras (box-shadow) ....................................... 11 9. Resplandor interior ........................................... 13 10. Propiedad background origin ............................... 14 11. Atributos overflow-x y overflow-y ......................... 15 12. Introduccin a @font-face................................... 16 13. Sombras en texto (text-shadow) ........................... 17 14. Animaciones ................................................... 18 14.1. Introduccin a las animaciones ......................... 18 14.2. Conceptos bsicos para las animaciones .............. 18 14.3. Desplazamiento de un elemento ....................... 19 14.4. Transformacin de un elemento ....................... 20 15. Selectores...................................................... 22 16. Documentacin ............................................... 24
Tendremos que tener en cuenta que el ejemplo solo se ver correctamente en Firefox y tendremos que incluir moz- delante de los atributos para especificar el navegador.
3. Bordes redondeados
En CSS3 tenemos la propiedad border-radius, que nos permite definir bordes redondeados en las esquinas especificando las medidas del radio que se deben dar a la curva de las esquinas. Su uso ms bsico sera:
border-radius: 5px;
Con lo que le daramos 5 pxeles de radio a la curva de todas las esquinas del elemento en cuestin. Con este atributo nos ahorramos los enrevesados recursos que tenamos que usar en CSS2 para poner bordes redondeados a las cajas usando imgenes y que en la mayora de los casos no daba un resultado del todo elegante. El atributo border-radius tiene la posibilidad tambin de definir las cuatro esquinas de la caja con valores distintos para el radio. Los valores irn separados por un espacio y el primer valor ser el de la esquina superior izquierda de la caja, rotando en sentido horario.
Ejemplo
#caja1{ width: 300px; height: 200px; border-style: solid; border-width: 10px; border-radius: 5px 70px 20px 60px; background: #A775A3; }
Resultado
Ejemplo
#caja1{ width: 500px; height: 500px; border-style: solid; border-width: 10px; background: url(css3.png) center no-repeat, url(html5.png) bottom right no-repeat, url(jquery.png) top left no-repeat; }
Resultado
5. Colores RGBA
Como conocemos, tanto en HTML como en las versiones anteriores de CSS los colores se expresan en valores RGB. CSS3, adems de los tres colores primarios Rojo, Verde y Azul, ha aadido cuarto parmetro que es el Canal lfa para darle transparencia al elemento coloreado. El canal Alfa es un valor entre 0 y 1, siendo 0 totalmente transparente y 1 totalmente opaco. Los nmeros decimales se separarn con un punto. Con esto conseguimos lo que antes tenamos que hacer recurriendo a imgenes PNG con transparencia. Para definir RGBA debemos especificar cuatro valores de la siguiente manera:
Resultado
Se le puede aplicar color RGBA a todo lo que se pueda colorear con CSS3, as que puede ser un muy buen recurso para sombras, texto, etc.
word-wrap: normal;
El valor normal hace que las palabras no se corten siendo este el valor por defecto
word-wrap: break-word;
El valor break-word hace que la palabra se corte para que quepa en el ancho del contenedor que hayamos definido Ejemplo
#caja1{ width: 100px; height: 200px; border-style: solid; border-width: 1px; background: #CCC; word-wrap: break-word; }
Resultado
7. Texto multicolumna
En algunos medios encontramos el texto dividido en columnas para facilitar su lectura, muy especialmente en peridicos. La nueva versin de CSS tambin incorpora esta opcin. Para crear esta estructura multicolumna utilizaremos varios atributos. Column-width: Para definir el ancho de las distintas columnas. Column-gap: Nos permitir definir el espacio en blanco entre columnas. Column-rule: Servir para crear una lnea divisoria entre columnas. Column-count: Ser el nmero de columnas que queremos.
Estas etiquetas, a da de hoy (mayo de 2012), no la soporta tal cual ningn navegador, aunque aparecen en la especificacin de la W3C. Sin embargo Safari, Google Chrome y Firefox ya la implementa con la condicin de que usemos el prefijo webkit- para Chome y Safari o el prefijo moz- para Firefox. As que si queremos poner un texto en columnas, de momento lo tendremos que hacer como veremos en el ejemplo y teniendo en cuenta en los usuarios de Internet Explorer no podrn verlo igual. Ejemplo
#caja1 .texto{ -webkit-column-count: 4; -webkit-column-width: 10em; -webkit-column-gap: 20px; -webkit-column-rule: 1px solid #888; -moz-column-count: 4; -moz-column-width: 10em; -moz-column-gap: 20px; -moz-column-rule: 1px solid #888; text-align: justify; }
Resultado
8. Sombras (box-shadow)
Hasta ahora, para conseguir poner una sombra a un elemento web tenamos que recurrir a elementos externos tales como imgenes, javascript, etc. Con el atributo box-shadow, adems de facilitarnos la tara de poner sombra a los elementos, agiliza la carga de nuestras webs, ya que no tenemos que recurrir a imgenes que tardan ms en cargar. El atributo box-shadow necesita que le especifiquemos algunos valores separados por espacios tales como el difuminado, separacin de la sombra o color (pudiendo usar un color RGBA).
Una utilidad muy buena de las sombras es el crear el efecto de movilidad. Es decir, que las cosas salgan de la pantalla en determinados caso, por ejemplo, al pasar el ratn por encima. Este efecto lo podemos conseguir con el evento :hover. Para ello pondremos la sombra a ms distancia del elemento, tanto en horizontal como en vertical y le aadiremos el difuminado. A continuacin podemos ver un ejemplo prctico. Ejemplo
#caja1 { width: 200px; height: 200px; border: solid 3px #000; background-color: #DDD; box-shadow: 3px 3px 3px RGBA(85, 85, 85, 0.8); } #caja1:hover{ box-shadow: 10px 10px 10px RGBA(85, 85, 85, 0.8); }
Resultado
Normal
:Hover
9. Resplandor interior
Existe una propiedad de las sombras que no la he nombrado antes pero no porque se me haya escapado, sino porque a mi parecer no es una sombra sino algo as como un resplandor interior (o al menos as se llama el efecto en photoshop que hace esto mismo). Esto consiste en un difuminado en el interior de la caja pegado al borde, similar a la sombra, pero por dentro. El cdigo que utilizaremos es similar al de la sombra, con su posicin horizontal, su posicin vertical, su difuminado y su color, pero adems le aadiremos el valor inset justo antes de todos los valores especificados en la sombra. Para dar efecto de resplandor, le tendremos que dar colores claros y a ser posible un fondo oscuro. Veamos un ejemplo para que resulte ms claro. Ejemplo
#caja1 { width: 200px; height: 200px; border: solid 3px #000; background-color: #333; box-shadow: inset 10px 10px 15px RGBA(200, 200, 200, 0.8); }
Resultado
Overflow-x
Overflow-y
Resultado
En este ejemplo, a la letra le ponemos color blanco. Como primera sombra le damos desplazamiento horizontal 0px, vertical 1px, difuminado 0px y color #999. La segunda sombra tendr un desplazamiento horizontal de 0px, vertical de 2px, difuminado de 0px y color #777. As sucesivamente. Con esta sombra conseguiremos un efecto de texto en 3D. Resultado
Para conseguir ms efecto del mismo tipo tenemos una herramienta en internet muy fcil y que genera un cdigo que podremos usar en nuestra web. http://www.wordpressthemeshock.com/css-text-shadow/
14. Animaciones
14.1 Introduccin
Una de las caractersticas ms impresionantes de CSS3 es la posibilidad de crear animaciones de los elementos de pgina. Todo esto nos abre infinitas posibilidades que antes solo estaban disponibles para programadores javascript o diseadores con flash. Algunas de las opciones de las animaciones pueden ser las rotaciones de los elementos, ampliaciones y reducciones de tamao, desplazamiento, etc. Pero no esto no queda ah, tambin han implementado una serie de interacciones con el usuario que solo se pueden hacer con CSS3. Adems, todo ello sin tener que programar, lo que resulta mucho ms agradable y al alcance de desarrolladores menos tcnicos. Ojo!: A da de hoy (mayo de 2012), los navegadores no aceptan como deberan las animaciones as que a todos los atributos y claves hay que aadirles el prefijo para el navegador en concreto (-moz-, -webkit-, -o-). Para este manual los pondremos segn indica la especificacin, pero tendremos que tener eso en cuenta a la hora de usarlos.
@keyframes 'nombre_fotograma_clave' { 0% { left: 100px; } 40% { left: 150px; } 60% { left: 75px; } 100% { left: 100px; } }
Esta animacin estara compuesta de 4 fotogramas clave. El porcentaje es en el momento en el que va a producirse ese fotograma y los px son la longitud donde se colocara el fotograma dentro del DIV en el que se encaje. Tambin podemos definir un fotograma clave indicndole, en vez de los tantos por ciento, from para indicarle donde empieza la animacin y to para indicarle donde termina.
Adems de las propiedades que hemos usado, en el ejemplo anterior tenemos otra serie de atributos que se pueden aplicar a la animacin y que se colocan en el DIV. Estas propiedades seran las siguientes: animation-timing-function: se aplica entre los fotogramas clave, no sobre toda la animacin y describe como progresa la animacin a lo largo de un ciclo. animation-direction: esta propiedad define el sentido de la animacin. Si especificamos alternate y los ciclos de interaccin son impares, la animacin ir en la direccin normal, si no, se realizar en la direccin inversa animation-delay: propiedad que nos indica el momento en el que comenzar la animacin. Si el valor es 0 se ejecuta en cuanta se carga la pgina. animation: esta propiedad combina las anteriores de una forma resumida.
Las transiciones tambin se pueden resumir en una sola propiedad que tendra la siguiente sintaxis:
Ejemplo
#caja1 { transition:box-shadow, transform 2s; -webkit-transition:-webkit-box-shadow, -webkit-transform 2s, background 2s; -moz-transition:-moz-box-shadow, -moz-transform 2s, background 2s; transform: scale(1,1); -webkit-transform: scale(1,1); -moz-transform: scale(1,1); } #caja1:hover { transition:transform 3s, box-shadow 3s; -webkit-transition:-webkit-transform 3s, background 3s, -webkit-box-shadow 3s; -moz-transition:-moz-transform 3s, background 3s, -moz-box-shadow 3s; box-shadow: 10px 10px 10px #555; transform: scale(1.3,1.3); -webkit-transform: scale(1.3,1.3); -moz-transform: scale(1.3,1.3); z-index:9999; }
Este ejemplo nos mostrar la #caja1 a escala 1,1 (su tamao normal) y cuando pongamos el ratn encima aumentar su tamao un 30% y le aparecer una sombra que se desplazar 10px a la derecha y 10px hacia abajo. Esto nos dar el efecto de que la caja se aproxima a nosotros.
15. Selectores
La nueva versin de CSS3 incluye todos los selectores de CSS2 y aade otra decena de selectores, pseudo-clases y pseudo-elementos que podremos encontrar ampliadas en la recomendacin de la W3C http://www.w3.org/TR/2011/REC-css3-selectors20110929/ Selectores de atributos En primer lugar aade tres nuevos selectores de atributos: Elemento[atributo ^= valor] => selecciona todos los elementos que disponen de ese atributo y cuyo valor comienza exactamente por la cadena de texto indicada. Por ejemplo: a[href^=mailto] { } (todos los elementos que apuntan a una direccin de correo electrnico) Elemento[atributo $= valor] => Selecciona todos los elementos que disponen de este atributo y cuyo valor termina exactamente por la cadena indicada. Por ejemplo: a[href$=.html] { }(Todos los elementos que apuntan a una pgina HTML) Elemento[atributo *= valor] => Selecciona todos los elementos que disponen de este atributo y cuyo valor contiene la cadena de texto indicada. Por ejemplo: h1[title*=captulo] { }(todos los h1 cuyo atributo title contenga la palabra captulo) Selector de hermanos Otro elemento nuevo de CSS3 es el selector general de hermanos que generaliza el selector adyacente de CSS2.1. Su sintaxis es elemento1 ~ elemento2 que seleccionara el elemento2 que es hermano de elemento1 independientemente de si se encuentra inmediatamente despus en el cdigo o no. Veamos un ejemplo ms claro. Ejemplo
h1 + h2 { ... } /* selector adyacente */ h1 ~ h2 { ... } /* selector general de hermanos */ <h1>...</h1> <h2>...</h2> <p>...</p> <div> <h2>...</h2> </div> <h2>...</h2>
El primer selector (h1 + h2) slo selecciona el primer elemento h2, mientras que el segundo selector (h1 ~ h2) seleccionar todos los h2 menos el segundo, ya que no es hermano.
1 DAW - IES Julio Verne Pseudo-elementos Los pseudo-elemento de CSS2.1 se mantienen en CSS3 pero cambia su sintaxis y ahora se utiliza :: delante del nombre en vez de : como se haca antes. Es decir, el uso de los pseudo-elementos ahora sera (::first-line, ::first-letter, ::before, ::after,). Nuevo pseudo-elemento CSS3 aade un nuevo pseudo-elemento que selecciona el texto seleccionado por el usuario con un ratn. Este pseudo-elemento sera ::selecction Pseudo-clases Una de las mayores modificaciones de CSS3 se produce en las pseudo-clases, ya que aaden 12 nuevas. Entre las que se encuentran: Elemento:nth-child(numero) => Selecciona el hijo del elemento siempre y cuando est en la posicin ensima. Muy til por ejemplo para seleccionar el quinto prrafo, el sptimo ttulo, etc. Elemento:nth-last-child(numero) => Idntico al anterior, pero empieza a contar desde atrs. Por si queremos seleccionar el penltimo o el antepenltimo hijo de un elemento. Elemento:empty => Selecciona el elemento indicado con la condicin de que no tenga ningn hijo ni contenido de texto. til para imgenes, etc. Elemento:first-child y elemento:last-child => Selecciona los hijos indicados con la condicin de que sean el primero o el ltimo hijo de su padre respectivamente. Elemento:nth-of-type(numero) => Selecciona el elemento que sea el ensimo hermano de este tipo. Elemento:nth-last-of-type(numero) => Selecciona lo mismo que el anterior, pero este empieza a contar desde el ltimo hermano.
Algunas pseudo-clases como :nth-child(numero) permiten el uso de pseudo-clases complejas para realizar selecciones avanzadas. Por ejemplo:
Li:nth-child(2n+1) { } (Selecciona todos los elementos impares de la lista) Li:nth-child(2n) { } (Selecciona todos los elementos pares de la lista)
Veamos ahora un ejemplo ms completo y que nos puede resultar muy til. Ejemplo
/* Las siguientes reglas alternan cuatro estilos diferentes para los prrafos */ p:nth-child(4n+1) { ... } p:nth-child(4n+2) { ... } p:nth-child(4n+3) { ... } p:nth-child(4n+4) { ... }
1 DAW - IES Julio Verne Pseudo-elemento :not Otro pseudo-elemento nuevo en CSS3 es el pseudo-elemento :not. Lo pongo a parte porque me resulta el ms interesante de los nuevos pseudo-elementos. Este pseudo-elemento nos permitir seleccionar todos los elementos que NO cumplen con la condicin del selector. Por ejemplo
:not(#especial) { }
"especial")
Mas pseudo-elementos y test del navegador Si queremos conocer todos los pseudo-elementos nuevos y adems de ello saber si nuestro navegador es compatible con ellos tendremos que entrar en la direccin http://www.css3.info/selectors-test/
16. Documentacin
Este manual se ha basado principalmente en la informacin recogida en: Manual de CSS3 de DesarrolloWeb.com http://www.desarrolloweb.com/manuales/css3.html Selectores CSS3 de LibrosWeb.es http://www.librosweb.es/css_avanzado/capitulo3/selectores_de_css_3.html Especificacin oficial de la W3C (aun en construccin)
Podemos ver el estado actual de la especificacin en http://www.w3.org/Style/CSS/current-work adems de pinchar sobre los enlaces de las especificaciones que ya estn terminadas y conocerlas al completo.