Curso de Verano 2010 Estilos CSS para el Diseño Web 8. Otros usos comunes 8.1 Clases múltiples En este tema veremos algunos temas generales relacionados con CSS, que se usan comúnmente en los sitios webs actuales. Múltiples clases en un solo elemento Se trata de uno de los “trucos” CSS que sólo se soporta en los navegadores más nuevos, pero que es muy utilizado debido a las ventajas que ofrece: los elementos HTML no tienen por qué limitarse a aplicar una sola clase. Así, es posible, por ejemplo, tener algo como esto 1: <p><img src="img/loremipsum.gif" class="featureimg right" /></p> Donde podemos ver que se están aplicando dos clases 2 a la imagen: featureimg y right. Es decir, se están asignando dos clases, cada una con sus estilos definidos: .right{ float: right; } .featureimg { border: 2px solid #000000; padding: 5px; margin: 5px; } De modo que mientras right se encarga de flotar, featureimg se encarga de definir la imagen destacada. Esto nos permite añadir de una forma sencilla algunos efectos reutilizables. En este ejemplo, podríamos reusar la flotación a la derecha en otros elementos, con right sin tener que repetir el código float:right; en cada uno de los estilos CSS donde deseamos aplicar la flotación. Esto nos permite asignar estilos sin tener que definir una nueva clase específica para cada caso. El código de ejemplo, incluye esta otra imagen: <p><img src="img/loremipsum.gif" class="featureimg left" /></p> Que reusa el estilo featureimg pero flota hacia el otro lado. Podemos ver que el estilo de la imagen se reutiliza, evitando duplicar el código cada vez que deseemos aplicar un estilo común. En el navegador se muestra como sigue: 1 2 Ver 101.html y sus CSS en este tema. Y, de hecho, podríamos aplicar más de dos clases. Universitat Pompeu Fabra Prof. Alejandro Ramírez 1 Curso de Verano 2010 Estilos CSS para el Diseño Web Uso adecuado Es evidente que el reusar estilos nos facilita el código, y nos permite aplicar efectos concretos fácilmente, como son el flotar a un lado u otro, el aplicar un borde concreto, asignar un margen que se repetirá en múltiples elementos, un color de fondo que apareceré mucha veces, etc. El uso adecuado implica que estas clases son para definir sólo lo reusable, de modo que se cuente con clases estándar a lo largo del sitio. Por ejemplo, si muchos bloques tendrán un margen inferior de 10px, podríamos crear una clase con ese margen, para poder aplicarlo rápidamente. Desventajas No lo son tanto en la práctica, pero los navegadores viejos no soportan dos clases (o más) en un mismo elemento, lo que rompe todo el juego. Cada vez son menos usuarios los que tienen navegadores antiguos, de modo que en ocasiones se ignoran estos casos y se aplican dos clases o más directamente. Finalmente, es importante mantener límites, pues al tener múltiples clases “estándar”, la lista de estilos puede crecer y llegar a ser inmanejable. De igual modo, un código como: <p class=”textonegro fondozul margen10pxderecho flotaderecha”> Quizá podría definirse como estilo único para no complicar tanto el marcado HTML. Universitat Pompeu Fabra Prof. Alejandro Ramírez 2 Curso de Verano 2010 Estilos CSS para el Diseño Web 8.2 Sombras Las sombras son uno de los efectos que podemos aplicar con imágenes y CSS. Veamos algunas muestras. Sombras con imágenes y CSS La técnica de este ejemplo nos permite añadir sombras a las imágenes, partiendo de una imagen única que, con CSS, ajustamos para el efecto deseado. Se trata de una técnica que sólo funciona en los browsers modernos 3. En el ejemplo, aplicaremos una sombra a una imagen, y usaremos además una imagen previamente diseñada que contiene sólo una sombra en su extremo inferior/derecho. Las imágenes en cuestión son las siguientes4: La sombra es mayor en dimensiones que la imagen a la que queremos aplicar el efecto. Es grande para poder usarse como sombra con casi cualquier imagen que deseemos. El funcionamiento La técnica se realiza con los siguientes principios: • • La sombra se aplica como imagen de fondo de un contenedor de la imagen La imagen se posiciona con ajustes de márgenes negativos, con el fin de desplazarla de su posición original Se trata de un uso específico de opciones que ya hemos usado, de modo que el código CSS es directo de entender. El HTML es simple: un contenedor (con la clase CSS deseada) y la imagen. <div class="sombra"> <img src="img/elsa.jpg" width="250" height="354" /> </div> 3 Como casi siempre, las versiones antiguas del MSIE no la pueden ejecutar, ya que no soportan imágenes png (requieren hacks CSS para ello, pero este es un curso introductorio y entrar a hacks es un tema más avanzado). 4 La sombra se muestra muy reducida, sólo para que vean de qué se trata. Pueden abrir la imagen y ver las dimensiones reales (828x837 px). Universitat Pompeu Fabra Prof. Alejandro Ramírez 3 Curso de Verano 2010 Estilos CSS para el Diseño Web El primer bloque de interés, en el CSS, es el siguiente: .sombra{ background: url(../img/shadow.png) no-repeat right bottom; float: left; } Donde podemos ver que el contenedor tiene como imagen de fondo a la sombra, posicionando el fondo en el extremo inferior derecho. El float hace que el contenedor flote y no se requiera definir dimensiones fijas5. Gráficamente, buscamos este efecto al posicionar la imagen (la caja contiene la imagen en su extremo inferior derecho): El otro bloque de CSS es este: .sombra img { display: block; background-color: #ffffff; margin: -6px 6px 6px -6px; } La imagen dentro del contenedor tiene un desplazamiento en los márgenes superior y derecho, con el fin de desplazar y lograr que quede un espacio (donde quedará visible la sombra). El principio, gráficamente, es el siguiente (con la imagen desplazada del contenedor, marcado en rojo): Sumando los dos, el resultado en el navegador será el que se muestra en la siguiente imagen: 5 Pues sabemos que, sin definir dimensiones, el contenedor ocuparía el 100% del ancho disponible. Es un truco que no molesta (la imagen puede flotar, es usual). De otro modo, el CSS se complica, ya que hay que contar píxeles, ajustar el ancho al de la imagen más ciertos valores del desplazamiento de los márgenes, sumar aún más si hay padding, etc. Universitat Pompeu Fabra Prof. Alejandro Ramírez 4 Curso de Verano 2010 Estilos CSS para el Diseño Web Donde podemos ver que hemos aplicado una sombra a la imagen, tal como queríamos. En otra variante 6, podemos ver el efecto estético que aporta cierto padding y un borde visible: .sombra img { display: block; background-color: #ffffff; margin: -6px 6px 6px -6px; padding: 4px; border: 1px solid #666666;} En el navegador aparecerá así: 6 Ver 202.html. Universitat Pompeu Fabra Prof. Alejandro Ramírez 5 Curso de Verano 2010 Estilos CSS para el Diseño Web Sombras con CSS3 Los estilos CSS3 no se soportan aún en todos los navegadores, pero no está de más conocer un poco de ellos para aprender lo que vendrá en un futuro 7. Veamos cómo podríamos usar CSS3 para el efecto de sombras. CSS3 incluirá una propiedad para la sombra del modelo de caja 8, llamada box-shadow. La propiedad tomará tres parámetros de dimensiones y un color: • • • • Un offset horizontal, indicando el desplazamiento de la sombra. Positivo indica que la sombra se sitúa a la derecha de la caja, negativo que se coloca a la izquierda. Un offset vertical, con positivo indicando arriba de la caja, y negativo indicando abajo. Un radio de desenfoque o blur. Un valor de 0 indica enfoque, y un valor positivo indica más blur. Un color de sombra 9. En el código de muestra 10 se incluye este CSS para el primer elemento del HTML: #sombra{ box-shadow: 10px 10px 5px #888; -moz-box-shadow: 10px 10px 5px #888; -webkit-box-shadow: 10px 10px 5px #888; } No entraré en detalles técnicos, pero como CSS3 aún no es un estándar cerrado, los navegadores lo implementan a su modo. Las propiedades que comienzan por –moz son para que las reconozca Firefoz/Mozilla, mientras que las que comienzan con –webkit son para los que usan un motor de visualización específico (llamado wekbkit), como Chrome o Safari. Mientras CSS3 no sea oficial, se tendrá que lidiar con este tipo de cosas 11. De igual modo, y como variante de las propiedades, el otro bloque CSS tiene estos valores entre sus definiciones, como un cambio de lado de la sombra y ajustes de blur: #cajita{ ... box-shadow: -10px 10px 20px #888; -moz-box-shadow: -10px 10px 20px #888; -webkit-box-shadow: -10px 10px 20px #888; ... } 7 Y, al mismo tiempo, para sembrar una semilla de curiosidad. Después de este curso, mi deseo es que sigan aprendiendo CSS por su cuenta, y CSS3 es un buen banco de cosas a aprender. 8 Ver la referencia del documento de trabajo de CSS3: http://www.w3.org/TR/css3-background/#the-box-shadow 9 De hecho, pueden después buscar más información sobre esta propiedad y este valor. El parámetro permitirá una serie de valores (para cada lado), lo que se traduce en la opción de sombras de distinto color para cada lado. 10 Ver 203.html. 11 Y código duplicado, como pueden ver en ese CSS. De hecho, no son los únicos. Hay más variantes para otros browsers: -o,-icab, -khtml, que de momento no tendremos en cuenta. Universitat Pompeu Fabra Prof. Alejandro Ramírez 6 Curso de Verano 2010 Estilos CSS para el Diseño Web Les toca experimentar con las opciones y colores, y ver los efectos de los ajustes posibles. El HTML y CSS del ejemplo, en un navegador capaz de ejecutar los estilos CSS3, se mostrará como sigue: ¡Con sombras hechas por el navegador, gracias a los estilos CSS3! Impresionante 12, ¿no? ;-) 8.3 Cajas con bordes redondeados Al igual que en el caso de las sombras, el uso de CSS e imágenes nos permite aplicar bordes redondeados a nuestras cajas, con el fin de romper la rigidez del rectángulo 13. Veamos cómo es posible aplicar este tipo de bordes. Bordes Redondeados Para aplicar bordes redondeados hay muchas variantes posibles. Algunas son para cajas horizontales, otras para verticales, y otras nos permiten aplicar los bordes redondeados a cualquier caja. 12 Lo sé, lo sé, aquí es cuando algunos dirán "¿y para qué vimos las otras opciones?” pero recuerden que CSS3 aún no se soporta por todos los navegadores, y hay que usar código especial, como han visto. Espero que el ejemplo motive a seguir aprendiendo CSS y entrar luego a todo lo que ofrece CSS3. 13 En especial antes, ya que los rectángulos se consideraban más el típico diseño “de ingeniero”. Ahora mismo, las webs tienden a ser más simples, y con ello quizá los rectángulos no molestan tanto como antes. Universitat Pompeu Fabra Prof. Alejandro Ramírez 7 Curso de Verano 2010 Estilos CSS para el Diseño Web Cajas horizontales Comencemos con las cajas horizontales, aplicando una técnica que ya conocemos, las sliding doors, para aplicar una imagen a la caja y obtener los bordes que deseamos. La imagen que usaremos para la puerta corrediza tiene la forma siguiente: Con un ancho suficiente 14 para poder usarla en cajas horizontales que no excedan el tamaño horizontal de la imagen. El código de muestra 15 incluye este marcado HTML: <div class="bordes"><span>Lorem ipum</span></div> Donde podemos ver que solo son dos elementos, uno contenido dentro de otro, lo que permite aplicar el sliding door 16: un elemento tendrá un lado de la puerta, y el otro elemento tendrá el resto. El CSS es el siguiente: .bordes{ background: url('../img/rounded-horizontal.gif') no-repeat top left; height:150px; width: 200px; padding: 0px 0px 0px 10px; margin: 0 0 10px 0; } .bordes span{ background: url('../img/rounded-horizontal.gif') no-repeat top right; color: #FFFFFF; display:block; padding: 13px 10px 13px 10px; height:124px; } Donde podemos ver ambos lados de la puerta, uno cargado a la izquierda y otro a la derecha. Relevante en el ejemplo: • • • • La altura de la clase .bordes (la que usa el div) es la de la imagen de muestra: 150px. .bordes tiene un padding pequeño (izquierdo) para poder aplicar esa orilla de la puerta El span queda con una altura menor, ya que se suma el padding (124+13+13 = 150) El ancho de la caja se indica en .bordes (es decir, en el div) 14 Se muestra como referencia. La imagen de muestra mide 800px horizontales. Ver 301.html. 16 En los ejemplos de menú, el enlace estaba contenido dentro del elemento de la lista. 15 Universitat Pompeu Fabra Prof. Alejandro Ramírez 8 Curso de Verano 2010 Estilos CSS para el Diseño Web En el navegador, el ejemplo se verá como muestra la siguiente imagen: Un segundo ejemplo 17 incluye una segunda caja: <div class="bordes"><span>Lorem ipum</span></div> <div class="bordes2"><span>Lorem ipum</span></div> Y el CSS de esta segunda caja ajusta el ancho del contenedor, para demostrar que puede usarse con otro valor de ancho. En el navegador aparece así: Donde podemos ver que, con la puerta corrediza, tenemos la opción de asignar fácilmente los bordes a cualquier dimensión de la caja 18. Restricción La restricción de estas cajas horizontales es evidente: estamos usando una puerta corrediza con una altura fija, de modo que sólo podemos usar el código para una caja de ese alto. En caso de necesitar alturas distintas, tendríamos que tener imágenes para cada caso, si usamos las puertas corredizas para lograr los bordes redondeados. Cajas verticales El mismo principio que hemos visto para las horizontales puede aplicarse a las verticales. Basta pensar en este caso en una puerta corrediza de arriba abajo, y no de izquierda a derecha 19. 17 Ver 302.html. Siempre que, obviamente, no supere el ancho de la imagen. Siempre se puede crear y usar una imagen aún más ancha para cubrir más anchura. 19 Otra forma de verlo es muy simple: es como rotar la caja horizontal 18 Universitat Pompeu Fabra Prof. Alejandro Ramírez 9 Curso de Verano 2010 Estilos CSS para el Diseño Web Así, en vez de fijar el fondo hacia los lados, basta fijarlo hacia los extremos superior e inferior. La imagen que usaremos para estos ejemplos tiene la forma siguiente 20: Y, como en el caso horizontal (pero esta vez otro eje) podemos usarla para alturas variables, esta vez como puerta corrediza vertical. El código de ejemplo 21 tiene el marcado idéntico al del caso anterior, para aplicar las puertas: <div class="bordes"><span>Lorem ipum</span></div> Y es en el CSS donde variamos la posición de la imagen del fondo y los ajustes necesarios de los márgenes para el caso vertical: .bordes{ background: url('../img/rounded-vertical.gif') no-repeat top left; width: 250px; padding: 10px 0px 0px 0px; margin: 0 0 5px 0; } .bordes span{ background: url('../img/rounded-vertical.gif') no-repeat bottom right; color: #FFFFFF; display:block; padding: 10px 13px 20px 13px; width:224px; } Como podemos ver, se aplica el mismo principio que en el caso horizontal, sólo que ahora: • • • • Es la anchura la que se define en .bordes, con el ancho de la imagen de muestra: 250px El padding de .bordes es ahora en el lado superior El ajuste de span esta vez es en el ancho: 224+13+13 = 250 Ahora es el alto el que se indica en .bordes (es decir, en el div), si se requiere. En el navegador, se mostrará como en la siguiente imagen: 20 Ver la carpeta de imágenes del tema, y el CSS que se utiliza. De nuevo, se muestra sólo como referencia. La imagen real mide 250x600. 21 Ver 303.html. Universitat Pompeu Fabra Prof. Alejandro Ramírez 10 Curso de Verano 2010 Estilos CSS para el Diseño Web De nuevo, un segundo ejemplo 22 muestra dos cajas, con el mismo código de antes: <div class="bordes"><span>Lorem ipum</span></div> <div class="bordes2"><span>Lorem ipum</span></div> Y el CSS de la segunda caja ajusta el alto del contenedor, para demostrar que puede usarse con otro valor de, esta vez, altura. En el navegador aparece así: Donde podemos ver que, con la puerta corrediza en el otro eje, tenemos nuevamente la opción de asignar fácilmente los bordes a cualquier dimensión de la caja 23. Restricción La restricción de las cajas verticales es ahora que estamos usando una puerta corrediza con una anchura fija, de modo que sólo podemos usar el código para una caja de ese ancho. De nuevo, en caso de necesitar anchos distintos tendríamos que tener imágenes para cada caso. Una variante líquida Ante las restricciones de los dos casos anteriores es lógico desear el contar con una variante o técnica que nos permita definir bordes redondeados para cualquier caja. Es más, idealmente 24 podríamos pedir que los bordes redondeados no dependieran de la imagen usada, de modo que pudiéramos aplicar cualquier color a la caja sin necesidad de crear la imagen de cada color 25. Veamos cómo podemos lograr algo así 26. 22 Ver 304.html. Esta vez, siempre que no supere el alto de la imagen. Igual que antes, siempre se puede crear y usar una imagen aún más alta para cubrir otros casos. 24 Modo carta a los Reyes Magos ;-) 25 En los ejemplos anteriores la imagen es la que tiene el color de fondo, de modo que es evidente que si he de cambiar los colores del sitio, tendría que rehacer muchas de las imágenes, algo que desearíamos evitar (¿no?). 26 De nuevo, hay muchas variantes. Esta es sólo una opción. No muy “semántica”, como verán, pero correcta y válida. 23 Universitat Pompeu Fabra Prof. Alejandro Ramírez 11 Curso de Verano 2010 Estilos CSS para el Diseño Web Imágenes Comencemos por las imágenes: Necesitamos cubrir cualquier caja, de modo que la idea de puertas deslizantes no es directa, además de que queremos aplicarlo a cualquier caja, sin límite de dimensiones. Con esto, es natural concluir que necesitaremos cuatro imágenes, una para cada esquina. Cada imagen (para cada esquina) tendrá el borde redondeado, pues es justo lo que buscamos. Además, si queremos usar la técnica para cualquier imagen, necesitamos que la imagen tenga una transparencia 27, para poder aplicarla a la caja, que la parte transparente nos deje ver el color de fondo, y que –al mismo tiempo- aporte el borde redondeado. Las imágenes que usaremos están el código de muestra 28. Cada una es para una esquina, con la forma redondeada y el “interior” transparente, sobre fondo blanco. La imagen que sigue muestra las cuatro imágenes (con un fondo negro 29). Como puede verse, tenemos los cuatro bordes redondeados. El fondo blanco nos permitirá aplicarla a cualquier caja sobre este color de fondo 30. Si quisiéramos usar esta técnica con otro color de fondo necesitaríamos otras imágenes. Serían imágenes iguales que estas pero con el fondo de otro color. Código El código de muestra 31 incluye el siguiente marcado en el HTML: <div class="roundedbox caja1"> <div class="rbtop"> <div></div> </div> <div class="rbcontent"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vitae sem sed velit lobortis malesuada. Morbi erat enim, elementum a ullamcorper id, suscipit id massa. </div> <div class="rbbot"> <div></div> </div> </div> Donde podemos ver que el marcado es un poco más complejo 32 que en otros casos. Los distintos bloques usados son los siguientes: 27 Sólo las imágenes GIF y PNG admiten transparencia, las JPEG no. Se trata de imágenes PNG, con la esquina redondeada sobre fondo blanco. Están en la carpeta de materiales, y en el CSS veremos cómo se usan. 29 Al ser transparente la esquina redondeada, y estar diseñada para diseños sobre fondo blanco, es la única forma de verlas en este documento, pues de otro modo no se verían en el fondo blanco ;-) 30 Evidentemente, no podemos tener todo en la misma imagen: o ponemos transparencia en le esquina que da hacia la caja, o en la que da hacia el fondo. No podemos tener ambas porque toda la imagen sería 100% transparente ;-) 31 Ver 305.html. 28 Universitat Pompeu Fabra Prof. Alejandro Ramírez 12 Curso de Verano 2010 Estilos CSS para el Diseño Web <div class="roundedbox caja1"> Tenemos un div contenedor principal al que se aplican dos clases. Este contenedor es el que define la caja como tal, a la que queremos aplicar los bordes deseados. <div class="rbtop"> <div></div> </div> Dentro de la caja, hay un primer div contenido (con clase .rbtop). Este contenedor es el responsable de contener las esquinas superiores. Al tratarse de dos esquinas superiores (izquierda y derecha) necesitamos otro elemento, y por ello hay un div vacío en el interior. Des estos dos div, cada uno se encargará de una de las esquinas. <div class="rbcontent"> Lorem ipsum ... </div> El contenedor con clase .rbcontent sirve para el contenido de la caja propiamente dicho. Al ser un contenedor real, div, podemos poner en su interior todo lo que deseemos: texto, cabeceras, imágenes, etc. El div nos mucho potencial al ser realmente una cajón de sastre para nuestros contenidos. <div class="rbbot"> <div></div> </div> Finalmente, y al igual que en las esquinas superiores, tenemos otro bloque 33 que se encarga d esquinas, esta vez de las inferiores. Dos, uno vacío, pues cada uno lidiará con una esquina inferior a izquierda y derecha. El CSS que se encarga de usar las imágenes es el siguiente: .roundedbox .rbtop{ background: url('../img/TL.png') } .roundedbox .rbtop div{ background: url('../img/TR.png') } .roundedbox .rbbot{ background: url('../img/BL.png') } .roundedbox .rbbot div{ background: url('../img/BR.png') } .roundedbox .rbcontent{ color:#FFFFFF; padding:0px 10px; } no-repeat top left; height:10px; no-repeat top right; height:10px; no-repeat bottom left; height:10px; no-repeat bottom right; height:10px; margin:0px; Como puede verse, cada esquina se maneja con una caja con la altura de la imagen usada, y una imagen de fondo fija, colocada como se necesita. La clase de contenido nos permite aplicar un padding y un color de texto cualquiera 34. 32 Pero no por ello difícil ;-) La nomenclatura del ejemplo es simple: rb es de borde redondeado, rounded border; bot es de bottom, inferior; top de superior, etc. 34 Nótese cómo el padding sólo es en los lados. El superior ya ‘existe’ con los contenedores de las esquinas. 33 Universitat Pompeu Fabra Prof. Alejandro Ramírez 13 Curso de Verano 2010 Estilos CSS para el Diseño Web Por otro lado, la clase .caja aplicada a la caja nos permite asignar cualquier ancho que deseemos35, y un color de fondo cualquiera. .caja { background: #006699; width:200px; margin: 0 0 10px 0; } En el navegador, el ejemplo se ve así: Donde podemos ver que el color de fondo de la caja no depende de la imagen 36. Una buena forma de experimentar y entender mejor qué hace cada esquina es aplicar bordes a las clases de los bordes/esquinas, con el fin de ver dónde están 37. Un último ejemplo 38 muestra todo el potencial. En él, podemos ver que tenemos cuatro cajas, cada una con una clase específica de caja, pero todas ellas usando la clase común de bordes redondeados: <div class="roundedbox caja1">… <div class="roundedbox caja2">… <div class="roundedbox caja3">… <div class="roundedbox caja4">… Lo que permite que el CSS sea casi el mismo del ejemplo anterior, pero añadiendo las propiedades deseadas de cada caja: un color de fondo y una anchura cualquiera. .caja1{ background: #006699; width:200px; margin: 0 0 10px 0; } 35 El alto lo tomará a partir del contenido, o podríamos definir uno fijo si interesara. Y ahora es más evidente que sólo son, las imágenes, para fondo blanco. 37 Para las fases iniciales de trabajo, poner el borde al contenedor o al elemento es siempre una buena forma de entender dónde está y por qué se comporta como se comporta. 38 Ver 306.html. 36 Universitat Pompeu Fabra Prof. Alejandro Ramírez 14 Curso de Verano 2010 Estilos CSS para el Diseño Web .caja2{ background: #99CC00; width:300px; margin: 0 0 10px 0; } ... En el navegador, esto se mostrará así: Donde tenemos anchos variables y control total, con las 4 esquinas con bordes redondeados 39. Como siempre, les toca experimentar. Los foros están siempre abiertos. Bordes redondeados con CSS3 Como hicimos antes, veamos cómo podremos asignar bordes redondeados con CSS3 40. La propiedad en CSS3 para definir el borde redondeado 41 es: border-radius. La propiedad tomará un parámetro 42 para definir el radio de la curvatura (en alguna unidad de dimensiones). 39 ¡Aplausos! ;-) Lo sé, aquí me avientan tomates y tartas, gritando cosas como “¡Pero si acabo de entender cómo se hace con CSS2, y ahora me dices que hay otra forma más fácil, argh!”, pero recuerden que CSS3 aún no es estándar oficial. 41 Ver la referencia del documento de trabajo CSS3: http://www.w3.org/TR/css3-background/#border-radius 42 Estrictamente, puede tomar dos, para dar curvatura de elipse y no de círculo, pero para nuestros fines actuales, un parámetro basta. 40 Universitat Pompeu Fabra Prof. Alejandro Ramírez 15 Curso de Verano 2010 Estilos CSS para el Diseño Web En el código de muestra 43 se incluye este CSS, como ejemplo, para el primer elemento del HTML que tenemos: .caja1 { background: #006699; width:200px; margin: 0 0 10px 0; -moz-border-radius: 7px; -webkit-border-radius: 7px; padding: 10px; color: #FFFFFF; } Donde podemos ver las propiedades CSS3 añadidas 44. El segundo bloque incluye un borde para que comprueben el efecto de añadir un borde al tener esquinas redondeadas. .caja2 { background: #CCCCCC; width:200px; margin: 0 0 10px 0; border-radius: 7px; -moz-border-radius: 7px; -webkit-border-radius: 7px; padding: 10px; color: #333333; border: 1px solid #000000; } En el navegador, el ejemplo se verá así: Y podemos ver que el añadir un borde no afecta la parte redondeada que conseguimos. 43 44 Ver 307.html. Recuerden que tenemos que lidiar con mozilla y webkit mientras no sea estándar. Universitat Pompeu Fabra Prof. Alejandro Ramírez 16 Curso de Verano 2010 Estilos CSS para el Diseño Web Relacionado con la notación La notación usada para la propiedad es realmente una notación compacta. Como en otros casos, hay equivalencias, de modo que: border-radius: 4em; Es equivalente 45 a: border-top-left-radius: border-top-right-radius: border-bottom-right-radius: border-bottom-left-radius: 4em; 4em; 4em; 4em; Esto quiere decir que tenemos la capacidad de ajustar totalmente las cuatro esquinas, no sólo aplicarlo a la caja completa. Relacionado con esto, la propiedad de cada esquina varía dependiendo del navegador, de modo que en el CSS tendremos cosas como esta: border-top-left-radius: 10px; -moz-border-radius-topleft: 10px; -webkit-border-top-left-radius: 10px; Donde podemos ver que los nombres, guiones y el orden de los elementos presentes en el nombre de la propiedad, pueden variar: border top left radius vs border radius topleft. Un ejemplo 46 con este CSS nos muestra el potencial de definir sólo una esquina: .caja1{ border-top-left-radius: 10px; -moz-border-radius-topleft: 10px; -webkit-border-top-left-radius: 10px; border: 1px solid #000; padding: 5px 5px 5px 15px; margin:50px; width:200px; background: #CCCCCC; } En el navegador, tendremos esto 47: 45 Estas propiedades aún no tienen estándar. La nomenclatura exacta para cada lado depende del navegador. Lo relevante es la idea de la equivalencia. 46 Ver 308.html. 47 ¡Más aplausos! ;-) Universitat Pompeu Fabra Prof. Alejandro Ramírez 17 Curso de Verano 2010 Estilos CSS para el Diseño Web Donde podemos ver que sólo se asigna una esquina con el borde redondeado, y las otras cuatro, al no tener propiedades definidas, se comportan normalmente. Les toca experimentar con las cuatro esquinas y ver su efecto: • • • • -moz-border-radius-topleft / -webkit-border-top-left-radius -moz-border-radius-topright / -webkit-border-top-right-radius -moz-border-radius-bottomleft / -webkit-border-bottom-left-radius -moz-border-radius-bottomright / -webkit-border-bottom-right-radius Jugando con ello, otro ejemplo 48 con este CSS: .caja1{ border-top-left-radius: 10px; -moz-border-radius-topleft: 10px; -webkit-border-top-left-radius: 10px; border: 1px solid #000; padding: 5px 5px 5px 15px; margin:50px; width:200px; background: #CCCCCC; -moz-border-radius-bottomright: 10px; -webkit-border-bottom-right-radius: 10px; } Se verá así en el navegador: Integrando bordes redondeados y sombras Para cerrar el tema, una cosa más que permite CSS3: hacer uso de las dos cosas: bordes y sombra. Este ejemplo final 49 incluye ambos efectos en el mismo CSS: .caja1{ box-shadow: 10px 10px 5px #888; -moz-box-shadow: 10px 10px 5px #888; -webkit-box-shadow: 10px 10px 5px #888; padding: 15px; border-radius: 7px; -moz-border-radius: 7px; -webkit-border-radius: 7px; margin: 100px; width: 200px; background: #006699; color: #FFFFFF; } 48 49 Ver 309.html. Ver 310.html. Universitat Pompeu Fabra Prof. Alejandro Ramírez 18 Curso de Verano 2010 Estilos CSS para el Diseño Web Que en el navegador, se mostrará así 50: Como pueden ver, CSS3 implicará una pequeña revolución en la forma en que trabajamos con muchas cosas actualmente. Les queda experimentar; los foros están listos para cualquier pregunta. 50 Ovación de pie ;-) Universitat Pompeu Fabra Prof. Alejandro Ramírez 19