Traducido del inglés al español - www.onlinedoctranslator.com www.it-ebooks.info www.it-ebooks.info CSS3 Tercera edicion El libro que debería haber estado en la caja® David Sawyer McFarland Pekín | Cambridge | Farnham | Colonia | Sebastopol | tokio www.it-ebooks.info CSS3: El manual perdido, tercera edición por David Sawyer McFarland Copyright © 2013 Sawyer McFarland Media, Inc. Todos los derechos reservados. Impreso en los Estados Unidos de América. Publicado por O'Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. Los libros de O'Reilly se pueden comprar con fines educativos, comerciales o de promoción de ventas. Las ediciones en línea también están disponibles para la mayoría de los títulos (http://my.safaribooksonline.com). Para obtener más información, comuníquese con nuestro departamento de ventas corporativo/institucional: (800) 998-9938 o corporativo@oreilly.com. agosto de 2006: Primera edición. agosto de 2009: Segunda edicion. Diciembre 2012: Tercera edicion. Historial de revisiones de la tercera edición: 2012-12-07 Primera versión Verhttp://oreilly.com/catalog/errata.csp?isbn=0636920024996para detalles de lanzamiento. The Missing Manual es una marca comercial registrada de O'Reilly Media, Inc. El logotipo de Missing Manual y "El libro que debería haber estado en la caja" son marcas comerciales de O'Reilly Media, Inc. Muchas de las designaciones utilizadas por los fabricantes y los vendedores para distinguir sus productos se reclaman como marcas registradas. Cuando esas designaciones aparecen en este libro, y O'Reilly Media tiene conocimiento de un reclamo de marca registrada, las designaciones se escriben en mayúscula. Si bien se han tomado todas las precauciones en la preparación de este libro, el editor no asume ninguna responsabilidad por errores u omisiones, o por daños que resulten del uso de la información contenida en él. ISBN-13: 978-1-449-32594-7 [V] www.it-ebooks.info Contenido Los créditos que faltan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .viii Introducción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 Parte uno: CAPÍTULO 1: Conceptos básicos de CSS HTML para CSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 HTML: pasado y presente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Escribir HTML para CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 La Importancia del Doctype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 Asegurarse de que Internet Explorer esté actualizado . . . . . . . . . . . . . . . . . . . . . . . . . . 32 CAPITULO 2: Creación de estilos y hojas de estilo. . . . . . . . . . . . . . . . . . . . . . . . . .35 Anatomía de un estilo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Descripción de las hojas de estilo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Hojas de estilo internas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 hojas de estilo externas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Tutorial: creación de sus primeros estilos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43 CAPÍTULO 3: Selectores: identificar qué estilo. . . . . . . . . . . . . . . . . . . . . .55 Selectores de etiquetas: estilo en toda la página . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56 Selectores de clase: Control preciso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Selectores de ID: Elementos de página específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60 Estilo de grupos de etiquetas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Estilo de etiquetas dentro de etiquetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63 Pseudoclases y pseudo-elementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68 Selectores de atributos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Selectores secundarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 hermanos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 El :no( ) seleccionador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80 Tutorial: Selector Sampler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 CAPÍTULO 4: Ahorro de tiempo con herencia de estilo. . . . . . . . . . . . . . . . . . . . . . .93 ¿Qué es la herencia? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Cómo simplifica la herencia las hojas de estilo . . . . . . . . . . . . . . . . . . . . . . . . . . . .95 Los límites de la herencia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95 Tutorial: Herencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 iii www.it-ebooks.info CAPÍTULO 5: Gestión de varios estilos: la cascada. . . . . . . . . . . . . . . . . .103 Cómo Estilos en Cascada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Especificidad: qué estilo gana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Control de la cascada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Tutorial: La cascada en acción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117 La segunda parte:CSS CAPÍTULO 6: aplicado Dar formato al texto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127 Uso de fuentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Uso de fuentes web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Descubriendo las fuentes web de Google . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Adición de color al texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 Cambiar el tamaño de fuente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Formateo de palabras y letras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Agregar sombra de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 Dar formato a párrafos completos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Listas de estilo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 Tutorial: Formato de texto en acción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 CAPÍTULO 7: Márgenes, relleno y bordes. . . . . . . . . . . . . . . . . . . . . . . . . .193 Comprender el modelo de caja. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 Control del espacio con márgenes y relleno . . . . . . . . . . . . . . . . . . . . . . . . . 195 Adición de bordes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202 Colorear el fondo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 Creación de esquinas redondeadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .207 Adición de sombras paralelas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 Determinación de la altura y el ancho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 Contenido envolvente con elementos flotantes. . . . . . . . . . . . . . . . . . . . . . . . . . 220 Tutorial: Márgenes, fondos y bordes . . . . . . . . . . . . . . . . . . . . . . . . .225 CAPÍTULO 8: Adición de gráficos a páginas web. . . . . . . . . . . . . . . . . . . . . . . . . .239 Descubriendo CSS y la etiqueta <img>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239 Adición de imágenes de fondo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 Control de la repetición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 Colocación de una imagen de fondo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .245 Uso de la abreviatura de propiedades de fondo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .255 Uso de múltiples imágenes de fondo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .257 Utilización de fondos degradados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .259 Aplicación de degradados sencillos con Colorzilla . . . . . . . . . . . . . . . . . . . . . . . . . . . . .269 Tutoría: Mejora de imágenes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 Tutorial: creación de una galería de fotos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .278 Tutorial: uso de imágenes de fondo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .283 IV Contenido www.it-ebooks.info CAPÍTULO 9: Mejorar la navegación de su sitio. . . . . . . . . . . . . . . . . . . . . .293 Seleccionando qué enlaces al estilo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .293 Estilo de enlaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .297 Construcción de barras de navegación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .303 Rollovers de precarga estilo CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 Diseño de tipos particulares de enlaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 Tutorial: Estilo de enlaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 Tutorial: Creación de una barra de navegación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .324 CAPÍTULO 10: Transformaciones, transiciones y animaciones CSS. . . . . . . . . . . .335 Transforma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .335 Transiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .345 Animaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .354 Tutoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .366 CAPÍTULO 11: Formateo de tablas y formularios. . . . . . . . . . . . . . . . . . . . . . . . . . . .375 Usando tablas de la manera correcta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 Mesas de diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .378 Formularios de estilo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 Tutorial: Dar estilo a una tabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 Tutorial: aplicar estilo a un formulario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .395 Parte tres:Diseño de página CSS CAPÍTULO 12: Introducción al diseño CSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .405 Tipos de diseños de páginas web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 Cómo funciona el diseño CSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 Estrategias de diseño. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 CAPÍTULO 13: Creación de diseños basados en flotadores. . . . . . . . . . . . . . . . . . . . . . . . . . . .417 Aplicar flotantes a sus diseños. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 Superación de problemas de flotación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .425 Tutorial: Diseños de varias columnas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 CAPITULO 14: Diseño web adaptable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .453 Conceptos básicos del diseño web responsivo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 Configuración de una página web para RWD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .455 Consultas de medios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .457 Rejillas Flexibles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 imágenes fluidas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .470 Tutorial de Diseño Web Responsivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .474 Contenido www.it-ebooks.info v CAPÍTULO 15: Posicionamiento de elementos en una página web. . . . . . . . . . . . . . . . . . . .487 Cómo funcionan las propiedades de posicionamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 poderosas estrategias de posicionamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .502 Tutorial: Colocación de elementos de página . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .507 Cuarta parte:CSS CAPITULO 16: avanzado CSS para la página impresa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .519 Cómo funcionan las hojas de estilo multimedia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Cómo agregar hojas de estilo de medios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .522 Creación de hojas de estilo de impresión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .523 Tutorial: Creación de una hoja de estilo de impresión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 CAPITULO 17: Mejorar sus hábitos de CSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .539 Adición de comentarios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .539 Organización de estilos y hojas de estilo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 Eliminación de la interferencia del estilo del navegador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548 Uso de selectores de descendientes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .553 Probar diferentes CSS para Internet Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . .558 Quinta parte:Apéndices Apéndice A: Referencia de propiedad CSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .563 Valores CSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .563 Propiedades del texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .567 Propiedades de la lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .572 Relleno, bordes y márgenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .573 Fondos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .579 Propiedades de diseño de página. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .582 Propiedades de animación, transformación y transición. . . . . . . . . . . . . . . . . . . . . .588 Propiedades de la tabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .593 Propiedades misceláneas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .595 Apéndice B: Recursos CSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .599 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .599 CSS Ayuda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600 CSS Sugerencias, trucos y consejos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600 CSS Navegación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diseño 601 CSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602 sitios de exhibición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603 Libros CSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604 Software CSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604 Índice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .607 vi Contenido www.it-ebooks.info Los créditos que faltan Sobre el Autor David Sawyer McFarlandes presidente de Sawyer McFarland Media, Inc., una empresa de capacitación y desarrollo web en Portland, Oregón. Ha estado construyendo sitios web desde 1995, cuando diseñó su primer sitio web: una revista en línea para profesionales de la comunicación. Se desempeñó como webmaster en la Universidad de California en Berkeley y en el Centro de Investigación Multimedia de Berkeley, y ayudó a crear, diseñar y programar numerosos sitios web para clientes, incluidos Macworld.com. Además de crear sitios web, David también es escritor, capacitador e instructor. Ha enseñado diseño web en la Escuela de Graduados de Periodismo de UC Berkeley, el Centro de Arte Electrónico, la Academia de Arte College, el Centro Ex'Pressions para Nuevos Medios y el Instituto de Arte de Portland. Actualmente enseña en el Programa Multimedia en la Universidad Estatal de Portland. Ha escrito artículos sobre diseño web paraDiseño Web Práctico, Macworldrevista, yCreativePro.com. David es también el autor deDreamweaver: El manual perdidoyJavaScript: el manual perdido. Da la bienvenida a los comentarios sobre este libro por correo electrónico:faltando@sawmac.com. (Sin embargo, si busca ayuda técnica, consulte las fuentes enumeradas en el Apéndice B). ACERCA DEL EQUIPO CREATIVO peluquero(editor) ha trabajado con la serie Missing Manual desde el siglo anterior. Vive en Massachusetts con su esposo y su iMac. Correo electrónico:nanbarber@oreilly.com _. acebo bauer(editora de producción) vive en Ye Olde Cambridge, Massachusetts, donde es una ávida cocinera casera, prolífica aficionada al bricolaje y entusiasta del diseño moderno de mediados de siglo. Correo electrónico: holly@oreilly.com. nancy reinhardt(correctora de pruebas) vive en el Medio Oeste, donde disfruta los fines de semana de verano en el lago, pasea en bote, nada y lee vorazmente. Nan no solo es correctora y correctora de estilo independiente, sino que también es una novelista romántica publicada. Mira su trabajo en www.nanreinhardt.com. Correo electrónico:nanleigh1@gmail.com. Nancy A. Guenther(indexador) indexó este libro en nombre de Potomac Indexing, LLC, una asociación de indexación internacional enwww.potomacindexing.com. Ha sido indexadora independiente a tiempo completo desde 1983, especializándose en software de computadora, estudios estadounidenses y negocios. su sitio web eswww.guenther.bizland.com. los creditos que faltan www.it-ebooks.info viii Daniel J Quinn(revisor técnico) es un desarrollador web independiente en DQuinn.net. Durante los últimos cinco años, ha trabajado como ingeniero senior de interfaz de usuario en la galardonada agencia digital Genuine Interactive, especializándose en WordPress y estrategia de contenido para marcas como Sam Adams, MassMutual y Children's Hospital Boston. Hoy, Daniel se desempeña como desarrollador web para el departamento de Comunicaciones Digitales de la Universidad de Harvard. Trabaja regularmente con un equipo de diseñadores locales y puede ser contactado en daniel@dquinn.net. jason arnold(revisor técnico) vive en Santa Rosa, California, con su esposa y sus tres hijas. Trabaja en el Hospital del Distrito de Healdsburg como Técnico de Telemetría y enseña Kenpo Karate a niños. Actualmente está trabajando para obtener su título de enfermería en Santa Rosa Junior College. En su tiempo libre, practica Kenpo Karate con sus hijas y siempre está buscando un proyecto tecnológico adicional para mantenerse ocupado. Agradecimientos Muchas gracias a todos los que ayudaron con este libro, incluidos mis alumnos, que siempre me ayudan a ver conceptos complejos a través de los ojos de un principiante. Gracias a mis editores técnicos, Daniel Quinn y Jason Arnold, quienes me salvaron de cualquier error vergonzoso, y a Zoe Gillenwater, cuyos valiosos consejos para la primera edición de este libro siguen vigentes. Además, todos tenemos una gran deuda de gratitud con los muchos diseñadores web que han abierto nuevos caminos al usar CSS de manera creativa y han compartido sus descubrimientos con la comunidad de diseño web. Finalmente, gracias a David Pogue, cuyo incansable entusiasmo y resistencia son inspiradores; Nan Barber por refinar mi escritura, corregir mis errores y mantenerme encaminado; a mi esposa, Scholle, por su amor y apoyo; mi hijo, Graham, quien sugirió que terminaría este libro mucho más rápido si simplemente escribiera "¡Bla, bla, bla, bla, BOO!" para cada capítulo; mi maravillosa hija, Kate, cuya sonrisa siempre es un gran estímulo; ya mi familia: mamá, Doug, Mary, David, Marisa, Tessa, Phyllis, Les, Del, Patricia y Mike. —David Sawyer McFarland LA SERIE DE MANUALES PERDIDOS Missing Manuals son guías ingeniosas y magníficamente escritas para productos informáticos que no vienen con manuales impresos (que son casi todos). Cada libro presenta un índice hecho a mano y referencias cruzadas a páginas específicas (no solo a capítulos). Los títulos recientes y próximos incluyen: Access 2010: El manual perdidopor Matthew MacDonald Access 2013: El manual perdidopor Matthew MacDonald Adobe Edge Animate: El manual perdidopor Chris Grover Comprar una casa: el manual perdidopor Nancy Conner Creación de un sitio web: el manual perdido, tercera edición,por Matthew MacDonald viii los creditos que faltan www.it-ebooks.info Fotografía digital de David Pogue: El manual perdidopor David Pogué Dreamweaver CS6: El manual perdidopor David Sawyer McFarland Droide 2: El manual perdidopor Preston Gralla Droide x2: El manual perdidopor Preston Gralla Excel 2010: El manual perdidopor Matthew MacDonald FileMaker Pro 12: El manual perdidopor Susan Prosser y Stuart Gripman Flash CS6: El manual perdidopor Chris Grover Galaxy S II: El manual perdidopor Preston Gralla Galaxy Tab: El manual perdidopor Preston Gralla Google+: El manual perdidopor Kevin Purdy Google SketchUp: El manual perdidopor Chris Grover HTML5: El manual perdidopor Matthew MacDonald iMovie '11 e iDVD: El manual perdidopor David Pogue y Aaron Miller iPad: El manual perdido, cuarta ediciónpor JD Biersdorfer iPhone: El manual perdido, quinta ediciónpor David Pogué Desarrollo de aplicaciones para iPhone: El manual perdidopor Craig Hockenberry iPhoto '11: El manual perdidopor David Pogue y Lesa Snider iPod: The Missing Manual, décima ediciónpor JD Biersdorfer y David Pogue JavaScript y jQuery: El manual perdido, segunda ediciónpor David Sawyer McFarland Kindle Fire: El manual perdidopor Peter Meyers Living Green: El manual perdidopor Nancy Conner Mac OS x Mountain Lion: El manual perdidopor David Pogué Microsoft Project 2010: El manual perdidopor Bonnie Biafore Motorola xoom: El manual perdidopor Preston Gralla Netbooks: El manual perdidopor JD Biersdorfer NOOK HD: El manual perdidopor Preston Gralla Office 2010: El manual perdidopor Nancy Conner, Chris Grover y Matthew MacDonald Office 2011 para Macintosh: El manual perdidopor Chris Grover Office 2013: El manual perdidopor Nancy Conner y Matthew MacDonald Inversión personal: el manual perdidopor Bonnie Biafore los creditos que faltan www.it-ebooks.info ix Photoshop CS6: El manual perdidopor Lesa Snider Photoshop Elements 10: El manual perdidopor Bárbara Brundage PHP & MySQL: El Manual Perdido, Segunda Ediciónpor Brett McLaughlin QuickBooks 2012: El manual perdidopor Bonnie Biafore Cambiando a la Mac: The Missing Manual, Lion Editionpor David Pogué Windows 7: El manual perdidopor David Pogué Windows 8: El manual perdidopor David Pogué Tu cuerpo: el manual perdidopor Matthew MacDonald Tu cerebro: el manual perdidopor Matthew MacDonald Tu dinero: el manual perdidopor JD Roth Para obtener una lista completa de todos los manuales faltantes impresos, vaya awww.missingmanuals.com/library. html. X los creditos que faltan www.it-ebooks.info Introducción i C Las hojas de estilo en cascada (CSS para abreviar) le brindan control creativo sobre el diseño y el diseño de sus páginas web. Con CSS, puede adornar el texto de su sitio con titulares llamativos, capitulares y bordes, como los de las revistas de moda. También puede organizar imágenes con precisión, crear columnas y pancartas y resaltar sus enlaces con efectos de rollover dinámicos. Incluso puede hacer que los elementos aparezcan o desaparezcan gradualmente, mover objetos por la página o hacer que un botón cambie lentamente de color cuando un visitante pasa el mouse sobre él. Cualquier cosa que pueda hacer todo eso debe ser bastante complicada, ¿verdad? ¡Au contraire! La idea detrás de CSS es agilizar el proceso de diseño de páginas web. En las próximas páginas, aprenderá los conceptos básicos de CSS. En el Capítulo 1, se pondrá manos a la obra para crear una página web basada en CSS. Cómo funciona CSS CSS funciona con HTML, pero no es HTML. Es un idioma completamente diferente. Mientras que HTML proporciona estructura a un documento al organizar la información en encabezados, párrafos, listas con viñetas, etc., CSS funciona mano a mano con el navegador web para hacer HTML.mirarbien. Por ejemplo, puede usar HTML para convertir una frase en un encabezado de nivel superior, lo que indica que introduce el contenido en el resto de la página. Sin embargo, usaría CSS para formatear ese encabezado con, digamos, letra roja grande y en negrita y colocarlo a 50 píxeles del borde izquierdo de la ventana. En CSS, ese formato de texto comprende un estilo, una regla que describe la apariencia de una parte particular de una página web. Un estilohojaes un conjunto de estos estilos. 1 www.it-ebooks.info Los beneficios de CSS También puede crear estilos específicamente para trabajar con imágenes. Por ejemplo, un estilo puede alinear una imagen a lo largo del borde derecho de una página web, rodear la imagen con un borde colorido y colocar un margen de 50 píxeles entre la imagen y el texto que la rodea. Una vez que haya creado un estilo, puede aplicarlo a texto, imágenes, encabezados u otros elementos en una página. Por ejemplo, puede seleccionar un párrafo de texto y aplicar un estilo para cambiar instantáneamente el tamaño, el color y la fuente del texto. También puede crear estilos para etiquetas HTML específicas, por ejemplo, todos los encabezados de primer nivel (<h1>tags) en su sitio se muestran con el mismo estilo, sin importar dónde aparezcan. Los beneficios de CSS Antes de CSS, los diseñadores web estaban limitados a las opciones de diseño y estilo de HTML. Y si navegó por Internet en 1995, comprenderá el énfasis enlimitado. HTML sigue siendo la base de todas las páginas de la World Wide Web, pero simplemente no es una herramienta de diseño. Claro, HTML proporciona opciones básicas de formato para texto, imágenes, tablas y otros elementos de la página web, y los webmasters pacientes y meticulosos pueden hacer que las páginas se vean bastante bien usando solo HTML. Pero el resultado suele ser páginas web lentas cargadas de código torpe. CSS, en cambio, ofrece las siguientes ventajas: • Las hojas de estilo ofrecen muchas más opciones de formato que HTML. Con CSS, puede dar formato a los párrafos tal como aparecen en una revista o periódico (la primera línea con sangría y sin espacio entre cada párrafo, por ejemplo) y controlar el principal(el espacio entre líneas de texto en un párrafo). • Cuando usa CSS para agregar una imagen de fondo a una página, puede decidir si desea y cómolosas(repite). HTML ni siquiera puede comenzar a hacer eso. • Aún mejor, los estilos CSS ocupan mucho menos espacio que las opciones de formato de HTML, como el tan odiado <fuente>etiqueta. Por lo general, puede recortar una gran cantidad de kilobytes de páginas web con mucho texto utilizando CSS. Como resultado, sus páginas se ven geniales ycargar más rápido. • Las hojas de estilo también facilitan la actualización de su sitio. Puede recopilar todos sus estilos en una sola hoja de estilo externa que está vinculada a cada página de su sitio. Luego, cuando edita un estilo, ese cambio se propaga inmediatamente a través de su sitio.lo que seaaparece ese estilo. Puede cambiar por completo la apariencia de un sitio simplemente editando una sola hoja de estilo. Lo que necesitas saber Este libro asume que ya tiene algún conocimiento de HTML (y tal vez también algo de experiencia con CSS). Tal vez haya creado un sitio o dos (o al menos una página o dos) y esté familiarizado con el mar de etiquetas—<html>, <p>, <h1>, <tabla>, 2 Css3: el manual perdido www.it-ebooks.info y así sucesivamente, que conforman el lenguaje de marcado de hipertexto. CSS no puede hacer nada sin HTML, así que para avanzar necesitas saber cómo crear una página web Documento TIPOS utilizando HTML básico. Si ha usado HTML en el pasado para crear páginas web, pero siente que su conocimiento está un poco oxidado, la siguiente sección le ofrece un repaso básico. CONSEJOSi solo está comenzando a aprender HTML, consulte estos tutoriales gratuitos en línea: HTML Dog ( www.htmldog.com/guides/htmlbeginner) y W3Schools (www.w3schools.com/html). Si es un aficionado a las páginas impresas, tal vez quiera hacerse con una copia deCreación de un sitio web: el manual perdido,Tercera edición oHead First HTML y CSS,Segunda edición (ambos O'Reilly). HTML: la estructura básica HTML (lenguaje de marcado de hipertexto) utiliza comandos simples llamadosetiquetaspara definir las diversas partes de una página web. Por ejemplo, este código HTML crea una página web simple: <!doctipo html> <html> <cabeza> <juego de caracteres meta="UTF-8"> <title>Oye, soy el título de esta página web</title> </ head> <cuerpo> <p>Oye, soy un párrafo en esta página web.</p> </ body> </html> Puede que no sea emocionante, pero este ejemplo tiene todos los elementos básicos que necesita una página web. Notarás algo llamadotipo de documentodeclaración al principio del código, seguida de <HTML> (con los corchetes), una cabeza, un cuerpo y algunas cosas, el contenido real de la página, dentro del cuerpo, que termina en un </ final.html>. Tipos de documentos Todas las páginas web comienzan con un tipo de documento, una línea de código que identifica qué tipo de HTML usó para escribir la página. Se han utilizado dos tipos de documentos durante años: HTML 4.01 y xHTML 1.0, y cada uno de esos tipos de documentos tiene dos estilos:estrictoytransicional. Por ejemplo, el tipo de documento de transición HTML 4.01 tiene el siguiente aspecto (los otros tipos de documento para HTML 4.01 y xHTML 1.0 tienen un aspecto similar): <!DOCTYPE HTML PÚBLICO "-//W3C//DTD HTML 4.01 Transicional//EN" "http:// www.w3.org/TR/html4/loose.dtd"> NotaPara ver ejemplos de todos los tipos de documentos, visitewww.webstandards.org/learn/reference/templates. introducción www.it-ebooks.info 3 cómo hTML etiquetas de trabajo Si observa el código de la página HTML de muestra en esta sección, verá que utiliza un tipo de documento mucho más sucinto: <!doctipo html> Ese es el tipo de documento nuevo y más simple de HTML5. HTML5 está destinado a ser más fácil de usar y más optimizado que sus predecesores. Este libro utiliza el tipo de documento HTML5, que es compatible con todos los navegadores populares (incluso el antiguo Internet Explorer 6). Y debido a que HTML5 es el futuro de la Web, no hay motivo para seguir usando los tipos de documento más antiguos. NotaEl hecho de que el tipo de documento HTML funcione en navegadores más antiguos no significa que esos navegadores entiendan todas las etiquetas o características de HTML5. Internet Explorer 8 y anteriores, por ejemplo, no reconocen las nuevas etiquetas HTML5. Para diseñar etiquetas con CSS para esas versiones de IE, debe emplear un poco de JavaScript. Aprenderá cómo actualizar los navegadores más antiguos en la página 30. Pero no importa qué tipo de documento prefieras, lo importante es usar siempre uno. Sin él, sus páginas se verán diferentes según el navegador de su visitante, ya que los navegadores muestran CSS de manera diferente si no tienen un tipo de documento como guía. Cada tipo de documento requiere que escriba su HTML de cierta manera. Por ejemplo, la etiqueta para un salto de línea se ve así en HTML 4.01: <br> Pero en xHTML, se ve así: <br /> Y hay otra ventaja de HTML5: acepta cualquiera de los dos. Cómo funcionan las etiquetas HTML En el ejemplo HTML simple de la página 3, como en el código HTML de cualquier página web, la mayoría de los comandos aparecen en pares que rodean un bloque de texto u otros comandos. Intercalados entre paréntesis, estosetiquetasson instrucciones que le dicen a un navegador web cómo mostrar la página web. Las etiquetas son la parte de "marcado" del lenguaje de marcado de hipertexto. El inicio (apertura) de cada par le dice al navegador dónde comienza la instrucción, y la etiqueta final le dice dónde termina la instrucción. terminando oclausuralas etiquetas siempre incluyen una barra diagonal (/) después del primer símbolo de paréntesis (<). En cualquier página web, normalmente encontrarás al menos estos cuatro elementos. • La primera línea de una página web es laDeclaración DOCTYPE, discutido en la sección anterior. • El<html>La etiqueta aparece una vez al principio de una página web y otra vez (con una barra diagonal añadida) al final:</html>. Esta etiqueta le dice a un navegador web que 4 Css3: el manual perdido www.it-ebooks.info la información contenida en este documento está escrita en HTML, a diferencia de algún otro idioma. Todo el contenido de una página, incluidas otras etiquetas, aparece entre la XhTML, también apertura y el cierre <html>etiquetas Si tuviera que pensar en una página web como un árbol, el <html>la etiqueta serían sus raíces. Del tronco brotan dos ramas que representan las dos partes principales de cualquier página web: elcabezay elcuerpo. • Elcabezade una página web contiene el título de la página ("Lápices de pedido por correo de Izzie"). También puede incluir otra información invisible, como la descripción de una página, que utilizan los navegadores y los motores de búsqueda. Rodeas la cabecera con apertura y cierre.<cabeza>etiquetas Además, la sección de encabezado puede incluir información que los navegadores usan para formatear el HTML de la página y agregar interactividad. Como verás, el <cabeza> puede contener código CSS (como el que aprenderá a escribir en este libro) o un enlace a otro archivo que contenga información CSS. • Elcuerpo, como se distingue por su entorno<cuerpo>etiquetas, contiene todo el contenido que aparece dentro de una ventana del navegador: titulares, texto, imágenes, etc. Dentro del <cuerpo>etiqueta, comúnmente encontrará etiquetas como estas: • Le dices a un navegador web dónde comienza un párrafo de texto con un<p>(etiqueta de párrafo de apertura), y donde termina con un</p>(etiqueta de párrafo de cierre). • El<fuerte>la etiqueta enfatiza el texto. Cuando rodea algún texto con él y su etiqueta de socio,</fuerte>, obtienes negrita. El fragmento HTML <fuerte> ¡Advertencia!</strong>le dice a un navegador web que enfatice fuertemente la palabra "¡Advertencia!" • El<un>etiqueta, o etiqueta de anclaje, crea unaHipervínculoen una página web. Al hacer clic, aparece un hipervínculo, oenlace— puede llevar a cualquier parte de la Web. Le dices al navegador a dónde apunta el enlace poniendo una dirección web dentro del <un>etiquetas Por ejemplo, puede escribir <a href="http://www.missingmanuals.com">¡Haga clic aquí!</a>. El navegador sabe que cuando su visitante hace clic en las palabras "¡Haga clic aquí!" debe ir al sitio web de Missing Manual. Elhrefparte de la etiqueta se llama atributo, y la URL (el Localizador Uniforme de Recursos o dirección web) es elvalor. En este ejemplo,http://www.missingmanuals.comes elvalordelhrefatributo. XHTML, también Como cualquier tecnología, HTML ha evolucionado con el tiempo. Aunque el HTML estándar ha cumplido bien su propósito, siempre ha sido un lenguaje algo descuidado. Entre otras cosas, le permite usar letras mayúsculas, minúsculas y mayúsculas y minúsculas en las etiquetas. (<cuerpo>y < CUERPO>son correctas, por ejemplo) y permite etiquetas no cerradas (por lo que puede usar un <p> etiqueta sin cierre </p>etiqueta para crear un párrafo). Si bien esta flexibilidad puede facilitar la escritura de páginas, también dificulta la vida de los navegadores web, los teléfonos inteligentes y otras tecnologías que interactúan con los datos en la Web. introducción www.it-ebooks.info 5 hTML5: El VUELTAS DE RUEDA de nuevo Además, HTML no funciona con uno de los lenguajes de Internet más populares: xML o lenguaje de marcado extensible. Para mantener el ritmo de los tiempos, en el año 2000 se introdujo una versión mejorada de HTML, llamada xHTML, y encontrará que se usa con frecuencia en muchos sitios (de hecho, xHTML es solo una versión de HTML “xML-ified”). . xHTML fue visto como el futuro (en 2000), pero desde entonces ha sido reemplazado por HTML5. Si bien los navegadores web todavía entienden xHTML (y probablemente lo harán durante mucho tiempo), este libro no lo incluye. HTML5: la rueda vuelve a girar Cuando el W3C, el grupo responsable de muchas tecnologías de Internet, introdujo xHTML como un paso intermedio en la transición a xML como el lenguaje principal de la Web, la comunidad de desarrollo web lo anunció como el próximo gran avance. La historia ha demostrado que esa predicción es un poco grandiosa. Resulta que la complejidad de migrar a xML impidió que los fabricantes de navegadores siguieran el camino xML establecido por el World Wide Web Consortium. En cambio, el W3C cerró el grupo de trabajo xHTML a favor de HTML5, una nueva versión de HTML que se aleja de xML y vuelve a HTML, aunque es una versión mejorada. Con el apoyo de todos los fabricantes de navegadores, HTML5 es la próxima novedad. Algunos navegadores, incluidos Google Chrome y Firefox, ya reconocen partes de HTML5 e incluso los principales medios de comunicación como Time, Newsweek, HTML5 no es una tecnología radicalmente nueva. De hecho, a diferencia de xHTML, cuyo objetivo era fomentar una nueva forma de crear páginas web, HTML5 se trata de asegurarse de que la Web siga funcionando como siempre lo ha hecho. La mayoría de los conceptos básicos de HTML todavía están en su lugar. Además, HTML5 agrega algunos elementos nuevos, destinados a respaldar la forma en que los diseñadores web actualmente crean sitios web. Por ejemplo, en HTML5, el <encabezado>la etiqueta puede contener el contenido que normalmente encontraría en la parte superior de una página, como un logotipo y enlaces de navegación en todo el sitio; el nuevo <navegación> etiqueta encierra el conjunto de enlaces utilizados para navegar por un sitio; y el <pie de página>La etiqueta contiene las cosas que normalmente pones en la parte inferior de una página, como avisos legales, contactos de correo electrónico, etc. Además, HTML5 agrega nuevas etiquetas que le permiten insertar video y audio en una página, y nuevas etiquetas de formulario que agregan elementos sofisticados, como controles deslizantes y selectores de fechas emergentes, así como soporte de navegador incorporado para validación de formularios (lo que garantiza visitantes llenan correctamente sus formularios). Desafortunadamente, el soporte del navegador para estas nuevas características no es consistente y es difícil usar las nuevas etiquetas sin algunas soluciones bastante elaboradas. Aunque es posible que HTML5 no esté completamente listo para el horario estelar, no hay razón para no comenzar a usar el tipo de documento HTML5 e incluso algo de HTML5 básico ahora. (Sin embargo, deberá proporcionar un poco de ayuda a Internet Explorer 8 y versiones anteriores; consulte el recuadro en la página 24). Encontrará HTML5 a lo largo de este libro, especialmente en el próximo capítulo. 6 Css3: el manual perdido www.it-ebooks.info Software para CSS Software para CSS Para crear páginas web compuestas por HTML y CSS, no necesitas más que un editor de texto básico como Notepad (Windows) o TextEdit (Mac). Pero después de escribir unos cientos de líneas de HTML y CSS, es posible que desee probar un programa más adecuado para trabajar con páginas web. Esta sección enumera algunos programas comunes, algunos gratuitos y otros que debe comprar. NotaHay literalmente cientos de herramientas que pueden ayudarlo a crear páginas web, por lo que la siguiente no es una lista completa. Piense en ello como un recorrido por los grandes éxitos de los programas más populares que los fanáticos de CSS están usando hoy. Programas gratuitos Existen muchos programas gratuitos para editar páginas web y hojas de estilo. Si todavía usa el Bloc de notas o TextEdit, pruebe uno de estos. Aquí hay una breve lista para comenzar: • jEditar(Windows, Mac, Linux;http://jedit.org). Este editor de texto gratuito basado en Java funciona en casi cualquier computadora e incluye muchas funciones que encontraría en los editores de texto comerciales, como el resaltado de sintaxis para CSS. • Bloc de notas++(ventanas;http://notepad-plus.sourceforge.net). Mucha gente confía en este rápido editor de texto. Incluso tiene funciones integradas que lo hacen ideal para escribir HTML y CSS, como resaltado de sintaxis: etiquetas de codificación de colores y palabras clave especiales para facilitar la identificación de los elementos HTML y CSS de la página. • TextWrangler(Mac;www.barebones.com/products/textwrangler). Este software gratuito es en realidad una versión reducida de BBEdit, el sofisticado y conocido editor de texto de Mac. TextWrangler no tiene todas las herramientas HTML integradas de BBEdit, pero incluye resaltado de sintaxis, FTP (para que pueda cargar archivos en un servidor web) y más. software comercial Los programas comerciales de desarrollo de sitios web van desde editores de texto económicos hasta herramientas completas de construcción de sitios web con todas las comodidades: • EditPlus(ventanas;www.editplus.com) es un editor de texto económico ($ 35) que incluye resaltado de sintaxis, FTP, autocompletado y otras características de ahorro de muñeca. • skEditar(Mac;www.skedit.com) es un editor de páginas web económico ($30), completo con FTP/SFTP, sugerencias de código y otras características útiles. • Coda2(Mac;www.panic.com/coda) es un kit de herramientas de desarrollo web completo ($99). Incluye un editor de texto, vista previa de página, FTP/SFTP y herramientas gráficas de creación de CSS para crear CSS. • Texto sublime(Mac;www.sublimetext.com) es un editor de texto relativamente nuevo. Es amado entre los codificadores en Mac. introducción www.it-ebooks.info 7 sobre esto Libro • Tejesueños(Mac y Windows;www.adobe.com/products/dreamweaver) es un editor visual de páginas web ($399). Le permite ver cómo se ve su página en un navegador web. El programa también incluye un potente editor de texto y excelentes herramientas de creación y gestión de CSS. VerificarDreamweaver CS6: El manual perdidopara obtener información completa sobre cómo usar este poderoso programa. • Web de expresión 2(ventanas;www.microsoft.com/expresión) es la entrada de Microsoft en el campo del diseño web ($149). Incluye muchas herramientas profesionales de diseño web, incluidas excelentes herramientas CSS. NotaLos diversos tipos de software discutidos en esta sección son programas de propósito general que le permiten editar tanto HTML/XHTML como CSS. Con ellos, solo necesita aprender un programa para sus necesidades de desarrollo web. Pero si ya tiene un querido editor de HTML/XHTML que no utiliza CSS, quizás desee consultar uno de los programas de edición específicos de CSS que se describen en el Apéndice B. Sobre este libro La World Wide Web es realmente fácil de usar. Después de todo, las abuelas de Boise y los alumnos de primer grado de Tallahassee se conectan a Internet todos los días. Desafortunadamente, las reglas que gobiernan cómo funciona la Webobrasno son tan fáciles de entender. Los informáticos y otros tipos de técnicos que escriben la documentación oficial no están interesados en explicar sus conceptos al Joe (o Joanne) promedio. solo echa un vistazowww.w3.org/TR/css3-transformspara tener una idea del galimatías técnico que hablan estos geeks. Las personas que recién están aprendiendo CSS a menudo no saben por dónde empezar. Y los puntos más finos de CSS pueden hacer tropezar incluso a los profesionales web experimentados. El propósito de este libro, entonces, es servir como el manual que debería haber venido con CSS. En las páginas de este libro, encontrará instrucciones paso a paso para usar CSS para crear hermosas páginas web. CSS3: El manual perdidoestá diseñado para ayudar a los lectores en todos los niveles técnicos. Para aprovechar al máximo este libro, debe conocer una muestra de HTML y tal vez incluso CSS. Entonces, si nunca ha creado una página web antes, consulte el tutorial que comienza en la página 43. Las discusiones principales en estos capítulos están escritas para principiantes avanzados o intermedios. Pero si es nuevo en la creación de páginas web, los cuadros especiales llamados "Up to Speed" proporcionan la información introductoria que necesita para comprender el tema en cuestión. Si eres un jinete avanzado de páginas web, por otro lado, mantente atento a cuadros similares llamados "Clínica de usuarios avanzados". Ofrecen más consejos técnicos, trucos y atajos para el aficionado a la informática con experiencia. 8 Css3: el manual perdido www.it-ebooks.info sobre esto Libro Hasta la velocidad Los diferentes sabores de CSS Al igual que los sistemas operativos y los iPod, CSS genera nuevas en realidad un solo estándar. A medida que CSS ha crecido en versiones continuamente (bueno, no con tanta frecuencia como los complejidad, el W3C ha dividido CSS en módulos separados: el módulo modelos de iPod). CSS 1, introducido en 1996, sentó las bases para las de selectores, el módulo de valores y unidades, el módulo de alineación hojas de estilo en cascada. La estructura básica de un estilo, el concepto de cajas, etc. Dado que cada módulo puede desarrollarse de selector (Capítulo 3) y la mayoría de las propiedades CSS de este libro independientemente de los demás, no existe un único estándar llamado estaban en esa primera versión. "CSS3". De hecho, el nivel 3 del módulo Selectores está completo y se CSS 2 agregó nuevas funciones, incluida la capacidad de orientar su CSS está trabajando en el nivel 4. a diferentes impresoras, monitores y otros dispositivos. CSS 2 también En otras palabras, lo que se conoce como CSS3 es en realidad solo una agregó nuevos selectores y la capacidad de colocar elementos con colección suelta de diferentes módulos en varios estados de finalización. precisión en una página web. Los fabricantes de navegadores ya han incorporado partes de los Este libro cubre completamente CSS 2.1, que es el estándar módulos más nuevos, pero otros módulos no son compatibles con actualmente aceptado. Incorpora todo CSS 1, agrega varias ningún navegador. En el futuro, no habrá ningún CSS4; solo habrá propiedades nuevas y corrige algunos problemas con las pautas nuevas versiones de los diferentes módulos, cada uno en un nivel de CSS 2. diferente de trabajo. CSS 2.1 incluyó algunas adiciones y revisiones. No fue un cambio radical con respecto a la versión 2, y la mayoría de los navegadores web se han adaptado Por estas razones, este libro cubre el núcleo de CSS 2.1 (que simplemente se ha transferido a los diversos módulos de CSS3), así como las nuevas propiedades de CSS más emocionantes, populares y perfectamente a las nuevas reglas, gracias. Más recientemente, CSS3 ha recibido mucha atención (junto con su primo ampliamente admitidas. HTML5). A diferencia de las versiones anteriores de CSS, CSS3 no es NotaEste libro recomienda periódicamente otros libros de CSS, que cubren temas que son demasiado especializados o tangenciales para un manual. A veces, los títulos recomendados son del editor de la serie Missing Manual, O'Reilly, pero no siempre. Si hay un gran libro que no es parte de la familia O'Reilly, se lo haremos saber. Sobre el contorno CSS3: El manual perdidose divide en cinco partes; los primeros cuatro contienen cada uno varios capítulos, mientras que la última parte contiene apéndices: • Primera parte: conceptos básicos de CSS, le muestra cómo crear hojas de estilo y proporciona una descripción general de los conceptos clave de CSS, como la herencia, los selectores y la cascada. En el camino, aprenderá las mejores prácticas de escritura HTML cuando trabaje con CSS. Los tutoriales refuerzan los conceptos principales de la parte y le dan una buena idea del poder de CSS. introducción www.it-ebooks.info 9 EL MUY Lo esencial • Segunda parte: CSS aplicado, te lleva al mundo real del diseño web. Aprenderá las propiedades CSS más importantes y cómo usarlas para dar formato al texto, crear herramientas de navegación útiles y mejorar su página con gráficos. Aprenderá a crear animaciones simples con CSS. Esta sección también proporciona consejos sobre cómo hacer tablas y formularios atractivos. • Tercera parte: diseño de página CSS, lo ayuda con uno de los aspectos más confusos pero más gratificantes de CSS: controlar la ubicación de los elementos en una página. Aprenderá cómo crear diseños comunes (como diseños de 2 y 3 columnas), cómo agregar barras laterales, así como sobre flotadores y posicionamiento, dos técnicas comunes de CSS para controlar el diseño de la página. También aprenderá a crear sitios web que se adapten para verse bien en navegadores de escritorio, tabletas y dispositivos móviles. • Cuarta parte: CSS avanzado, le enseña cómo hacer que las páginas web se vean bien cuando se imprimen y cubre técnicas avanzadas para usar CSS de manera más efectiva y eficiente. • Quinta parte: Apéndices, proporciona dos conjuntos de recursos. La Referencia de propiedades de CSS resume cada propiedad de CSS en fragmentos pequeños y fáciles de digerir para que pueda aprender rápidamente sobre propiedades de CSS útiles que quizás no haya visto antes o repasar lo que ya sabe. El último apéndice cubre herramientas y recursos para crear y usar CSS. Los muy básicos Para usar este libro, y de hecho para usar una computadora, necesita saber algunos conceptos básicos. Debe estar familiarizado con estos términos y conceptos: • haciendo clic. Este libro le brinda tres tipos de instrucciones que requieren que use el mouse o el trackpad de su computadora. Ahacer clicsignifica apuntar el cursor de flecha a algo en la pantalla y luego, sin mover el cursor en absoluto, presionar y soltar el botón del mouse (o el panel táctil de la computadora portátil). Un clic derecho es lo mismo que usar el botón derecho del mouse. (En una Mac, presione Control mientras hace clic si no tiene el botón derecho del mouse). Ahaga doble clicsignifica hacer clic dos veces en sucesión rápida, nuevamente sin mover el cursor en absoluto. Y paraarrastrarsignifica mover el cursormientraspresionando el botón. cuando te dicen queC-hacer clicalgo en la Mac, oCtrl-clicalgo en una PC, haces clic mientras presionas elCo la tecla Ctrl (ambas están cerca de la barra espaciadora). • Menús. Elmenússon las palabras en la parte superior de la pantalla o ventana: Archivo, Editar, etc. Haga clic en uno para que aparezca una lista de comandos, como si estuvieran escritos en la persiana de una ventana que acaba de bajar. Este libro asume que usted sabe cómo abrir un programa, navegar por Internet y descargar archivos. Debe saber cómo usar el menú Inicio (Windows) o el Dock oa(Mac), así como el Panel de control (Windows) o Preferencias del sistema (Mac OS x). 10 Css3: el manual perdido www.it-ebooks.info • Atajos de teclado. Cada vez que quitas la mano del teclado para mover el mouse, pierdes tiempo y potencialmente interrumpes tu flujo creativo. Es por eso que muchos EL MUY Lo esencial fanáticos de las computadoras usan combinaciones de teclas en lugar de comandos de menú siempre que sea posible. Cuando vea un atajo como Ctrl+S (C-S) (que guarda los cambios en el documento actual), le indica que mantenga presionada la tecla Ctrl oCy, mientras está presionada, escriba la letra S y luego suelte ambas teclas. Acerca de-Estos-flechas A lo largo de este libro, y a lo largo de la serie Missing Manual, encontrará oraciones como esta: "Abrir el sistema→Biblioteca→Carpeta de fuentes. Esa es la abreviatura de una instrucción mucho más larga que lo dirige a abrir tres carpetas anidadas en secuencia, como esta: “En su disco duro, encontrará una carpeta llamada Sistema. Abre eso. Dentro de la ventana de la carpeta del sistema hay una carpeta llamada Biblioteca; haga doble clic en él para abrirlo. Adentroesola carpeta es otra llamada Fuentes. Haz doble clic para abrirlo también”. De manera similar, este tipo de taquigrafía de flechas ayuda a simplificar la tarea de elegir comandos en los menús, como se muestra en la Figura I-1. Figura i-1 En este libro, las anotaciones de flecha ayudan a simplificar las instrucciones del menú. Por ejemplo, Ver→Tamano del texto→Aumentar es una forma más compacta de decir: “En el menú Ver, elija Tamaño del texto; en el submenú que aparece, elija Aumentar”. (Por cierto, cuando vea una combinación de teclas después de un comando de menú, como Ctrl++ aquí, eso significa que puede presionar esas teclas como atajo). introducción www.it-ebooks.info 11 acerca de en línea recursos Acerca de los recursos en línea Como propietario de un Manual perdido, tienes más que un libro para leer. En línea, encontrará archivos de ejemplo para que pueda obtener experiencia práctica, así como consejos, artículos y tal vez incluso uno o dos videos. También puede comunicarse con el equipo de Missing Manual y decirnos qué ama (u odia) del libro. Dirigirse a www.missingmanuals.com, o vaya directamente a una de las siguientes secciones. Ejemplos vivos Este libro está diseñado para publicar su trabajo en la Web de forma más rápida y profesional. Entonces, es natural que la mitad del valor de este libro se encuentre en la Web. A medida que lea los capítulos del libro, encontrará una serie deejemplos vivos—tutoriales paso a paso que puede crear usted mismo, utilizando materias primas (como gráficos y páginas web a medio completar) que puede descargar dewww.sawmac.com/css3/. Es posible que no gane mucho simplemente leyendo estas lecciones paso a paso mientras se relaja en la hamaca de su porche. Pero si trabaja con ellos en la computadora, descubrirá que estos tutoriales le brindan información sobre la forma en que los diseñadores profesionales crean páginas web. También encontrarás, en las lecciones de este libro, las URL de las páginas terminadas, para que puedas comparar tu trabajo con el resultado final. En otras palabras, no solo verá imágenes de cómo las páginas webdeberíamirar; encontrará las páginas web reales y en funcionamiento en Internet. Acerca de MissingManuals.com Enwww.missingmanuals.com, encontrará artículos, sugerencias y actualizaciones paraCSS3: El manual perdido. De hecho, lo invitamos y lo alentamos a que envíe dichas correcciones y actualizaciones usted mismo. En un esfuerzo por mantener el libro lo más actualizado y preciso posible, cada vez que imprimamos más copias de este libro, haremos las correcciones confirmadas que haya sugerido. También anotaremos dichos cambios en el sitio web, para que pueda marcar las correcciones importantes en su propia copia del libro, si lo desea. (Ir a www.missingmanuals.com/feedback, elija el nombre del libro en el menú emergente y luego haga clic en Ir para ver los cambios). También en nuestra página de Comentarios, puede obtener respuestas de expertos a las preguntas que le surjan mientras lee este libro, escribir una reseña del libro y encontrar grupos para personas que comparten su interés en CSS. Nos encantaría escuchar sus sugerencias para nuevos libros en la línea Missing Manual. También hay un lugar para eso enmissingmanuals.com. Y mientras está en línea, también puede registrar este libro enwww.oreilly.com(puede ir directamente a la página de registro yendo aquí:www.oreilly.com/registrar). Registrarse significa que podemos enviarle actualizaciones sobre este libro y podrá recibir ofertas especiales como descuentos en ediciones futuras deCSS3: El manual perdido. 12 Css3: el manual perdido www.it-ebooks.info Fe de erratas En un esfuerzo por mantener este libro lo más actualizado y preciso posible, cada vez que SaFari® LIBROS EN LÍNEA imprimamos más copias, haremos las correcciones confirmadas que haya sugerido. También notamos dichos cambios en el sitio web del libro, por lo que puede marcar correcciones importantes en su propia copia del libro, si lo desea. Ir aoreil.ly/css3_mmpara informar un error y ver las correcciones existentes. Safari® Libros en línea Safari® Books Online es una biblioteca digital a pedido que le permite buscar fácilmente en más de 7500 libros y videos de referencia sobre tecnología y creatividad para encontrar las respuestas que necesita rápidamente. Con una suscripción, puede leer cualquier página y ver cualquier video de nuestra biblioteca en línea. Lea libros en su teléfono celular y dispositivos móviles. Acceda a nuevos títulos antes de que estén disponibles para su impresión y obtenga acceso exclusivo a manuscritos en desarrollo y publique comentarios para los autores. Copie y pegue muestras de código, organice sus favoritos, descargue capítulos, marque secciones clave, cree notas, imprima páginas y benefíciese de toneladas de otras funciones que ahorran tiempo. introducción www.it-ebooks.info 13 www.it-ebooks.info PARTE Conceptos básicos de CSS CAPÍTULO 1: HTML para CSS CAPITULO 2: Creación de estilos y hojas de estilo CAPÍTULO 3: Selectores: identificar qué estilo CAPÍTULO 4: Ahorro de tiempo con herencia de estilo CAPÍTULO 5: Gestión de varios estilos: la cascada www.it-ebooks.info 1 www.it-ebooks.info Capítulo 1 1 HTML para CSS T Para aprovechar al máximo CSS, su código HTML debe proporcionar una base sólida y bien construida. Este capítulo le muestra cómo escribir HTML mejor y más compatible con CSS. La buena noticia es que cuando usa CSS en todo su sitio, HTML en realidad se vuelvemás fácil escribir. Ya no necesita preocuparse por intentar convertir HTML en el experto en diseño que nunca tuvo la intención de ser. En su lugar, CSS ofrece la mayoría de los toques de diseño gráfico que probablemente deseará, y las páginas HTML escritas para trabajar con CSS son más fáciles de crear ya que requieren menos código y menos escritura. También se descargarán más rápido, un bono de bienvenida que los visitantes de su sitio apreciarán (vea la Figura 1-1). HTML: pasado y presente Como se discutió en la Introducción, HTML proporciona la base para cada página que encuentre en la World Wide Web. Cuando agrega CSS a la mezcla, la forma en que usa HTML cambia. Diga adiós a la reutilización de etiquetas HTML incómodas simplemente para lograr ciertos efectos visuales. Algunas etiquetas y atributos HTML, como el antiguo <fuente> etiqueta: puedes olvidarte por completo. 17 www.it-ebooks.info html: pasado Y PRESENTE Figura 1-1 Diseño web basado en CSS hace escribir HTML más fácil. Los dos diseños que se muestran aquí se ven similares, pero la página superior tiene un estilo completo con CSS, mientras que la página inferior usa solo HTML. El tamaño del archivo HTML para la página principal es de solo 4k, mientras que la página de solo HTML tiene casi 4 veces ese tamaño con 14k. El enfoque de solo HTML requiere mucho más código para lograr casi los mismos efectos visuales: 213 líneas de código HTML en comparación con las 71 líneas de la versión CSS. HTML pasado: todo lo que se veía bien Cuando un grupo de científicos creó la Web para ayudar a compartir y realizar un seguimiento de la documentación técnica, nadie llamó a los diseñadores gráficos. Todo lo que los científicos necesitaban de HTML era estructurar la información para facilitar su comprensión. Por ejemplo, el < h1> indica un titular importante, mientras que <h2>la etiqueta representa un encabezado menor, 18 Css3: el manual perdido www.it-ebooks.info generalmente un subtítulo del <h1>etiqueta. Otro favorito, el <viejo> (lista ordenada), crea una lista numerada para cosas como "Las 10 razones principales para no jugar con medusas". html: pasado Y PRESENTE Pero tan pronto como las personas, además de los científicos, comenzaron a usar HTML, querían que sus páginas web se vieran bien. Entonces, los diseñadores web comenzaron a usar etiquetas para controlar la apariencia en lugar de estructurar la información. Por ejemplo, puede utilizar el <cita en bloque>etiqueta (destinada a material que se cita de otra fuente) en cualquier texto que desee sangrar un poco. Puede usar etiquetas de encabezado para hacer que cualquier texto sea más grande y más audaz, independientemente de si funciona como encabezado. En una solución aún más elaborada, los diseñadores aprendieron a usar el <mesa> etiqueta para crear columnas de texto y colocar con precisión imágenes y texto en una página. Desafortunadamente, dado que esa etiqueta estaba destinada a mostrar resultados de investigación de datos similares a hojas de cálculo, horarios de trenes, etc., los diseñadores tuvieron que ser creativos usando el <mesa>etiquetar de formas inusuales, a veces anidando una tabla dentro de una tabla dentro de una tabla para que sus páginas se vean bien. Mientras tanto, los fabricantes de navegadores introdujeron nuevas etiquetas y atributos con el propósito específico de hacer que una página se vea mejor. El <fuente>La etiqueta, por ejemplo, le permite especificar un color de fuente, un tipo de letra y uno de siete tamaños diferentes. (Si llevas la cuenta en casa, son alrededor de 100 tamaños menos de los que puedes obtener, por ejemplo, con Microsoft Word). Finalmente, cuando los diseñadores no podían obtener exactamente lo que querían, a menudo recurrían al uso de gráficos. Por ejemplo, crearían un gráfico grande para capturar la fuente y el diseño exactos de los elementos de la página web y luego dividirían los archivos de Photoshop en archivos más pequeños y los unirían dentro de las tablas para recrear el diseño original. Si bien todas las técnicas anteriores (usar etiquetas de manera creativa, aprovechar los atributos de etiquetas específicos del diseño y hacer un uso extensivo de gráficos) brindan control de diseño sobre sus páginas, también agregan una gran cantidad de código HTML adicional (y más arrugas para tu frente). HTML Presente: Scaffolding para CSS Independientemente del contenido de su página web (el calendario de la temporada de pesca, las indicaciones para llegar al IKEA más cercano o las imágenes de la fiesta de cumpleaños de su hijo), es el diseño de la página lo que hace que parezca una empresa profesional o un pasatiempo a tiempo parcial. Un buen diseño realza el mensaje de su sitio, ayuda a los visitantes a encontrar lo que buscan y determina cómo el resto del mundo ve su sitio web. Es por eso que los diseñadores web pasaron por las contorsiones descritas en la sección anterior para obligar a HTML a verse bien. Al asumir esas tareas de diseño, CSS permite que HTML vuelva a hacer lo que mejor hace: estructurar el contenido. El uso de HTML para controlar el aspecto del texto y otros elementos de la página web está obsoleto. No se preocupe si HTML <h1>la etiqueta es demasiado grande para su gusto o las listas con viñetas no están espaciadas correctamente. Puedes encargarte de eso más tarde usando CSS. En su lugar, piense en HTML como un método para agregar estructura al contenido que desea publicar en la Web. Use HTML para organizar su contenido y CSS para que ese contenido se vea genial. Capítulo 1:HTML para CSS www.it-ebooks.info 19 escritura html para CSS Escribir HTML para CSS Si es nuevo en el diseño web, es posible que necesite algunos consejos útiles para guiar sus incursiones en HTML (y evitar las técnicas de HTML bien intencionadas pero desactualizadas). O si ha estado creando páginas web durante un tiempo, es posible que haya adquirido algunos malos hábitos de escritura HTML que es mejor que olvide. El resto de este capítulo le presenta algunos hábitos de escritura HTML que enorgullecerán a su madre y le ayudarán a sacar el máximo provecho de CSS. estructura de pensamiento HTML agrega significado al texto dividiéndolo lógicamente e identificando el papel que juega el texto en la página: por ejemplo, el <h1>La etiqueta es la introducción más importante al contenido de una página. Otros encabezados le permiten dividir el contenido en otras secciones menos importantes pero relacionadas. Al igual que el libro que tienes en la mano, por ejemplo, una página web debe tener una estructura lógica. Cada capítulo de este libro tiene un título (piense <h1>) y varias secciones (piensa <h2>),que a su vez contienen subsecciones más pequeñas. Imagínese cuánto más difícil sería leer estas páginas si cada palabra se juntara en un párrafo largo. NotaPara ver un tutorial sobre HTML, visitewww.w3schools.com/html/html_intro.asp. Para obtener una lista rápida de todas las etiquetas HTML disponibles, visite la referencia HTML de Sitepoint.com enhttp://referencia.sitepoint.com/html. HTML proporciona muchas otras etiquetas además de encabezados paramarcandocontenido para identificar su función en la página. (Después de todo, la M en HTML significamargen.) Entre los más populares están los <p>etiqueta para párrafos de texto y el <ul>etiqueta para crear listas con viñetas (no numeradas). Las etiquetas menos conocidas pueden indicar tipos de contenido muy específicos, como <abr>para abreviaturas y <código>para código de computadora. Cuando escriba HTML para CSS, use una etiqueta que se acerque al papel que juega el contenido en la página, no a la forma en que se ve (vea la Figura 1-2). Por ejemplo, un grupo de enlaces en una barra de navegación no es realmente un título y no es un párrafo normal de texto. Es más como una lista de opciones con viñetas, por lo que <ul>etiqueta es una buena opción. Si está diciendo, "Pero los elementos en una lista con viñetas están apilados verticalmente uno encima del otro, y quiero una barra de navegación horizontal donde cada enlace se encuentra junto al enlace anterior", no se preocupe. Con CSS magic, puede convertir una lista vertical de enlaces en una elegante barra de navegación horizontal, como se describe en el Capítulo 9. 20 Css3: el manual perdido www.it-ebooks.info escritura html para CSS Figura 1-2 Vieja escuela, nueva escuela. Antes de CSS, los diseñadores tenían que recurrir a la etiqueta <font> y otros HTML adicionales para lograr ciertos efectos visuales (arriba). Puede lograr el mismo aspecto (ya menudo uno mejor) con mucho menos código HTML (abajo). Además, el uso de CSS para formatear lo libera para escribir HTML que sigue la estructura lógica del contenido de la página. Dos etiquetas HTML a tener en cuenta La variada variedad de etiquetas de HTML no cubre la amplia gama de contenido que probablemente agregará a una página. Claro, <código>es excelente para marcar el código de un programa de computadora, pero la mayoría de la gente encontraría un <receta>etiqueta a mano. Menos mal que no hay uno. Afortunadamente, HTML proporciona dos etiquetas genéricas que le permiten identificar mejor el contenido y, en el proceso, proporciona "identificadores" que le permiten adjuntar estilos CSS a diferentes elementos de una página. Capítulo 1:HTML para CSS www.it-ebooks.info 21 escritura html para CSS Hasta la velocidad HTML simple es compatible con los motores de búsqueda Una vez que dé el salto mental de imaginar HTML como la forma de estructurar para el diseño, el motor de búsqueda puede perder contenido importante en la el contenido de un documento, y CSS como la herramienta para hacer que ese página o incluso no clasificarlo en absoluto. contenido se vea bien, descubrirá beneficios adicionales para escribir HTML simple y eficiente. Por un lado, puede aumentar su clasificación en los motores de búsqueda según lo determinado por sitios como Google, Yahoo y Bing. Eso es porque cuando los motores de búsqueda rastrean la Web, indexando el contenido de los sitios web, deben pasar por todoel HTML en una página para descubrir el contenido real. La antigua forma HTML de usar etiquetas especiales (como <fuente>)y muchas tablas para diseñar una página interfieren con el trabajo de un motor de búsqueda. De hecho, algunos motores de búsqueda dejan de leer el HTML de una página después de una cierta cantidad Por el contrario, HTML simple y estructurado es fácil de leer e indexar para un motor de búsqueda. Usando un <h1>etiqueta para indicar el tema más importante de la página (en lugar de solo hacer que el texto sea grande y en negrita) es una estrategia inteligente: los motores de búsqueda dan mayor peso al contenido dentro de esa etiqueta al indexar la página. Para ver las sugerencias de Google para crear sitios web aptos para búsquedas, visitehttp://support.google.com/webmasters/ bin/answer.py?hl=en&answer=35769. de caracteres. Cuando usas mucho HTML solo ENTENDIENDO LAS ETIQUETAS <DIv> Y <SPAN> El <div>etiqueta y el <lapso>Las etiquetas son como recipientes vacíos que llenas de contenido. Un div es un bloque, lo que significa que tiene un salto de línea antes y después, mientras que un lapso aparece en línea, como parte de un párrafo. De lo contrario, los divs y spans no tienen propiedades visuales inherentes, por lo que puede usar CSS para que se vean de la forma que desee. El <div> (paradivisión) indica cualquier bloque discreto de contenido, como un párrafo o un título. Pero más a menudo se usa para agrupar cualquier número deotroelementos, por lo que puede insertar un título, un montón de párrafos y una lista con viñetas dentro de un solo <div>bloquear. El <div>La etiqueta es una excelente manera de subdividir una página en áreas lógicas, como un banner, un pie de página, una barra lateral, etc. Usando CSS, puede posicionar más tarde cada área para crear diseños de página sofisticados (un tema que se cubre en la Parte III de este libro). El <lapso>la etiqueta se usa paraen líneaelementos; es decir, palabras o frases que aparecen dentro de un párrafo o encabezado más grande. Trátelo como otras etiquetas HTML en línea, como <un> etiqueta (para agregar un enlace a algún texto en un párrafo) o el <fuerte> etiqueta (para enfatizar una palabra en un párrafo). Por ejemplo, podría usar un <lapso> etiqueta para indicar el nombre de una empresa y, a continuación, utilice CSS para resaltar el nombre utilizando una fuente, color, etc. diferentes. Aquí hay un ejemplo de esas etiquetas en acción, completo con un adelanto de un par de atributos:identificaciónyclase-se utiliza con frecuencia para adjuntar estilos a partes de una página. <div id="pie de página"> <p>Derechos de autor 2006,<abarcan clase="nombre del negocio">cosmofarmer.com</span></p> <p>Llame al servicio de atención al cliente al 555-555-5501 para obtener más información</p> </div> 22 Css3: el manual perdido www.it-ebooks.info Esta breve introducción no es la última que verá de estas etiquetas. Se usan con frecuencia en páginas web con mucho CSS, y en este libro aprenderá a usarlos en combinación con CSS para escritura html para CSS obtener control creativo sobre sus páginas web. ETIQUETAS ADICIONALES EN HTML5 El <div>La etiqueta es bastante genérica: es simplemente un elemento a nivel de bloque que se usa para dividir una página en secciones. Uno de los objetivos de HTML5 es proporcionar otros, más semántico etiquetas para que los diseñadores web elijan. Hacer que su HTML sea más semántico simplemente significa usar etiquetas que describan con precisión el contenido que contienen. Como se mencionó anteriormente en esta sección, debe usar el <h1> (encabezado 1) etiqueta al colocar texto que describe el contenido principal de una página. Asimismo, el <código>La etiqueta le dice claramente qué tipo de información se coloca dentro: código de programación. HTML5 incluye muchas etiquetas diferentes cuyos nombres reflejan el tipo de contenido que contienen y se pueden usar en lugar de <div>etiqueta. El <artículo>La etiqueta, por ejemplo, se usa para marcar una sección de una página que contiene una composición completa e independiente... en otras palabras, un "artículo" como en una publicación de blog, un artículo de una revista en línea o simplemente el texto principal de la página. . Asimismo, el <encabezado>etiqueta indica un encabezado o banner, la parte superior de una página que generalmente contiene un logotipo, navegación en todo el sitio, título de página y eslogan, etc. NotaPara obtener más información sobre las nuevas etiquetas HTML, visite HTML5 Doctor (http://html5doctor.com) y www.w3schools.com/html5/html5_intro.asp. Muchas de las nuevas etiquetas HTML5 están destinadas a expandir el genérico <div>Aquí hay algunas otras etiquetas HTML5 que se usan con frecuencia para estructurar el contenido de una página: • El<sección>La etiqueta contiene una agrupación de contenido relacionado, como el capítulo de un libro. Por ejemplo, puede dividir el contenido de una página de inicio en tres secciones: una para la introducción al sitio, otra para la información de contacto y otra para las últimas noticias. • El<aparte>La etiqueta contiene contenido que está relacionado con el contenido que lo rodea. Una barra lateral en una revista impresa, por ejemplo. • El<pie de página>La etiqueta contiene información que normalmente colocaría en el pie de página de una página, como un aviso de derechos de autor, información legal, algunos enlaces de navegación del sitio, etc. Sin embargo, no está limitado a un solo <pie de página>por página; puedes poner un pie de página dentro de un <artículo>,por ejemplo, para contener información relacionada con ese artículo, como notas al pie, referencias o citas. • El<navegación>El elemento se utiliza para contener enlaces de navegación principales. • El<figura>la etiqueta se utiliza para una figura ilustrativa. Puede colocar un <imagen> dentro de ella, así como otra nueva etiqueta HTML5: la <figcaption>etiqueta, que se utiliza para mostrar una leyenda que explica la foto o la ilustración dentro del <figura>. Capítulo 1:HTML para CSS www.it-ebooks.info 23 escritura html para CSS CONSEJOComprender qué etiqueta HTML5 usar: si su texto debe ser un <artículo>o un <sección>?—puede ser complicado. Para obtener un diagrama de flujo útil que tenga sentido para los nuevos elementos de seccionamiento de HTML5, descargue el PDF de HTML5doctor.com enhttp://html5doctor.com/downloads/h5d-sectioning-flowchart.pdf. Hay otros elementos de HTML5, y muchos de ellos simplemente proporcionan una alternativa más descriptiva a <div>etiqueta. Este libro utiliza tanto el <div>y las nuevas etiquetas HTML5 para ayudar a organizar el contenido de la página web. La desventaja de HTML5 es que Internet Explorer 8 y versiones anteriores no reconocen las nuevas etiquetas sin un poco de ayuda (consulte el cuadro a continuación). Además, además de sentirse como si estuviera al día con las últimas tendencias de diseño web, realmente no hay ningún beneficio tangible en el uso de algunas de estas etiquetas HTML5. Por ejemplo, simplemente usando el <artículo>etiqueta para contener la historia principal en una página web, no hace que Google le quiera más. Puede seguir utilizando cómodamente el <div>y evite los elementos de seccionamiento de HTML5 si lo desea. TALLER DE TRABAJO Conseguir que IE 8 entienda HTML5 HTML5 proporciona muchas etiquetas HTML nuevas para jugar. Desde <secuencia de comandos src="//html5shiv.googlecode.com/svn/ etiquetas que describen claramente el tipo de contenido que tienen, trunk/html5.js"></secuencia de comandos> como el <navegación>etiqueta, a las que proporcionan funcionalidad <![finalizar]--> adicional, como la <vídeo>etiqueta para incrustar videos y el <sonido> etiqueta para incrustar sonido y música. A medida que aprenda más sobre HTML5, probablemente comenzará a aplicar estas nuevas etiquetas a sus páginas web. Este complicado código usa lo que se llama un "comentario condicional de Internet Explorer" (IECC para abreviar) para incrustar un poco de código JavaScript que solo es visible para las versiones de Internet Explorer anteriores a IE 9. En otras palabras, solo IE 6, 7 y 8 responden a este código, y todos los demás Desafortunadamente, Internet Explorer 8 y versiones anteriores no navegadores (incluidas las versiones más nuevas de IE) simplemente lo reconocen estas nuevas etiquetas y no responderán a ningún CSS que ignoran. Este código hace que las versiones anteriores de IE carguen un les apliques. Así es, si usa HTML5 y ve páginas web en IE 8, este libro no pequeño programa de JavaScript que obliga al navegador a reconocer las le servirá de nada. Bueno no exactamente. Hay una manera de poner en etiquetas HTML5 y aplicar el CSS que se aplica a esas etiquetas. marcha esas versiones antiguas de IE, para que entiendan todo el CSS que se aplica a las etiquetas HTML5. Este código solo afecta la forma en que el navegador muestra e imprime etiquetas HTML5; no hace que el navegador “entienda” una Simplemente coloque el siguiente código antes de la etiqueta de cierre </head> en la etiqueta HTML5 que realmente hace algo. Por ejemplo, IE 8 y anteriores parte superior de su archivo HTML: no entienden el <vídeo>etiqueta y no puede reproducir video HTML5 (incluso con el código JavaScript agregado). <!--[si es IE 9]> Tenga en cuenta su diseño Mientras usarás el <h1>etiqueta para identificar el tema principal de la página y el <p>etiqueta para agregar un párrafo de texto, eventualmente querrá organizar el contenido de una página en un diseño agradable. A medida que aprende a usar CSS para diseñar una página en la Parte Tres de este libro, no está de más tener en cuenta su diseño mientras escribe el HTML de la página. 24 Css3: el manual perdido www.it-ebooks.info Puede pensar en el diseño de la página web como la ingeniosa disposición de los cuadros (consulte la Figura 1-3 para ver un ejemplo). Después de todo, un diseño de dos columnas que consta de dos columnas escritura html para CSS verticales de texto es en realidad solo dos cuadros rectangulares colocados uno al lado del otro. Un encabezado que consta de un logotipo, un eslogan, un cuadro de búsqueda y la navegación del sitio es en realidad solo un cuadro rectangular ancho que se encuentra en la parte superior de la ventana del navegador. En otras palabras, si imagina las agrupaciones y el diseño del contenido en una página, verá cajas colocadas una encima de la otra, una al lado de la otra y una debajo de la otra. Figura 1-3 Este básico de dos columnas el diseño incluye un banner (arriba), una columna de contenido principal (centro, izquierda), una barra lateral (centro, derecha) y un pie de página (abajo). Estos son los principales cajas estructurales que componen el diseño de esta página. En su HTML, crea estas cajas, o unidades estructurales, usando el <div>etiqueta. Simplemente envuelva las etiquetas HTML que componen el área del banner, por ejemplo, en un div, el valor de una columna de HTML en otro, y así sucesivamente. Si tiene conocimientos de HTML5, puede crear el diseño que se muestra en la Figura 1-3, con un <encabezado>etiqueta para el banner superior, una <artículo>etiqueta para el texto principal, un <aparte>o <sección>etiqueta para la barra lateral, y un < pie de página>etiqueta para el pie de página de la página. En otras palabras, si planea colocar un grupo de etiquetas HTML juntas, en algún lugar de una página, deberá envolver esas etiquetas en un elemento de sección como un <div>, <artículo>, <sección>,o <aparte>. Capítulo 1:HTML para CSS www.it-ebooks.info 25 escritura html para CSS HTML para olvidar CSS le permite escribir HTML más simple por una gran razón: puede dejar de usar un montón de etiquetas y atributos que solo hacen que una página se vea mejor. El <fuente>tag es el ejemplo más evidente. Su único propósito es agregar un color, tamaño y fuente al texto. No hace nada para que la estructura de la página sea más comprensible. Aquí hay una lista de etiquetas y atributos que puede reemplazar fácilmente con CSS: • Zanja <fuente>para controlar la visualización de texto.CSS hace un trabajo mucho mejor con el texto. (Consulte el Capítulo 6 para conocer las técnicas de formateo de texto). • No use el <segundo>y <yo>etiquetas para enfatizar el texto.Si desea que el texto realmente se enfatice, use el <fuerte>etiqueta, que los navegadores normalmente muestran en negrita. Para un punto un poco menos enfático, use el <em>etiqueta, que los navegadores muestran en cursiva. Mientras que HTML4 trató de poner en fase el <segundo>y <yo>etiquetas, HTML5 las ha traído de vuelta. En HTML5 el <segundo>La etiqueta está destinada simplemente a poner el texto en negrita sin agregar ningún significado a ese texto (es decir, solo desea que el texto se vea en negrita, pero no quiere que las personas traten ese texto como si lo estuviera gritando). Asimismo, el <yo>La etiqueta se utiliza para poner texto en cursiva, pero sin enfatizar su significado. NotaPara poner en cursiva el título de una publicación, el <citar>etiqueta mata dos pájaros de un tiro. Pone el titulo cursiva ylo etiqueta como un trabajo citado para el beneficio de los motores de búsqueda. Este es un guardián. • Saltar el <mesa>etiqueta para el diseño de página.Úselo solo para mostrar información tabular como hojas de cálculo, horarios y gráficos. Como verá en la Parte Tres de este libro, puede hacer todo su diseño con CSS por mucho menos tiempo y código que el tango de etiquetas de tabla. • Evita lo incómodo <cuerpo>atributos de etiquetaque mejoran únicamente la presentación del contenido:fondo, bgcolor, texto, enlace, alink,yvenlaceestablecer colores e imágenes para la página, el texto y los enlaces. CSS hace mejor el trabajo (consulte el Capítulo 7 y el Capítulo 8 para conocer los equivalentes CSS de estos atributos). • No abuses del <br>etiqueta.Si creciste usando el <br>etiqueta (<br />en xHTML) para insertar un salto de línea sin crear un nuevo párrafo, entonces te espera una sorpresa. (Los navegadores insertan automáticamente, y a veces de manera exasperante, un poco de espacio entre párrafos, incluso entre encabezados y <p>etiquetas En el pasado, los diseñadores usaban soluciones elaboradas para evitar el espacio entre párrafos que no querían, como reemplazar un único <p>etiqueta con un montón de saltos de línea y usando un <fuente>etiqueta para hacer la primera línea del párrafopareceun título.) Usando los controles de margen de CSS, puede establecer fácilmente la cantidad de espacio que desea ver entre párrafos, encabezados y otros elementos a nivel de bloque. 26 Css3: el manual perdido www.it-ebooks.info NotaEn el próximo capítulo, aprenderá acerca de una técnica llamada "Restablecimiento de CSS", que elimina los espacios que los navegadores normalmente insertan entre párrafos y otras etiquetas (consulte la página 115). escritura html para CSS Como regla general, agregar atributos a las etiquetas que establecen colores, bordes, imágenes de fondo o alineación, incluidos los atributos que le permiten dar formato a los colores, fondos y bordes de una tabla, es HTML puro de la vieja escuela. También lo es el uso de propiedades de alineación para posicionar imágenes y centrar texto en párrafos y celdas de tablas. En su lugar, consulte CSS para controlar la ubicación del texto (página 169), los bordes (página 202), los fondos (página 206) y la alineación de la imagen (página 239). Hasta la velocidad Valida tus páginas web HTML sigue ciertas reglas: por ejemplo, el <html>etiqueta envuelve las otras El W3C, o World Wide Web Consortium, es la organización etiquetas en una página, y el <título>la etiqueta debe aparecer dentro de < responsable de determinar los estándares para muchas de cabeza>etiqueta. XHTML proporciona un conjunto de reglas aún más estricto a las tecnologías y lenguajes de la Web, incluidos HTML y CSS. seguir, mientras que HTML5 es un poco más laxo. Es fácil olvidar estas reglas o simplemente cometer un error tipográfico. incorrecto (oinválido, como dirían Si el validador W3C encuentra algún error en su página, le dice cuáles son esos errores. Si usa Firefox, puede descargar una extensión que le los geeks) HTML causa problemas como hacer que su página se vea diferente permite validar una página web directamente en ese navegador, sin en diferentes navegadores web. Más importante aún, es posible que incluso un tener que visitar el sitio W3C. Incluso puede intentar solucionar CSS válido no funcione como se esperaba con HTML no válido. cualquier problema que encuentre. Puede obtener la extensión aquí: Afortunadamente, existen herramientas para comprobar si el HTML de tus http://users.skynet.be/mgueury/mozilla/. Los usuarios de Chrome páginas web está escrito correctamente. pueden descargar la extensión HTML Tidy para Chrome desdehttp:// La forma más fácil de comprobar, es decir,validar—sus páginas están en bit.ly/SCONRY. Una herramienta similar también está disponible para el el sitio web del W3C enhttp://validador.w3.org(ver Figura 1-4). Obtén la navegador Safari:www.zappatic.net/safaritidy. extensión Web Developer para Firefox (http://chrispederick. com/ trabajo/desarrollador web); proporciona una forma rápida de probar una página en el validador W3C. Capítulo 1:HTML para CSS www.it-ebooks.info 27 escritura html para CSS Figura 1-4 El validador HTML W3C ubicado enhttp://validador. w3.orgle permite asegurarse rápidamente de que el código HTML de una página sea correcto. Puede apuntar el validador a una página ya existente en la Web, cargar un archivo HTML desde su computadora o simplemente pegar el HTML de una página web en un cuadro de formulario y luego hacer clic en el botón Verificar. Consejos para guiar tu camino Siempre es bueno tener un mapa para obtener la configuración del terreno. Si aún no está seguro de cómo usar HTML para crear páginas web bien estructuradas, aquí hay algunos consejos para comenzar: • Usar encabezados para indicar la importancia relativa del texto. Una vez más, piense en el esquema. Cuando dos encabezados tienen la misma importancia en el tema de su página, use el mismo nivel de encabezado en ambos. Si uno es menos importante o un subtema del otro, utilice el encabezado del siguiente nivel. Por ejemplo, siga un <h2>con un <h3>etiqueta (consulte la Figura 1-5). En general, es bueno usar los encabezados en orden y tratar de no omitir los números de los encabezados. Por ejemplo, no siga un <h2>etiqueta con un <h5>etiqueta. 28 Css3: el manual perdido www.it-ebooks.info escritura html para CSS Figura 1-5 Utilice las etiquetas de título (<h1>,<h2>, etcétera) como lo haría si estuviera redactando un informe escolar: póngalos en orden de importancia, comenzando con un<h1>etiqueta, que debería gritar “¡Escucha! De esto se trata toda esta página”. • Utilizar el<p>etiqueta para párrafos de texto. • Usar listas desordenadas (<ul>) cuando tiene una lista de varios elementos relacionados, como enlaces de navegación, titulares o un conjunto de sugerencias como estas. • Usar listas numeradas (<ol>) para indicar pasos en un proceso o definir el orden de un conjunto de elementos. Los tutoriales de este libro son un buen ejemplo, al igual que una lista de clasificaciones como "Los 10 sitios web más populares entre los monjes". • Para crear un glosario de términos y sus definiciones o descripciones, utilice el<dl> (lista de definiciones) junto con la etiqueta<dt>(término de definición) y<dd>(definición descripción) etiquetas. (Para ver un ejemplo de cómo usar este combo, visitewww . w3schools.com/tags/tryit.asp?filename=tryhtml_list_definition.) • Si desea incluir una cita como un fragmento de texto de otro sitio web, una reseña de una película o simplemente un dicho sabio de su abuelo, pruebe el<cita en bloque>etiqueta para pasajes largos o la<q>etiqueta para colocar una cita corta dentro de un párrafo más largo, como este: <p>Se dice que Mark Twain escribió <q>El invierno más frío que pasé fue un verano en San Francisco</q>. Desafortunadamente, en realidad nunca escribió esa famosa cita.</ p> • Aproveche las etiquetas oscuras como la<citar>etiqueta para hacer referencia a un título de libro, artículo de periódico o sitio web, y la<dirección>etiqueta para identificar y proporcionar información de contacto para el autor de una página (excelente para un aviso de derechos de autor). Capítulo 1:HTML para CSS www.it-ebooks.info 29 El importancia del tipo de documento • Como se explica en su totalidad en la página 26, manténgase alejado de cualquier etiqueta o atributo cuyo objetivo sea simplemente cambiar la apariencia de un texto o una imagen. CSS, como verá, puede hacerlo todo. • Cuando simplemente no hay una etiqueta HTML que se ajuste a la factura, pero desea identificar un elemento en una página o un grupo de elementos en una página para poder aplicar una apariencia distintiva, use el<div>y<lapso>etiquetas (consulte la página 21). Obtendrá más consejos sobre cómo usarlos en capítulos posteriores. • No abusar<div>etiquetas Algunos diseñadores web creen que todo lo que necesitan es<div>etiquetas, ignorando las etiquetas que podrían ser más apropiadas. Por ejemplo, para crear una barra de navegación, puede agregar un<div>etiquete a una página y llénela con un montón de enlaces. Un mejor enfoque sería utilizar una lista con viñetas (<ul>etiqueta), después de todo, una barra de navegación es realmente solo una lista de enlaces. Como se discutió en la página 23, HTML5 proporciona varias etiquetas nuevas que pueden tomar el lugar del<div> etiqueta, como la<artículo>,<sección>, y<pie de página>etiquetas Para una barra de navegación, podría usar HTML5<navegación>etiqueta. • Recuerde cerrar las etiquetas. La apertura<p>etiqueta necesita su socio en el crimen (el cierre</p> etiqueta), al igual que todas las demás etiquetas, excepto los pocos que se cierran a sí mismos como< br>y <img>(<br />y <imagen />en xHTML). • Valide sus páginas con el validador W3C (vea la Figura 1-4 y el cuadro en la página 27). HTML mal escrito o con errores tipográficos causa muchos errores extraños en el navegador. La importancia del Doctype HTML sigue ciertas reglas, estas reglas están contenidas en unDefinición de tipo de documento archivo, también conocido como DTD. Una DTD es un archivo de texto que explica qué etiquetas, atributos y valores son válidos para un tipo particular de HTML. Y para cada versión de HTML, hay una DTD correspondiente. A estas alturas te estarás preguntando: "¿Pero qué tiene que ver todo esto con CSS?" Todo, si desea que sus páginas web aparezcan correcta y consistentemente en los navegadores web. Le dices a un navegador web qué versión de HTML o xHTML estás usando al incluir lo que se llama un declaración de tipo de documentoal principio de una página web. Esta declaración de tipo de documento es la primera línea del archivo HTML y define qué versión de HTML está utilizando (como HTML5 o HTML 4.01 de transición). Cuando escribe mal la declaración de tipo de documento o la omite, puede llevar a la mayoría de los navegadores a un estado alterado llamadoen modo capricho. El modo Quirks es el intento de los fabricantes de navegadores de hacer que su software se comporte como lo hacían los navegadores alrededor de 1999 (en los días de Netscape 4 e Internet Explorer 5). Si un navegador moderno encuentra una página a la que le falta el tipo de documento correcto, entonces piensa: “Vaya, esta página debe haber sido escrita hace mucho tiempo, en un editor HTML muy, muy lejano. Fingiré que soy un navegador muy antiguo y mostraré la página como uno de esos 30 Css3: el manual perdido www.it-ebooks.info El importancia los viejos navegadores con errores lo mostrarían”. Es por eso que, sin un tipo de documento correcto, es posible que sus páginas web con un estilo amoroso de CSS no se vean como deberían, de acuerdo con los del tipo de documento estándares actuales. Si, sin darse cuenta, ve su página web en modo peculiar cuando la revisa en un navegador, puede terminar tratando de solucionar los problemas de visualización que están relacionados con un tipo de documento incorrecto y no con el uso incorrecto de HTML o CSS. NotaPara obtener más información (léase: técnica) sobre el modo de peculiaridades, visitewww.quirksmode.org/css/quirksmode . htmlyhttps://developer.mozilla.org/en/Mozilla%2527s_Modo_Quirks. Afortunadamente, es fácil obtener el tipo de documento correcto. Todo lo que necesita saber es qué versión de HTML está utilizando. Si está utilizando HTML5, las cosas son fáciles. El doctype es simplemente: <!doctipo html> Pon esto en la parte superior de tu archivo HTML y listo. Si aún usa versiones anteriores de HTML o xHTML, como HTML 4.01 Transitional y xHTML 1.0 Transitional, entonces el tipo de documento es mucho más complicado. Si está utilizando HTML 4.01 de transición, por ejemplo, escriba la siguiente declaración de tipo de documento al principio de cada página que cree: <!DOCTYPE HTML PÚBLICO "-//W3C//DTD HTML 4.01 Transicional//EN" "http:// www.w3.org/TR/html4/loose.dtd"> La declaración de doctype para xHTML 1.0 Transitional es similar. También es necesario agregar un pequeño código a la etiqueta de apertura <html> que se usa para identificar el tipo xML del archivo, en este caso, es xHTML, así: <!DOCTYPE html PÚBLICO "-//W3C//DTD XHTML 1.0 Transicional//EN" "http:// www.w3.org/TR/xhtml1/DTD/xhtml1-transicional.dtd"> <htmlxmlns="http://www.w3.org/1999/xhtml"> Si toda esta discusión le causa dolor de cabeza y sus ojos se cierran lentamente, simplifique su vida usando el tipo de documento HTML5. Es breve, fácil de recordar y funciona en todos los navegadores. Puede usar este tipo de documento incluso si no toca ninguna de las nuevas etiquetas HTML5. NotaLa mayoría de las herramientas de páginas web visuales, como Dreamweaver y Expression Web, agregan automáticamente una declaración de tipo de documento cada vez que crea una nueva página web, y muchos editores de texto con conocimientos de HTML tienen accesos directos para agregar tipos de documento. Capítulo 1:HTML para CSS www.it-ebooks.info 31 Asegurándose Internet EXPLORADOR ES A hoy Preguntas frecuentes ¿Debería preocuparme por IE 6, 7 u 8? Sigo escuchando que Internet Explorer 6 está muerto y que ya no para Google Analytics (www.google.com/analytics) para que pueda tenemos que preocuparnos por eso. ¿Es esto cierto? ¿Qué pasa con rastrear los navegadores de sus visitantes (entre muchas otras cosas). otras versiones de IE? Para la gran mayoría de los proyectos de diseño web, IE 6 ya no existe. Si es diseñador web, probablemente tenga la última versión de Internet Además, IE 7 también está desapareciendo rápidamente, con solo el Explorer, Firefox, Safari, Chrome u Opera en su computadora. Las 1,16 por ciento de participación de mercado mundial en agosto de 2012 versiones anteriores de este libro hablaban bastante sobre Internet (ht tp: // gs. statcounter.com/#browser_version- Explorer 6 e incluso proporcionaban una sección sobre cómo tratar los wwmonthly-201108-201208). errores de IE 6. Todo eso ha sido eliminado, ya que IE 6 está Sin embargo, aún debe lidiar con IE 8. Windows XP sigue siendo desapareciendo rápidamente. un sistema operativo popular y Microsoft decidió no llevar Si está creando sitios con una audiencia de EE. UU. en mente, a partir de agosto Internet Explorer 9 o posterior a ese sistema operativo. Así que de 2012, menos del 0,6 por ciento de los internautas de EE. UU. usan ese mientras exista XP, también existirá Internet Explorer 8. (Para navegador obsoleto; en el Reino Unido, es del 1,1%. La cifra exacta varía según mantenerse al día con los avances en el desarrollo web, los a quién le preguntes (por ejemplo,http://gs.statcounter.comtiene un uso usuarios de XP pueden cambiar a Chrome o Firefox). Según mundial de IE 6 de 0,57 por ciento ywww.ie6countdown. comdice que es del 6 StatCounter, en agosto de 2012, IE 8 representó el 13,65 por por ciento a partir de agosto de 2012). En China, IE 6 todavía se usa ciento de todos los navegadores web (ht tp://gs .statcounter.com/ #browser_ver sionww-monthly-201108-201208). Según ampliamente. Sin embargo, incluso las estadísticas que incluyen la región geográfica de la audiencia de su sitio no reflejan realmente lo que usan los visitantes de su sitio. Si crea un sitio dirigido a diseñadores web expertos en tecnología, lo más probable es que IE 6 no haya estado en su sitio en mucho tiempo. Sin embargo, si su sitio está dirigido a personas en China, es posible que deba lidiar con IE 6. La mejor manera de averiguar cuánto de su tráfico proviene de IE 6 es mirar los NetMarketShare, IE 8 representa la friolera de 26 por ciento de los navegadores web (ht tp: //market share.hit sl ink.com/browser- market-share. aspx?qprid=2&qpcustomd=0). Dado que IE 8 no comprende las etiquetas HTML5, tampoco puede formatearlas directamente con CSS; debe recurrir a una solución alternativa de JavaScript como se describe en el cuadro de la página 24. archivos de registro de su servidor web o firmar Asegurarse de que Internet Explorer esté actualizado Gracias a la función de actualización automática de Microsoft, las PC con Windows ahora actualizan Internet Explorer a la última versión. Los usuarios de Windows 7 y 8 tienen instalada la última versión de Internet Explorer: IE 10 en el momento de escribir este artículo. IE 10 es compatible con muchas de las nuevas y emocionantes propiedades de HTML5 y CSS3. Como aprenderá en este libro, CSS3 ofrece muchas posibilidades de diseño interesantes, como sombras paralelas (página 210), fondos degradados (página 259) y esquinas redondeadas (página 207), por nombrar algunas. 32 Css3: el manual perdido www.it-ebooks.info Asegurándose Internet Lamentablemente, no todos los usuarios de Windows podrán aprovechar estos avances en el diseño web. Como se explica en el recuadro de la página 32, el sistema operativo Windows xP, EXPLORADOR ES A hoy ampliamente utilizado, solo puede ejecutar Internet Explorer 8 o anterior. De hecho, IE 8 sigue siendo la versión más común de Internet Explorer utilizada en la Web. Este libro señalará las propiedades de CSS que no funcionarán en IE 8, así como las posibles soluciones. Debido a que IE 8 sigue siendo muy popular, debe tener en cuenta un par de cosas. IE 8 es como un camaleón: puede adoptar la apariencia de una versión diferente. Si no tiene cuidado, es posible que no muestre sus páginas web de la forma que desea. Por ejemplo, y lo más importante, debe incluir un tipo de documento adecuado. Como se mencionó en la sección anterior, sin un tipo de documento, los navegadores cambian al modo peculiar. Bueno, cuando IE 8 entra en modo peculiar, intenta replicar el aspecto de IE 5 (!?). ¡Pero espera hay mas! IE 8 también puede pretender ser IE 7. Cuando alguien que ve su sitio en IE 8 hace clic en un botón de "vista de compatibilidad", IE 8 entra en modo IE 7, mostrando páginas sin las bondades completas de CSS 2.1 de IE 8. Lo mismo sucede si Microsoft coloca su sitio web en su Lista de vista de compatibilidad, una lista de sitios que Microsoft ha determinado que se ven mejor en IE 7 que en IE 8. Si está diseñando un sitio siguiendo las pautas de este libro, no No quiero que IE 8 actúe como IE 7...alguna vez. Afortunadamente, hay una manera de decirle a IE 8 que deje de hacer todas estas tonterías y sea solo IE 8. Agregar una sola etiqueta META a una página web le indica a IE 8 que ignore la Vista de compatibilidad y la Lista de vista de compatibilidad y siempre muestre la página usando su modo compatible con los estándares: <meta http-equiv="X-UA-Compatible" content="IE=edge" /> Ponga esta instrucción en la página <cabeza>sección (debajo de <título>la etiqueta es un buen lugar). Esta etiqueta también funciona para las versiones actuales de IE: The "IE = borde"parte de la etiqueta indicará a las versiones de Internet Explorer posteriores a IE 8 que también muestren páginas web en su modo estándar. Desafortunadamente, debe hacer esto en cada página de su sitio. Ahora que su nave HTML se dirige en la dirección correcta, es hora de saltar a las cosas divertidas (y la razón por la que compró este libro): hojas de estilo en cascada. Capítulo 1:HTML para CSS www.it-ebooks.info 33 Asegurándose Internet EXPLORADOR ES A hoy Hasta la velocidad Pruebas entre navegadores Hay un montón de navegadores web por ahí. Si usa Windows, obtiene ambos sistemas operativos. Es la técnica de prueba más eficiente para los automáticamente Internet Explorer y puede instalar navegadores usuarios de Mac. Tanto Boot Camp como el software de virtualización adicionales como Firefox, Safari, Opera o Chrome de Google. En una requieren una copia del sistema operativo Windows. Mac, puede seguir con el navegador Safari ya instalado o ejecutar Todos. Otra opción que funciona tanto para Windows como para Mac y Firefox o Chrome. Si bien los navegadores más recientes son en su que no requiere la instalación de software adicional es uno de los mayoría comparables cuando muestran páginas web basadas en CSS, muchos servicios de prueba entre navegadores que le permiten ver no se puede decir lo mismo de IE 8, que todavía se usa ampliamente. cómo se ven sus páginas en muchos sistemas operativos y navegadores diferentes. Para asegurarse realmente de que sus sitios funcionen para la audiencia más • CrossBrowserTesting.com(http://CrossBrowser Testing grande, necesita una forma de probar sus diseños en la mayor variedad de . com) cuesta $30 al mes (ay) por 150 minutos de uso y ofrece un navegadores posible. Aquí hay algunas técnicas: beneficio adicional: pruebas interactivas. Puede ver su página ventanas. Normalmente, las computadoras con Windows solo pueden ejecutándose de forma remota en una PC bajo su control; puede ejecutar una versión de IE; no puede probar en IE 6, IE 7 e IE 8 en la probar funciones que una captura de pantalla no puede capturar, misma computadora. Bueno, normalmente no puedes, perotúpuedes si como la reproducción de películas Flash, la animación y las corres maquinas virtualesen su computadora con Windows para crear versiones completamente separadas de Internet Explorer que luego puede probar. Es una buena cantidad de trabajo, pero le brinda la forma interacciones de JavaScript. • que le permite probar sus páginas de forma interactiva a más precisa de probar una página en múltiples versiones de IE. Visita través de su navegador web. Por $19 al mes, es como www.howtogeek.com/102261/how-to-run-internet-explorer-7-8-and-9- alquilar varias máquinas Windows y Mac con varias at-the-same-time-using-virtual-machinespara obtener más información sobre cómo hacer esto. También debe instalar los otros navegadores principales en su computadora: Firefox, Opera y Chrome. Apple ha descontinuado Safari para Windows, por lo NavegadorPila(www.navegadorstack.com) es otro servicio versiones de IE, Chrome, Firefox y Safari instaladas. • B row ers hot s(www. cejas ershots. organización) es una alternativa gratuita que proporciona capturas de pantalla para una amplia gama de navegadores en Windows y Linux. que simplemente puede confiar en Chrome (que tiene un motor de renderizado subyacente similar) o usar uno de los servicios que se enumeran más adelante en este cuadro (como Adobe Browserlab) para probar sus diseños en Safari. Mac. La prueba es un poco más complicada para la gente de Mac. Tútenerpara probar en Internet Explorer: sigue siendo uno de los navegadores más utilizados en el mundo, y la falta de la mayoría de las propiedades de CSS3 en IE 8 significa que su diseño minuciosamente diseñado puede verse muy bien para usted, pero se desmorona en IE 8. Tiene un pocas opciones: primero, puede comprar (o pedir prestada) una máquina con Windows; segundo, si tiene una Mac con Intel, puede instalar Windows usando el software Boot Camp de Apple (www.apple.com/macosx/features/bootcamp.html); una tercera opción es instalar software de virtualización como VMware Fusion o Parallels Desktop en su Mac. Este software le permite ejecutar una máquina virtual de Windows en paralelo con Mac OS. Puede saltar entre Mac y Windows para probar en incluso 5.5 de forma gratuita conNetRenderer(http://ipinfo. info/netrenderer), aunque. Debe tener las páginas que desea probar en un sitio web de acceso público. Visitahttp:// ipinfo.info/netrenderer, escriba la URL de la página y, en unos instantes, verá una captura de pantalla. Desafortunadamente, no toma una imagen de una página web completa, solo la parte superior que normalmente vería en una pantalla. Por otro lado, es gratis. • Finalmente, puede usar Adobe'sNavegadorLabherramienta (https:// browserlab.adobe.com) para obtener instantáneas de una página web en todos los navegadores principales. Si usa Dreamweaver para crear sitios, por ejemplo, puede iniciar BrowserLab desde dentro del programa y obtener una vista previa de la página en la que está trabajando actualmente. varios navegadores en 34 • También puede ver cómo se ve una página en IE 9, 8 7, 6 e Css3: el manual perdido www.it-ebooks.info Capítulo 2 2 Creación de estilos y Hojas de estilo Incluso los sitios web más complejos y hermosos, como el de la Figura 2-1, comienzan con un solo estilo CSS. A medida que agrega varios estilos y hojas de estilo, puede desarrollar sitios web completos que inspiren a los diseñadores y sorprendan a los visitantes. Ya sea que sea un novato en CSS o un samurái de hojas de estilo, debe obedecer algunas reglas básicas sobre cómo crear estilos y hojas de estilo. En este capítulo, comenzará desde cero, aprendiendo los conceptos básicos de creación y uso de estilos y hojas de estilo. CONSEJOAlgunas personas aprenden mejor haciendo que leyendo. Si desea intentar crear estilos y hojas de estilo primero y luego volver aquí para leer lo que acaba de hacer, vaya a la página 43 para ver un tutorial práctico. Anatomía de un estilo Un solo estilo que define el aspecto de un elemento en una página es una bestia bastante básica. Básicamente, es solo una regla que le dice a un navegador web cómo formatear algo en una página web: convertir un título en azul, dibujar un borde rojo alrededor de una foto o crear un cuadro de barra lateral de 150 píxeles de ancho para contener una lista de enlaces. Si un estilo pudiera hablar, diría algo como: "Oye, navegador, hazestepareceeso.” De hecho, un estilo se compone de dos elementos: el elemento de la página web que formatea el navegador (elselector) y las instrucciones de formato reales (elbloque de declaración). Por ejemplo, un selector puede ser un título, un párrafo de texto, una foto, etc. Los bloques de declaración pueden convertir ese texto en azul, agregar un borde rojo alrededor de un párrafo, colocar la foto en el centro de la página: las posibilidades son infinitas. 35 www.it-ebooks.info ANATOMIA DE UN Estilo Figura 2-1 Cada web impulsada por CSS página comienza con un solo estilo CSS. Aquí, un estilo básico (abajo) sienta las bases para el cuerpo de toda la página (arriba). NotaLos tipos técnicos a menudo siguen el ejemplo del W3C y llaman a los estilos CSSnormas. Este libro usa los términos “estilo” y “regla” indistintamente. 36 Css3: el manual perdido www.it-ebooks.info Por supuesto, los estilos CSS no pueden comunicarse en un inglés claro y agradable como el párrafo anterior. Tienen su propio idioma. Por ejemplo, para establecer un color de fuente estándar y un ANATOMIA DE UN Estilo tamaño de fuente para todos los párrafos de una página web, debe escribir lo siguiente: pag {color: rojo; tamaño de fuente: 1,5 em; } Este estilo simplemente dice: "Haga que el texto en todos los párrafos, marcados con <p>etiquetas: rojas y de 1,5 cm de altura. (Unelloses una unidad de medida que se basa en el tamaño de texto normal de un navegador. Más sobre eso en el Capítulo 6). Como ilustra la Figura 2-2, incluso un estilo simple como este ejemplo contiene varios elementos: • Selector.Como se describió anteriormente, el selector le dice a un navegador web qué elemento o elementos de una página debe diseñar, como un título, un párrafo, una imagen o un enlace. En la Figura 2-2, elpagselector se refiere al <p>etiqueta. Este selector hace que los navegadores web formatee todo <p>etiquetas utilizando las instrucciones de formato de este estilo. Con la amplia gama de selectores que ofrece CSS y un poco de creatividad, dominará el formato de sus páginas. (El siguiente capítulo cubre los selectores en profundidad). • Bloque de declaración.El código que sigue al selector incluye todas las opciones de formato que desea aplicar al selector. El bloque comienza con una llave de apertura ({) y termina con una llave de cierre (}). • Declaración.Entre las llaves de apertura y cierre de un bloque de declaración, agrega uno o másdeclaraciones, o instrucciones de formato. Toda declaración consta de dos partes, unapropiedady unvalor. Dos puntos separan el nombre de la propiedad y su valor, y toda la declaración termina con un punto y coma. • Propiedad.CSS ofrece una amplia gama de opciones de formato, llamadaspropiedades. Una propiedad es una palabra, o unas pocas palabras con guión, que indica un cierto efecto de estilo. La mayoría de las propiedades tienen nombres sencillos comotamaño de fuente, margen superior,y texto alineado.por ejemplo, elcolor de fondoconjuntos de propiedades, lo has adivinado, un color de fondo. Aprenderá sobre montones de propiedades CSS a lo largo de este libro. Debe agregar dos puntos después del nombre de la propiedad para separarlo del valor. CONSEJOEl Apéndice A tiene un práctico glosario de propiedades CSS. • valor.Finalmente, puedes expresar tu genio creativo asignando unvalor a una propiedad CSS, por ejemplo, haciendo que el fondo sea azul, rojo, morado o chartreuse. Como se explica en los próximos capítulos, las diferentes propiedades de CSS requieren tipos específicos de valores: un color (comorojo,o #FF0000),una longitud (como18px, 200%, o 5em),una URL (comoimágenes/fondo.gif), o una palabra clave específica (comocentro Superior,oabajo). Capitulo 2:CREACIÓN DE ESTILOS Y HOJAS DE ESTILO www.it-ebooks.info 37 comprensión HOJAS DE ESTILO Figura 2-2 Un estilo (o regla) consta de dos partes principales: un selector, que indica a los navegadores web qué formatear, y un bloque de declaración, que enumera las instrucciones de formato que utilizan los navegadores para diseñar el selector. No necesita escribir un estilo en una sola línea, como se muestra en la Figura 2-2. Muchos estilos tienen múltiples propiedades de formato, por lo que puede hacerlos más fáciles de leer dividiéndolos en varias líneas. Por ejemplo, puede colocar el selector y la llave de apertura en la primera línea, cada declaración en su propia línea y la llave de cierre sola en la última línea, así: pag { color rojo; tamaño de fuente: 1,5 em; } Los navegadores web ignoran los espacios y las pestañas, así que siéntete libre de agregarlos para que tu CSS sea más legible. Por ejemplo, es útil sangrar las propiedades, ya sea con un tabulador o un par de espacios, para separar visiblemente el selector de las declaraciones, lo que facilita saber cuál es cuál. Además, poner un espacio entre los dos puntos y el valor de la propiedad es opcional, pero aumenta la legibilidad del estilo. De hecho, puede poner tanto espacio en blanco como desee entre los dos. Por ejemplo,color:rojo, color: rojo,ycolor rojotodo el trabajo. NotaNo olvide terminar cada par propiedad/valor con un punto y coma: color rojo; Omitir ese punto y coma puede hacer tropezar a los navegadores, romper su hoja de estilo y arruinar el aspecto de su página web. No se preocupe, este error es muy común, solo asegúrese de usar un validador de CSS, como se describe en el cuadro de la página 41. Comprender las hojas de estilo Por supuesto, un solo estilo no transformará una página web en una obra de arte. Puede hacer que sus párrafos se vean rojos, pero para infundir a sus sitios web un gran diseño, necesita muchos estilos diferentes. Una colección de estilos CSS comprende unhoja de estilo. Una hoja de estilo puede ser de dos tipos:internooexterno, dependiendo de si la información de estilo se encuentra en la propia página web o en un archivo separado vinculado a la página web. 38 Css3: el manual perdido www.it-ebooks.info comprensión Interno o externo: cómo elegir La mayoría de las veces, las hojas de estilo externas son el camino a seguir, ya que facilitan la creación de HOJAS DE ESTILO páginas web y la actualización de sitios web más rápido. Una hoja de estilo externa recopila toda su información de estilo en un solo archivo que luego vincula a una página web con solo una línea de código. Puede adjuntar la misma hoja de estilo externa a cada página de su sitio web, proporcionando un diseño unificado. También hace que un cambio de imagen completo del sitio sea tan fácil como editar un solo archivo de texto. En el extremo receptor, las hojas de estilo externas ayudan a que las páginas web se carguen más rápido. Cuando utiliza una hoja de estilo externa, sus páginas web pueden contener solo HTML básico, sin tablas HTML que acaparan bytes o <fuente>etiquetas y sin código de estilo CSS interno. Además, cuando un navegador web descarga una hoja de estilo externa, almacena el archivo en la computadora de su visitante (en una carpeta detrás de escena llamadacache) para un acceso rápido. Cuando su visitante salta a otras páginas del sitio que usan la misma hoja de estilo externa, no es necesario que el navegador descargue la hoja de estilo nuevamente. El navegador simplemente descarga el archivo HTML solicitado y extrae la hoja de estilo externa de su caché, un ahorro significativo en el tiempo de descarga. NotaCuando está trabajando en su sitio web y previsualizándolo en un navegador, el caché puede funcionar en su contra. Consulte el cuadro a continuación para obtener una solución alternativa. TALLER DE TRABAJO No te quedes atrapado en el caché El caché de un navegador es un gran impulso de velocidad para los navegantes editor y cambie el archivo CSS externo. Cuando regresa al navegador web. Cada vez que el caché descarga y almacena un archivo de uso frecuente, web y vuelve a cargar la página, ¡el cambio que acaba de hacer no como un archivo CSS externo o una imagen, guarda momentos preciosos aparece! Acabas de ser atrapado por el caché. Cuando vuelve a cargar viajando por las carreteras de Internet. En lugar de volver a descargar la una página web, los navegadores no siempre vuelven a cargar la hoja próxima vez que necesite el mismo archivo, el navegador puede ir de estilo externa, por lo que es posible que no esté viendo la última y directamente a las cosas nuevas, como una página o un gráfico que aún no se mejor versión de sus estilos. ha visto. Para solucionar este problema, puedeforzar recargauna página (que también Pero lo que es bueno para tus visitantes no siempre es bueno para ti. Debido a vuelve a cargar todos los archivos vinculados) presionando la tecla Ctrl (C)y que el navegador web almacena en caché y recupera los archivos CSS externos haciendo clic en el botón Recargar del navegador; Ctrl+F5 también funciona descargados, a menudo puede tropezarse mientras trabaja en el diseño de un para Chrome e Internet Explorer; Ctrl+Mayús+R (C-Shift-R) es el atajo de teclado sitio. Supongamos que está trabajando en una página que usa una hoja de de Firefox; y Ctrl + R (C-R) funciona tanto para Safari como para Chrome. estilo externa y obtiene una vista previa de la página en un navegador. Algo no se ve del todo bien, así que vuelves a tu web Capitulo 2:CREACIÓN DE ESTILOS Y HOJAS DE ESTILO www.it-ebooks.info 39 interno HOJAS DE ESTILO Hojas de estilo internas Una hoja de estilo interna es una colección de estilos que forma parte del código de la página web. Siempre aparece entre abrir y cerrar etiquetas HTML <style> en la página <cabeza>parte. Aquí hay un ejemplo: <estilo> h1 { color: #FF7643; familia tipográfica: Arial; } pag { color rojo; tamaño de fuente: 1,5 em; } </estilo> </cabeza> <cuerpo> <!-- El resto de su página sigue... --> NotaPuede colocar el <estilo>etiqueta y sus estilos después de <título>etiqueta en el encabezado de la página, pero los diseñadores web generalmente los colocan justo antes del cierre </cabeza>etiqueta como se muestra aquí. Si también usa JavaScript en sus páginas, agregue el código JavaScriptdespuésla hoja de estilo. Muchos programas de JavaScript se basan en CSS, por lo que al agregar su CSS primero, puede asegurarse de que el programa de JavaScript tenga toda la información que necesita para realizar su trabajo. La etiqueta <style> es HTML, no CSS. Pero su trabajo es decirle al navegador web que la información contenida en las etiquetas es código CSS y no HTML. Crear una hoja de estilo interna es tan simple como escribir uno o más estilos entre los <estilo>etiquetas NotaHTML5 simplemente requiere <estilo> para la etiqueta de apertura de una hoja de estilo interna. Las versiones anteriores de HTML y XHTML requieren un atributo adicional en la etiqueta de apertura <style>: <tipo de estilo="texto/css"> Si deja ese atributo fuera de una página que no es HTML5, recibirá un error si intenta validar la página web. Otra razón más para usar HTML5. Las hojas de estilo internas son fáciles de agregar a una página web y brindan un impulso visual inmediato a su HTML. Pero no son el método más eficiente para diseñar un sitio web completo compuesto por muchas páginas web. Por un lado, debe copiar y pegar la hoja de estilo interna en cada página de su sitio, una tarea que requiere mucho tiempo y agrega código que acapara el ancho de banda en cada página. Pero las hojas de estilo internas son aún más complicadas cuando desea actualizar el aspecto de un sitio. Por ejemplo, supongamos que desea cambiar el <h1>etiqueta, que originalmente decidió que debería aparecer en letra grande, verde y en negrita. Pero ahora quieres pequeño, 40 Css3: el manual perdido www.it-ebooks.info tipo azul en el tipo de letra Courier. Usando hojas de estilo internas, necesitaría editar cada página. ¿Quién tiene esa clase de tiempo? Afortunadamente, hay una solución simple para Externo HOJAS DE ESTILO este dilema: hojas de estilo externas. NotaTambién es posible (aunque rara vez recomendable) agregar información de estilo a una etiqueta HTML individual sin usar una hoja de estilo. El tutorial en la página 44 le muestra cómo realizar esa maniobra utilizando unen línea estilo. Hojas de estilo externas Una hoja de estilo externa no es más que un archivo de texto que contiene todas sus reglas CSS. Nunca contiene ningún código HTML, así que no incluya el <estilo>etiqueta. Además, siempre termine el nombre del archivo con la extensión .css. Puede nombrar el archivo como desee, pero vale la pena ser descriptivo. Usarglobal.css,sitio.css, o simplemente,estilos.css, por ejemplo, para indicar una hoja de estilo utilizada por cada página del sitio, o utilizarformulario.css para nombrar un archivo que contiene estilos utilizados para hacer que un formulario web se vea bien. Hasta la velocidad Valida tu CSS Así como debe asegurarse de haber escrito correctamente el HTML en sus Es fácil cometer un error tipográfico al escribir CSS, y un pequeño error páginas web utilizando el validador W3C HTML (consulte el cuadro en la página puede arruinar todos sus diseños cuidadosamente planificados. Cuando 27), también debe verificar su código CSS para asegurarse de que sea kosher. El su página web infundida con CSS no se ve como esperaba, la causa W3C también proporciona una herramienta en línea para la verificación de CSS: puede ser un simple error de CSS. El validador W3C CSS es una buena http://rompecabezas.w3.org/css-validator. Funciona igual que el validador de primera parada para solucionar problemas en sus diseños. HTML: puede escribir la URL de una página web (o incluso solo la dirección de un archivo CSS externo), cargar un archivo CSS o copiar y pegar el código CSS en un formulario web y enviarlo para su validación. . CONSEJOSi tiene una página con una hoja de estilo interna pero quiere usar una hoja de estilo externa, simplemente corte todo el código entre <estilo>etiquetas (sin las propias etiquetas). Luego cree un nuevo archivo de texto y pegue el CSS en el archivo. Guarde el archivo con una extensión .css:estilos.css, por ejemplo, y vincúlelo a su página, utilizando una de las técnicas descritas a continuación. Una vez que crea una hoja de estilo externa, debe conectarla a la página web que desea formatear. Puede adjuntar una hoja de estilo a una página web usando HTML <enlace> etiqueta o la propia @ de CSSimportardirectiva: un comando que básicamente hace lo mismo que la etiqueta de enlace. Todos los navegadores web actuales tratan estas dos técnicas de la misma manera y ambos le permiten adjuntar hojas de estilo a una página web, por lo que elegir una es principalmente una cuestión de preferencia. Capitulo 2:CREACIÓN DE ESTILOS Y HOJAS DE ESTILO www.it-ebooks.info 41 Externo HOJAS DE ESTILO NotaEl @importardirectiva puede hacer una cosa el <enlace>la etiqueta no puede: adjuntar hojas de estilo externas a una hoja de estilo externa. Esta técnica avanzada se analiza al final de esta página. Vinculación de una hoja de estilo mediante HTML El método más común para agregar una hoja de estilo externa a una página web es usar el HTML <enlace>etiqueta. La etiqueta se escribe de forma ligeramente diferente dependiendo de si usa HTML5, HTML 4.01 o xHTML. Por ejemplo, aquí está HTML5: <enlace rel="hoja de estilo" href="css/estilos.css"> HTML 4.01 es similar, pero requiere un adicionaltipoatributo: <enlace rel="hoja de estilo" type="text/css" href="css/styles.css"> Finalmente, xHTML es como HTML 4.01, pero requiere una barra inclinada de cierre al final de la etiqueta: <enlace rel="hoja de estilo" type="texto/css" href="css/estilos.css" /> Debido a que HTML5 requiere menos código, le recomendamos que use HTML5. Todos los doctypes requieren dos atributos: • rel="hoja de estilo"indica el tipo de enlace, en este caso, un enlace a una hoja de estilo. • hrefapunta a la ubicación del archivo CSS externo en el sitio. El valor de esta propiedad es una URL y variará dependiendo de dónde guarde su archivo CSS. Funciona igual que elorigenatributo que utiliza al agregar una imagen a una página o elhrefatributo de un enlace que apunta a otra página. CONSEJOPuede adjuntar varias hojas de estilo a una página web agregando varios <enlace>etiquetas, cada una apuntando a un archivo de hoja de estilo diferente. Esta técnica es una excelente manera de organizar sus estilos CSS, como puede ver en el Capítulo 15. Vincular una hoja de estilo mediante CSS CSS incluye una forma integrada de agregar hojas de estilo externas: la @importardirectiva. Agrega la directiva dentro de un HTML <estilo>etiqueta, así: <estilo> @importar url(css/estilos.css); </ estilo> NotaSi está utilizando un tipo de documento HTML 4.01 o XHTML, debe agregartipo="texto/css"a la apertura <estilo> etiqueta. Consulte la nota en la página 40. A diferencia de HTML <enlace>etiqueta, @importares parte del lenguaje CSS y tiene algunas cualidades definidas que no son similares a HTML: 42 Css3: el manual perdido www.it-ebooks.info • Para realizar la conexión con el archivo CSS externo, utiliceURLen lugar dehref y encierre la ruta entre paréntesis. Así que en este ejemplo,css/estilos.csses la ruta al archivo CSS externo. Las comillas alrededor de la URL son opcionales, por lo que url(css/estilos.css)yurl("css/estilos.css")ambos trabajan. Tutorial: CREANDO tu primero ESTILOS • Al igual que con el <enlace>etiqueta, puede incluir varias hojas de estilo externas utilizando más de una @importar: <tipo de estilo="texto/css"> @importar url(css/estilos.css); @importar URL (css/formulario.css); </estilo> • Puede agregar estilos CSS normales después de @importardirectivas si desea crear una regla que se aplique solo a esa página, pero aún use las reglas de diseño global del sitio para formatear el resto de la página. NotaAprenderá cómo interactúan las reglas y cómo puede crear una regla que invalide otras reglas en la página 113. Incluso puede crear un archivo CSS externo que contenga solo @importardirectivas que vinculan aotrohojas de estilo externas, una técnica que se utiliza a menudo para ayudar a organizar sus estilos (consulte la página 547). Aquí hay un ejemplo: <estilo> @importar url(css/estilos.css); @importar URL (css/formulario.css); pag {color: rojo; } </estilo> Debes colocar todos los @importarlíneasantescualquier regla CSS, como se muestra aquí. Los navegadores web ignoran cualquier hoja de estilo que importe después de una regla CSS, por lo que si invirtió el orden del código anterior y tuvo elpagel estilo aparece primero, luego el navegador ignora cualquier estilo enestilo.css oformulario.csshojas de estilo ¿Cuál usar? Aunque ambos métodos funcionan, el <enlace>la etiqueta es más común. En algunos casos, usando el @importarpuede ralentizar la velocidad de descarga de sus hojas de estilo (visite www.stevesouders.com/blog/2009/04/09/dont-use-importpara averiguar cuándo puede suceder esto y por qué). Entonces, si no tiene una fuerte preferencia por ninguno, simplemente use el <enlace> método. Tutorial: Creación de sus primeros estilos El resto de este capítulo lo lleva a través de los pasos básicos para agregar estilos en línea, escribir reglas CSS y crear hojas de estilo internas y externas. A medida que avance en este libro, trabajará en varios diseños CSS, desde elementos de diseño simples hasta diseños completos de páginas web habilitados para CSS. Para comenzar, descargue los archivos del tutorial Capitulo 2:CREACIÓN DE ESTILOS Y HOJAS DE ESTILO www.it-ebooks.info 43 Tutorial: CREANDO tu primero ESTILOS ubicado en el sitio web complementario del libro enwww.sawmac.com/css3. Haga clic en el enlace del tutorial y descargue el archivo zip que contiene los archivos (las instrucciones detalladas para descomprimir los archivos también se encuentran en el sitio web). Los archivos de cada capítulo están en una carpeta separada, llamada02(para el Capítulo 2),03(para el Capítulo 3), y así sucesivamente. A continuación, inicie su software de edición de páginas web favorito, ya sea un editor de texto simple, como Notepad o TextEdit, o un programa de orientación visual, como Dreamweaver o Microsoft Expression Web (para obtener información sobre cómo seleccionar un editor, consulte la página 7). Crear un estilo en línea Cuando escribe una regla CSS directamente en el HTML de una página, está creando unaen líneaestilo. Los estilos en línea no ofrecen ninguno de los beneficios de ahorro de tiempo y ancho de banda de las hojas de estilo, por lo que los profesionales casi nunca los usan. Aún así, en un apuro, si es absolutamente necesario cambiar el estilo en un solo elemento en una sola página, entonces es posible que desee recurrir a un estilo en línea. (Por ejemplo, al crear mensajes de correo electrónico con formato HTML, es mejor usar estilos en línea. Esa es la única forma de hacer que CSS funcione en Gmail, por ejemplo). Y si lo hace, al menos desea que el estilo funcione correctamente. Lo importante es colocar cuidadosamente el estilo dentro de la etiqueta que desea formatear. Aquí hay un ejemplo que le muestra exactamente cómo hacerlo: 1.En su programa de edición de páginas web, abra el archivo02-básico.html. Este archivo HTML5 simple pero elegante contiene un par de encabezados diferentes, algunos párrafos y un aviso de derechos de autor dentro de un <dirección>etiqueta. Comenzará creando un estilo en línea para <h1>etiqueta. 2.Haga clic dentro de la apertura <h1>etiquetar y escribirestilo="color: #666666;". La etiqueta debería verse así: <h1 estilo="color: #666666;"> El atributo de estilo es HTML, no CSS, por lo que debe usar el signo igual después y encerrar todo el código CSS entre comillas. Solo lo que está dentro de las comillas es CSS. En este caso, agregó una propiedad llamada color, que afecta el color del texto, y configuró esa propiedad en #666666 (un código hexadecimal para definir un color que es gris). Aprenderá más sobre cómo colorear el texto en la página 154. Los dos puntos separan el nombre de la propiedad del valor de la propiedad que desea. A continuación, comprobará los resultados en un navegador web. 3.abre elbásico.htmlpágina en un navegador web. Por ejemplo, inicie su navegador web favorito y seleccione Archivo→Abrir archivo (o presione Ctrl+O [C-O] y seleccione elbásico.htmlarchivo en el02 tutorialcarpeta de su computadora; o simplemente arrastre el archivo desde el escritorio, o dondequiera que haya 44 Css3: el manual perdido www.it-ebooks.info guardó los archivos del tutorial en una ventana abierta del navegador). Muchos editores de HTML también incluyen una función de "Vista previa en el navegador", que, con un simple atajo de teclado o Tutorial: CREANDO tu primero ESTILOS una opción de menú, abre la página en un navegador web. Vale la pena consultar el manual de su programa para ver si incluye esta función de ahorro de tiempo. Cuando ve la página en un navegador, el título ahora es gris. Los estilos en línea pueden incluir más de una propiedad CSS. A continuación, agregará otra propiedad. 4.Regrese a su editor de HTML, haga clic después del punto y coma que sigue a #666666, y tipo tamaño de fuente: 3em;. El punto y coma separa dos configuraciones de propiedad diferentes. El <h1>la etiqueta debería verse así: <h1 style="color: #666666; tamaño de fuente: 3em;"> 5.Obtenga una vista previa de la página en un navegador web.Por ejemplo, haga clic en el botón Recargar de la ventana de su navegador (pero asegúrese de haber guardado el archivo HTML primero). El titular es ahora de tamaño masivo. Y ha probado lo laboriosos que son los estilos en línea. Haciendo todos los <h1>los encabezados en una página se ven como este podría tomar días de escribir y agregar acres de código HTML. 6.Regrese al editor de su página y elimine toda la propiedad de estilo, lo que devuelve la etiqueta de encabezado a su estado normal <h1>. A continuación, creará una hoja de estilo dentro de una página web. (Encontrará una versión terminada de esta parte del tutorial en el02_terminadocarpeta en un archivo llamadoen línea.html.) Creación de una hoja de estilo interna Un mejor enfoque que los estilos en línea es usar una hoja de estilo que contenga varias reglas CSS para controlar varios elementos de una página. En esta sección, creará un estilo que afectará a todos los encabezados de nivel superior de una sola vez. Esta regla única formatea automáticamente cada <h1>etiqueta en la página. 1.con el archivobásico.htmlabra en su editor de texto, haga clic directamente después del cierre </título>etiqueta.Luego presione Enter (Return) y escriba <estilo>. El HTML ahora debería tener el siguiente aspecto (lo que ha agregado está en negrita): <title>CSS: El Manual Perdido -- Capítulo 2</title> <estilo> </cabeza> La apertura <estilo>etiqueta marca el comienzo de la hoja de estilo. Siempre es una buena idea cerrar una etiqueta justo después de escribir la etiqueta de apertura, ya que es muy fácil olvidar este paso una vez que empiezas a escribir tu CSS. En este caso, cerrará el <estilo>etiqueta antes de agregar cualquier CSS. 2.Presiona Enter dos veces y escribe </estilo>. Ahora, agregará un selector de CSS que marca el comienzo de su primer estilo. Capitulo 2:CREACIÓN DE ESTILOS Y HOJAS DE ESTILO www.it-ebooks.info 45 Tutorial: CREANDO tu primero ESTILOS 3.Haga clic entre la apertura y el cierre <estilo>etiquetas y tipoh1 {. Elh1indica la etiqueta a la que el navegador web debe aplicar el próximo estilo. La extraña cosa del soporte después de lah1se denomina llave de apertura y marca el comienzo de las propiedades CSS para este estilo. En otras palabras, dice: "Las cosas divertidas vienen justo después de mí". Al igual que con las etiquetas de cierre, es una buena idea escribir la llave de cierre de un estilo antes de agregar cualquier propiedad de estilo. 4.Presione Entrar dos veces y escriba una sola llave de cierre:}. Como socio de la llave de apertura que escribió en el último paso, el trabajo de esta llave es decirle al navegador web: "Esta regla CSS en particular termina aquí". Ahora es el momento de las cosas divertidas. 5.Haga clic en la línea vacía entre las dos llaves.Presiona la tecla Tab y escribe color:#666666;. Ha escrito la misma propiedad de estilo que la versión en línea:color-y configúrelo en # 666666.El último punto y coma marca el final de la declaración de propiedad. NotaTécnicamente, no tienes que poner la propiedad de estilo en su propia línea, pero es una buena idea. Con una propiedad por línea, es mucho más fácil escanear rápidamente una hoja de estilo y ver todas las propiedades de cada estilo. Además, la pestaña es otra técnica útil de organización visual (también puede insertar algunos espacios en su lugar). La sangría facilita discernir todas las reglas de un vistazo, ya que los selectores (comoh1aquí) se alinean a lo largo del borde izquierdo, con las propiedades un poco separadas. 6.Presiona Enter nuevamente y agrega tres propiedades adicionales, así: tamaño de fuente: 3em; margen: 0; Asegúrese de no omitir el punto y coma al final de cada línea, de lo contrario, el CSS no se mostrará correctamente en un navegador. Cada una de estas propiedades añade un efecto visual diferente al título. Los dos primeros asignan un tamaño y fuente al texto, mientras que el tercero elimina el espacio alrededor del título. La Parte 2 de este libro cubre todas estas propiedades en detalle. Felicitaciones, acaba de crear una hoja de estilo interna. El código que ha agregado debe verse como el texto en negrita: <title>CSS: El Manual Perdido -- Capítulo 2</title> <estilo> h1 { color: #666666; tamaño de fuente: 3em; margen: 0; 46 Css3: el manual perdido www.it-ebooks.info Tutorial: CREANDO tu primero ESTILOS } </estilo> </cabeza> 7.Guarde la página y obtenga una vista previa en un navegador web. Puede obtener una vista previa de la página abriéndola en un navegador web como se describe en el Paso 3 en la página 44 o, si la página aún está abierta en una ventana del navegador, simplemente haga clic en el botón Recargar. A continuación, agregará otro estilo. NotaRecuerde siempre agregar el cierre </estilo>etiqueta al final de una hoja de estilo interna. Cuando no lo hace, un navegador web muestra el código de estilo CSS seguido de una página web completamente sin formato, o ninguna página web en absoluto. 8.De vuelta en su programa de edición de texto, haga clic después de la llave de cierre delh1 estilo que acaba de crear, presione Entrar y luego agregue la siguiente regla: pag { color: #616161; altura de línea: 150%; margen superior: 10px; margen izquierdo: 80px; } Esta regla da formato a cada párrafo de la página. No se preocupe demasiado en este momento acerca de lo que está haciendo cada una de estas propiedades CSS. Los capítulos posteriores cubren estas propiedades en profundidad. Por ahora, simplemente practique escribir el código correctamente y tenga una idea de cómo agregar CSS a una página. 9.Obtenga una vista previa de la página en un navegador. La página está empezando a tomar forma y debería parecerse a la Figura 2-3. Puede ver en qué dirección estilística se dirige la página. Puede ver una versión completa de este tutorial abriendo elinterno.htmlarchivo en el02_terminadocarpeta. El proceso con el que acaba de trabajar es CSS en pocas palabras: comience con una página HTML, agregue una hoja de estilo y cree reglas CSS para que la página se vea genial. En la siguiente parte de este tutorial, verá cómo trabajar de manera más eficiente con hojas de estilo externas. Capitulo 2:CREACIÓN DE ESTILOS Y HOJAS DE ESTILO www.it-ebooks.info 47 Tutorial: CREANDO tu primero ESTILOS Figura 2-3 CSS formatea fácilmente el texto de manera creativa, lo que le permite cambiar las fuentes, los colores del texto, los tamaños de fuente y mucho más, como verá en el Capítulo 6. Creación de una hoja de estilo externa Dado que agrupa todos sus estilos en la parte superior de la página, una hoja de estilo interna es mucho más fácil de crear y mantener que el estilo en línea que creó hace algunas páginas. Además, una hoja de estilo interna le permite formatear cualquier cantidad de instancias de una etiqueta en una página, como cada <p>etiqueta, escribiendo una regla simple. Pero una hoja de estilo externa es aún mejor: puede almacenar todos los estilos para unsitio web completo. La edición de un estilo en la hoja de estilo externa actualiza todo el sitio. En esta sección, tomará los estilos que creó en la sección anterior y los colocará en una hoja de estilo externa. 1.En su programa de edición de texto, cree un nuevo archivo y guárdelo comoestilos.cssen la misma carpeta que la página web en la que has estado trabajando. Los archivos de hojas de estilo externas terminan con la extensión .css. el nombre del archivo estilos.css indica que los estilos contenidos en el archivo se aplican en todo el sitio. (Pero puede usar cualquier nombre de archivo que desee, siempre que termine con la extensión .css). Comience agregando un nuevo estilo a la hoja de estilo. 48 Css3: el manual perdido www.it-ebooks.info 2.Escriba la siguiente regla en elestilos.cssarchivo: html { Tutorial: CREANDO tu primero ESTILOS acolchado superior: 25px; imagen de fondo: url(images/bg_page.png); } Esta regla se aplica a la etiqueta HTML, la etiqueta que rodea a todas las demás etiquetas HTML en una página. Elacolchado superiorLa propiedad agrega espacio entre la parte superior de la etiqueta y el contenido que se encuentra dentro de ella. En otras palabras, lo que acaba de escribir agregará 25 píxeles de espacio entre la parte superior de la ventana del navegador y el contenido dentro de la página. Elimagen de fondoagrega una imagen de fondo a la página, el CSSimagen de fondoLa propiedad puede mostrar el gráfico de muchas maneras diferentes; en este caso, el gráfico se dividirá sin problemas de izquierda a derecha y de arriba a abajo, cubriendo toda la ventana del navegador. Puede leer más sobre las propiedades de la imagen de fondo en la página 240. 3.Agregue una segunda regla después de la regla que acaba de escribir en elestilos.cssarchivo: cuerpo { ancho: 80%; relleno: 20px; margen: 0 automático; sombra de caja: 10px 10px 10px rgba(0,0,0,.5); color de fondo: #E1EDEB; } Esta regla se aplica a la etiqueta del cuerpo, la etiqueta que contiene todo el contenido visible en una ventana del navegador web. Están sucediendo muchas cosas diferentes en este estilo, y cada una de estas propiedades se trata en profundidad más adelante en el libro. Pero en pocas palabras, este estilo crea un cuadro para el contenido de la página que tiene un 80 por ciento del ancho de la ventana del navegador, tiene un poco de espacio dentro que mueve el texto desde el borde del cuadro (esa es larellenopropiedad) y centra el cuadro en la página (esa es la margenpropiedad, y el truco particular de centrar el contenido de una página se analiza en el tutorial que comienza en la página 89). Finalmente, el cuadro adquiere un color de fondo azul claro y una sombra negra transparente. En lugar de recrear el trabajo que hizo anteriormente, simplemente copie los estilos que creó en la sección anterior y péguelos en esta hoja de estilo. 4.abre elbásico.htmlpágina en la que has estado trabajando y copia todo el texto adentroel <estilo>etiquetas(No copiar el <estilo>se etiquetan ellos mismos). Copie la información de estilo de la misma manera que copiaría cualquier texto. Por ejemplo, elija Editar→Copie o presione Ctrl+C (C-C). 5.En elestilos.cssarchivo, pegue la información de estilo seleccionando Editar→Pegar o presionando Ctrl+v (C-v). Una hoja de estilo externa nunca contiene HTML, por eso no copió el < estilo>etiquetas Capitulo 2:CREACIÓN DE ESTILOS Y HOJAS DE ESTILO www.it-ebooks.info 49 Tutorial: CREANDO tu primero ESTILOS 6.Ahorrarestilos.css. Ahora solo necesita limpiar su archivo anterior y vincularle la nueva hoja de estilo. 7.Volver a labásico.htmlarchivo en su editor de texto y elimine el <estilo>etiquetas y todas las reglas CSS que escribiste anteriormente. Ya no necesita estos estilos, ya que están en la hoja de estilo externa que está a punto de adjuntar. En este tutorial, se sumergirá en el apasionante mundo de las fuentes web. Aprenderá todo sobre las fuentes web a partir de la página 132, pero la idea básica es que puede usar casi cualquier fuente que desee en una página web, incluso una fuente que los visitantes de su sitio no hayan instalado en sus propias computadoras, simplemente proporcionando un enlace a ese archivo de fuente. Hay muchas formas diferentes de usar las fuentes web, pero en este ejemplo, usará el servicio de fuentes web de Google. 8.En el espacio donde solían estar los estilos (entre el cierre </título>etiqueta y el cierre </cabeza>etiqueta), escriba lo siguiente: <enlace href="http://fonts.googleapis.com/css?family=Gravitas+One" rel="hoja de estilo"> Una vez más, no se preocupe por los detalles todavía. Todo lo que necesita saber por ahora es que cuando un navegador web encuentra este enlace, descarga una fuente llamada Gravitas One de un servidor de Google, que sus estilos CSS pueden usar libremente para crear texto de apariencia distintiva. A continuación, creará un vínculo a la hoja de estilo externa que creó anteriormente. 9.Después del <enlace>etiqueta que agregó en el paso anterior, escriba: <enlace href="estilos.css" rel="hoja de estilos"> La etiqueta <link> es una forma de adjuntar una hoja de estilo a una página; otra opción es la directiva CSS @import, como se explica en la página 42. La etiqueta de enlace especifica la ubicación de la hoja de estilo externa. ElrealEl atributo simplemente le permite al navegador saber que se está vinculando a una hoja de estilo. NotaEn este ejemplo, el archivo de la hoja de estilos está en la misma carpeta que la página web, por lo que usar el nombre del archivo para elhrefEl valor proporciona una ruta simple "relativa al documento". Si estuviera en una carpeta diferente a la de la página, la ruta sería un poco más complicada. En cualquier caso, usaría undocumento-orelativo a la raízruta para indicar dónde está el archivo. La rutina es la misma que cuando crea un enlace a una página web o establece una ruta a un archivo de imagen cuando usa HTML <imagen>etiqueta. (Para obtener una breve introducción a los vínculos relativos a documentos y raíces, visite www.communitymx.com/content/article.cfm?cid=230AD.) 10Guarde el archivo y obtenga una vista previa en un navegador web. Verá los mismos estilos de texto para las etiquetas <h1> y <p> que creó en la hoja de estilo interna en la página 45. Además, ahora hay un fondo bronceado moteado (la imagen de fondo que aplicó en el <html>etiqueta), así como un cuadro azul. Esa caja es el <cuerpo>y su ancho es el 80 por ciento del de la ventana del navegador. Intente cambiar el tamaño de la ventana del navegador y observe que el cuadro cambia de ancho 50 Css3: el manual perdido www.it-ebooks.info también. También hay una sombra paralela en la caja; puede ver a través de la sombra paralela el fondo moteado. Eso es gracias a un tipo de color CSS3:rgb color —que incluye una configuración de transparencia (lo leerá en la página 155). Tutorial: CREANDO tu primero ESTILOS NotaSi la página web no tiene ningún formato (por ejemplo, el título superior no es grande, en negrita y de color marrón polvoriento), probablemente haya escrito mal el código del paso 6 o haya guardado elestilos.cssarchivo en una carpeta diferente a aquella donde se encuentra elbásico.htmlel archivo es. En este caso, simplemente mueva elestilos.cssen la misma carpeta. Ahora, usará la fuente web a la que se vinculó en el Paso 8. 11En su editor de texto, regrese a laestilos.cssarchivo.Para elh1estilo, agregue las siguientes dos líneas: familia tipográfica: 'Gravitas One', 'Arial Black', serif; peso de fuente: normal; El estilo terminado debería verse así (adiciones en negrita): h1 { familia tipográfica: 'Gravitas One', 'Arial Black', serif; peso de fuente: normal; color: #666666; tamaño de fuente: 3em; margen: 0; } Si obtiene una vista previa de la página ahora, verá la nueva fuente "Gravitas One" para el título. NotaSi no ve la nueva fuente, tiene un aspecto grueso con líneas finas (serif) en los extremos de las letras, entonces una de las dos cosas podría estar mal. Si no está conectado a Internet, no podrá descargar la fuente de Google; en segundo lugar, es posible que haya escrito mal el <enlace>(consulte el paso 8 en la página anterior) o la declaración de familia de fuentes (línea 2 anterior). Para demostrar lo útil que puede ser mantener sus estilos en su propio archivo externo, adjuntará la hoja de estilo a otra página web. 12abre el archivo02-otra_pagina.html. Esta página contiene algunas de las mismas etiquetas HTML:h1, h2, p,y así sucesivamente, como la otra página web en la que ha estado trabajando. 13Haga clic después del cierre </título>etiqueta y presione Entrar (Retorno). Ahora vinculará tanto la fuente web como la hoja de estilo externa. Capitulo 2:CREACIÓN DE ESTILOS Y HOJAS DE ESTILO www.it-ebooks.info 51 Tutorial: CREANDO tu primero ESTILOS 14Escriba lo mismo <enlace>etiquetas que hizo en los pasos 8 y 9. El código de la página web debería verse así (el código que acaba de escribir aparece en negrita): <title>Otra página</title> <enlace href="http://fonts.googleapis.com/css?family=Gravitas+One" rel="hoja de estilo"> <enlace href="estilos.css" rel="hoja de estilos"> </ cabeza> 15.Guarde la página y obtenga una vista previa en un navegador web. Ta-da! Solo dos líneas de código agregadas a la página web son suficientes para transformar instantáneamente su apariencia. Para demostrar lo fácil que es actualizar una hoja de estilo externa, lo hará editando un estilo y agregando otro. dieciséis.abre elestilos.cssarchivo y agregue la declaración CSSfamilia tipográfica: "Palatino Linotype", Baskerville, serif;al principio del estilo p. El código debería verse así (el texto en negrita es lo que acaba de agregar): pag { familia tipográfica: "Palatino Linotype", Baskerville, serif; color: #616161; altura de línea: 150%; margen superior: 10px; margen izquierdo: 80px; } En este caso, no está utilizando una fuente web, sino que confía en que el visitante del sitio ya tiene una de las fuentes enumeradas en su máquina (aprenderá todo sobre el uso de fuentes en la página 127). A continuación, cree una nueva regla para elh2etiqueta. 17Haga clic al final de lapagestilo de cierre}, presione Entrar y agregue la siguiente regla: h2 { color: #B1967C; familia tipográfica: 'Gravitas One', 'Arial Black', serif; peso de fuente: normal; tamaño de fuente: 2,2 em; borde inferior: 2px blanco sólido; fondo: url(images/head-icon.png) sin repetición 10px 10px; relleno: 0 0 2px 60px; margen: 0; } Algunas de estas propiedades CSS que ya has encontrado. Algunos son nuevos, como elborde inferiorpropiedad para agregar una línea debajo del título. Y algunos, como elfondopropiedad: proporciona un atajo para combinar varios 52 Css3: el manual perdido www.it-ebooks.info diferentes propiedades, en este caso, laimagen de fondo,yrepetición de fondo—en una sola propiedad. No se preocupe por los detalles de estas propiedades, las aprenderá con Tutorial: CREANDO tu primero ESTILOS gran detalle en los próximos capítulos (el Capítulo 6 cubre las propiedades de la fuente; el Capítulo 8 cubre los fondos; el Capítulo 7 cubre el relleno y los márgenes). Los estilos que ha creado hasta ahora afectan principalmente a las etiquetas: elh1, h2,ypag-y afectan cada instancia de esas etiquetas. En otras palabras, el estilo p que creó da formato a cada párrafo de la página. Si desea apuntar solo a un párrafo, debe usar un tipo diferente de estilo. 18Haga clic al final de lah2estilo de cierre}, presione Entrar y agregue la siguiente regla: . introducción { color: #6A94CC; familia tipográfica: Arial, Helvetica, sans-serif; tamaño de fuente: 1,2 em; margen izquierdo: 0; margen inferior: 25px; } Si obtiene una vista previa de labásico.htmlpágina en un navegador web, verá que este nuevo estilo no tiene ningún efecto... todavía. Este tipo de estilo, llamadoseleccionador de clase, formatea solo las etiquetas específicas a las que aplica la clase. Para que este nuevo estilo funcione, debe editar algo de HTML. 19Guarda el archivoestilos.cssy cambiar a labásico.htmlarchivo en su editor de texto. Localiza la apertura <p>etiqueta que sigue al <h1>etiquetar y agregarclase = "introducción"por lo que la etiqueta de apertura se ve así: <p clase="introducción"> No tienes que agregar un punto antes de la palabraintroduccióncomo lo hizo cuando creó el estilo en el Paso 18 (aprenderá por qué en el próximo capítulo). Este pequeño HTML adicional aplica el estilo al primer párrafo (y solo a ese párrafo). Repita este paso para elotra_pagina.htmlarchivo, en otras palabras, agregarclase = "introducción"a la primera etiqueta <p> de esa página. 20Guarde todos los archivos y obtenga una vista previa de losbásico.htmlyotra_pagina.html archivos en un navegador web.La Figura 2-4 muestra elotra_pagina.htmlarchivo. Observe que la apariencia de ambas páginas cambia, según las ediciones simples que realizó en el archivo CSS. Cierra los ojos e imagina que tu sitio web tiene mil páginas. Aaaahhhhhhh, el poder. (Encontrará una versión completa de este tutorial en la02_terminadocarpeta.) Para mayor práctica, agregue un estilo para formatear el <dirección>etiqueta (esa etiqueta se usa en la parte inferior del archivo HTML para contener el aviso de derechos de autor). Por ejemplo, puede cambiar su color y aplicarle una sangría de 60 píxeles para que coincida con la sangría de las etiquetas <p>. Capitulo 2:CREACIÓN DE ESTILOS Y HOJAS DE ESTILO www.it-ebooks.info 53 Tutorial: CREANDO tu primero ESTILOS Figura 2-4 Con una hoja de estilo externa, puede actualizar las páginas web de un sitio completo editando un solo archivo CSS. Además, al mover todo el código CSS de un documento HTML a un archivo separado, reduce el tamaño de archivo de sus páginas web para que se carguen más rápido. 54 Css3: el manual perdido www.it-ebooks.info Capítulo 3 3 Selectores: Identificación Qué estilo mi Muy estilo CSS tiene dos partes básicas: un selector y un bloque de declaración. (Y si eso es nuevo para usted, regrese y lea el capítulo anterior). El bloque de declaración incluye las propiedades de formato (color del texto, tamaño de fuente, etc.), pero eso es solo lo bonito. La magia de CSS radica en esos primeros caracteres al comienzo de cada regla: el selector. Diciéndole a CSSquédesea que se formatee (vea la Figura 3-1), el selector le brinda control total sobre la apariencia de su página. Si le gustan las generalizaciones amplias, entonces puede usar un selector que se aplica a muchos elementos en una página a la vez. Pero si está un poco más orientado a los detalles (bueno, unlotemás), otros selectores le permiten destacar un artículo específico o una colección de artículos similares. Los selectores de CSS le dan mucho poder: este capítulo le muestra cómo usarlos. Figura 3-1 La primera parte de un estilo, el selector, indica el elemento o elementos de una página a formatear. En este caso,h1significa "cada encabezado 1, o <h1>, etiqueta en esta página". NotaSi prefiere obtener algo de experiencia práctica antes de estudiar los entresijos de los selectores de CSS, salte al tutorial en la siguiente sección en la página 81. 55 www.it-ebooks.info Etiqueta SELECCIONADORES: ANCHO DE LA PÁGINA ESTILO Selectores de etiquetas: estilo en toda la página Etiquetaselectores—a veces llamadostipooelementoselectores—son herramientas de estilo extremadamente eficientes, ya que se aplican a cada aparición de una etiqueta HTML en una página web. Con ellos, puede realizar cambios radicales en el diseño de una página con muy poco esfuerzo. Por ejemplo, cuando desea formatear cada párrafo de texto en una página, usando la misma fuente, color y tamaño, simplemente crea un estilo usandopag (como en el <p>etiqueta) como el selector. En esencia, un selector de etiquetas redefine cómo un navegador muestra una etiqueta en particular. Antes de CSS, para dar formato al texto, tenía que envolver ese texto en un <fuente>etiqueta. Para agregar el mismo aspecto a cada párrafo de una página, a menudo tenía que usar el <fuente> etiqueta varias veces. Este proceso fue mucho trabajo y requirió mucho HTML, lo que hizo que las páginas fueran más lentas para descargar y más lentas para actualizar. Con los selectores de etiquetas, en realidad no tiene que hacer nada con el HTML, solo cree la regla CSS y deje que el navegador haga el resto. Los selectores de etiquetas son fáciles de detectar en una regla de CSS, ya que tienen exactamente el mismo nombre que la etiqueta a la que diseñan:p, h1, tabla, img,etcétera. Por ejemplo, en la Figura 3-2, el h2 selector (arriba) aplica un estilo de fuente a todos los <h2>etiquetas en una página web (abajo). Figura 3-2 Un selector de etiquetas afecta a todas las instancias de la etiqueta en la página. Esta página tiene tres<h2> etiquetas (indicadas por las etiquetas negras en el borde izquierdo de la ventana del navegador). Un único estilo CSS con un selector deh2controla la presentación de cada<h2> etiqueta en la página. 56 Css3: el manual perdido www.it-ebooks.info Clase SELECCIONADORES: NotaComo muestra claramente la Figura 3-2, los selectores de etiquetas no obtienen los símbolos menor que (<) y mayor que (>) que rodean las etiquetas HTML. Así que cuando estás escribiendo una regla para el <p>etiqueta, por ejemplo, simplemente escriba el nombre de la etiqueta:pag. determinar con precisión Control Sin embargo, los selectores de etiquetas tienen sus desventajas. ¿Qué pasa si quieres?alguno párrafos para verse diferente de otros párrafos? Un simple selector de etiquetas no funcionará, ya que no proporciona suficiente información para que un navegador web identifique la diferencia entre <p>etiquetas que desea resaltar en púrpura, negrita y letra grande del <p>etiquetas que desea dejar con texto negro normal. Afortunadamente, CSS proporciona varias formas de resolver este problema: el método más sencillo se llamaseleccionador de clase. Selectores de clase: control preciso Cuando desee dar a uno o más elementos un aspecto diferente al de las etiquetas relacionadas en una página (por ejemplo, dar a una o dos imágenes de una página un borde rojo y dejar la mayoría de las demás imágenes sin estilo), puede usar unclaseselector. Si está familiarizado con los estilos en los programas de procesamiento de textos como Microsoft Word, entonces los selectores de clases le resultarán familiares. Usted crea un selector de clase dándole un nombre y luego aplicándolo solo a las etiquetas HTML que desea formatear. Por ejemplo, puede crear un estilo de clase llamado . derechos de autory luego aplicarlo solo a un párrafo que contenga información de derechos de autor, sin afectar a ningún otro párrafo. Los selectores de clase también le permiten identificar un elemento exacto en una página, independientemente de su etiqueta. Digamos que desea formatear una palabra o dos dentro de un párrafo, por ejemplo. En este caso, no desea el < completop>etiqueta afectada, solo una frase dentro de ella. Puede usar un selector de clase para indicar solo esas palabras. Incluso puede usar un selector de clase para aplicar el mismo formato a varios elementos que tienen diferentes etiquetas HTML. Por ejemplo, puede dar el mismo estilo a un párrafo ya un encabezado de segundo nivel, tal vez un color y una fuente que haya seleccionado para resaltar información especial, como se muestra en la Figura 3-3. A diferencia de los selectores de etiquetas, que lo limitan a las etiquetas HTML existentes en la página, puede crear tantos selectores de clases como desee y colocarlos donde desee. NotaCuando desea aplicar un selector de clase a solo unas pocas palabras contenidas dentro de otra etiqueta (como el párrafo central en la Figura 3-3), necesita un poco de ayuda de la etiqueta <span>. Consulte el cuadro de la página 60 para obtener más detalles. Probablemente haya notado el punto que comienza el nombre de cada selector de clase, como . derechos de autory .especial.Es una de las pocas reglas a tener en cuenta al nombrar una clase: • Todos los nombres de los selectores de clases deben comenzar con un punto. Así es como los navegadores web detectan un selector de clase en la hoja de estilo. • CSS solo permite letras, números, guiones y guiones bajos en los nombres de las clases. Capítulo 3:SELECTORES: IDENTIFICAR QUÉ ESTILIZAR www.it-ebooks.info 57 Clase SELECCIONADORES: determinar con precisión Control Figura 3-3 Los selectores de clase le permiten realizar cambios de diseño altamente específicos. Por ejemplo, puede estilizar una instancia de un<h2>título ("Wet Sod is Heavy Sod"). El seleccionador de clases.especial le dice al navegador que aplique el estilo solo a ese único<h2> etiqueta. Una vez que haya creado un selector de clase, puede usarlo en otras etiquetas, como el párrafo superior de esta página. • Después del punto, el nombre siempre debe comenzar con uncarta. Por ejemplo,.9vive no es un nombre de clase válido, pero .loco8es. Puede tener clases nombradas .derechos de autor y . banner_imagen,pero no .-maloo ._tan malo. • Los nombres de las clases distinguen entre mayúsculas y minúsculas. Por ejemplo, CSS considera .BARRA LATERALy . barra lateraldos clases diferentes. 58 Css3: el manual perdido www.it-ebooks.info Clase SELECCIONADORES: Además del nombre, crea estilos de clase exactamente como estilos de etiqueta. Después del nombre de la clase, simplemente coloque un bloque de declaración que contenga todo el estilo que desee: determinar con precisión Control . especial { color:#FF0000; familia de fuentes: "Monotype Corsiva"; } Debido a que los estilos de etiquetas se aplican de manera generalizada a todas las etiquetas de una página web, simplemente tiene que definirlos en el encabezado de la página: las etiquetas HTML que los hacen funcionar ya están en su lugar. Sin embargo, la libertad extra que obtienes con los estilos de clase viene con un poco más de trabajo. El uso de selectores de clase es un proceso de dos pasos. Después de crear una regla de clase, debe indicardóndedesea aplicar ese formato. Para hacerlo, agrega un atributo de clase a la etiqueta HTML que desea diseñar. Digamos que creas una clase.especialque usará para resaltar elementos particulares de la página. Para agregar este estilo a un párrafo, agregue un atributo de clase al <p>etiqueta, así: <p class="especial"> NotaEn el HTML, como parte del atributo de clase, ustednoponer un punto antes del nombre de la clase. El punto solo se requiere para el nombre del selector de clase en unhoja de estilo. Cuando un navegador web encuentra esta etiqueta, sabe aplicar las reglas de formato contenidas en el.especialestilo al párrafo. También puede aplicar formato de clase solo a una parte de un párrafo o encabezado agregando un <lapso>etiqueta. Por ejemplo, para resaltar solo una palabra en un párrafo usando el .especialestilo, podrías escribir esto: <p>Bienvenido a <span class="companyName">Café Soylent Green</span>, el restaurante con algo un poco diferente.</p> Una vez que crea un estilo de clase, puede aplicarlo a casi cualquier etiqueta en la página. De hecho, puede aplicar la misma clase a diferentes etiquetas, por lo que puede crear un archivo .especial estilo con una fuente y un color específicos y aplíquelo a <h2>, <p>,y <ul>etiquetas Capítulo 3:SELECTORES: IDENTIFICAR QUÉ ESTILIZAR www.it-ebooks.info 59 SELECTORES iD: PÁGINA ESPECÍFICA Elementos Hasta la velocidad divisiones y tramos El capítulo 1 te presentó a <div>y <lapso>,dos etiquetas HTML genéricas etiqueta (con una clase aplicada) alrededor de la foto y el título que puede adaptar a sus deseos CSS. Cuando no haya una etiqueta para agrupar ambos elementos: HTML que delinee exactamente dónde desea colocar una clase o un <div clase="foto"> estilo de identificación que haya creado, use un <div>o <lapso>para <img src="vacaciones.jpg" alt="Los pingüinos se llenar los huecos. ponen juguetones"/> <p>Mamá, papá y yo en La etiqueta div identifica una lógicadivisiónde la página, como un banner, una nuestro viaje anual a la Antártida.</p> barra de navegación, una barra lateral o un pie de página. También puede usarlo para rodear cualquier elemento que ocupe una parte de la página, incluidos encabezados, listas con viñetas o párrafos. (Los tipos de </div> Dependiendo de lo que ponga en el bloque de declaración, el programadores los llamannivel de bloqueelementos porque forman un "bloque" completo de contenido, con saltos de línea antes y después de ellos). . fotoLa clase puede agregar un borde decorativo, un color de fondo, etc., tanto a la foto como al título. La Parte 3 de este libro le muestra El <div>La etiqueta funciona como una etiqueta de párrafo: escriba la apertura formas aún más poderosas de usar <div>etiquetas, incluidas las <división>,agregue algún texto, una foto o algún otro contenido dentro de él, y divisiones anidadas. luego termínelo con el cierre </división>. un <lapso>etiqueta, por otro lado, le permite aplicar una clase o estilo La etiqueta div tiene la capacidad única de contenervarioselementos a nivel de de ID a solopartede una etiqueta Puedes colocar <lapso>etiquetas bloque, lo que lo convierte en una excelente manera de agrupar etiquetas que alrededor de palabras y frases individuales (a menudo llamadasen línea están relacionadas lógicamente, como el logotipo y la barra de navegación en elementos) dentro de los párrafos para darles formato de forma el banner de una página o una serie de noticias que componen una barra independiente. Aquí, una clase llamada .nombre de empresadiseña los lateral. Una vez agrupados de esta manera, puede aplicar un formato elementos en línea "CosmoFarmer.com", "Disney" y "ESPN": específico solo a las etiquetas dentro de un div en particular o mover todo el fragmento de contenido etiquetado con div a un área en particular, como el lado derecho de la ventana del navegador (CSS puede ayudarlo a controlar el diseño visual de sus páginas de esta manera, como se describe en la Parte 3 de este libro). <p>Bienvenido a <span class="companyName"> CosmoFarmer.com</span>, la empresa matriz de empresas tan conocidas como <span class="companyName"> Disney </span> y <span class=" companyName"> ESPN </span>...bueno, Por ejemplo, digamos que agregó una foto a una página web; la foto también en realidad no.</p> tiene un pie de foto que la acompaña. Podrías envolver un <div> Selectores de ID: elementos de página específicos CSS reserva el selector de ID paraidentificandouna parte única de una página, como un banner, una barra de navegación o el área de contenido principal. Al igual que un selector de clase, crea una ID dándole un nombre en CSS y luego la aplica agregando la ID al código HTML de su página. Entonces, ¿cuál es la diferencia? Como se explica en el cuadro de la página 62, los selectores de ID tienen algunos usos específicos en páginas web muy largas o basadas en JavaScript. De lo contrario, las razones convincentes para usar ID en lugar de clases son pocas. 60 Css3: el manual perdido www.it-ebooks.info SELECTORES iD: NotaExiste una tendencia creciente en la comunidad de diseño web de abandonar los selectores de ID en CSS. El razonamiento requiere un mayor conocimiento de CSS que el presentado hasta ahora en este libro. No encontrará muchas identificaciones en este libro, y aprenderá todos los detalles PÁGINA ESPECÍFICA Elementos sangrientos por los que los selectores de identificaciones a menudo no son una buena idea en la página 114. Aunque muchos diseñadores web ya no usan los selectores de ID tanto como antes, es bueno saber qué son y cómo funcionan. Si decide utilizar un selector de ID, crear uno es fácil. Así como un punto indica el nombre de un selector de clase, un símbolo de almohadilla identifica un estilo de identificación. De lo contrario, siga exactamente las mismas reglas de nomenclatura que se utilizan para las clases (página 57). Este ejemplo proporciona un color de fondo y un ancho y alto para el elemento: # banner { fondo: #CC0000; altura: 300px; ancho: 720px; } La aplicación de ID en HTML es similar a la aplicación de clases, pero usa un atributo diferente llamado, lógicamente,identificación. Por ejemplo, para aplicar el estilo anterior a una etiqueta <div>, escribiría este HTML: <div id="pancarta"> Del mismo modo, para indicar que el último párrafo de una página es el único aviso de derechos de autor de esa página, puede crear un estilo de ID llamado #derechos de autory agréguelo a la etiqueta de ese párrafo: <p id="derechos de autor"> NotaAl igual que con los estilos de clase, utilice el símbolo # solo cuando nombre el estilo en la hoja de estilos. Omite el # cuando usa el nombre de ID como parte de una etiqueta HTML: <div id="banner">. Capítulo 3:SELECTORES: IDENTIFICAR QUÉ ESTILIZAR www.it-ebooks.info 61 ESTILO grupos de Etiquetas CLÍNICA DE USUARIOS ELÉCTRICOS identificaciones adecuadas Los selectores de ID tienen algunos poderes de los que carecen los selectores de clase. Estos Selector para crear enlaces a las letras del alfabeto. Cuando sus beneficios en realidad no tienen nada que ver con CSS, por lo que es posible que nunca necesite visitantes hacen clic en "R", saltan inmediatamente a todas las palabras una identificación. Pero si tienes curiosidad: "R" en la página. En realidad, no necesita crear ningún CSS para esto: • Una manera fácil para que los programadores de JavaScript ubiquen y manipulen partes de una página es aplicar una ID a un elemento de la página y luego usar JavaScript para hacer referencia a esa ID. Por ejemplo, los programadores a menudo aplican una ID a un elemento de formulario como un cuadro de texto para recopilar el nombre de un visitante. El ID permite que JavaScript acceda a ese elemento del formulario y haga su magia, como asegurarse de que el campo no esté funciona únicamente con HTML. Primero, agregue un atributo de ID al lugar de la página que desea vincular. Por ejemplo, en un glosario puede agregar un h2etiqueta con una letra del alfabeto seguida de las listas del glosario, tal vez en una lista de definiciones o en una serie de párrafos. Simplemente agregue una identificación apropiada para cada uno de esos h2etiquetas: <h2 id="R">R</h2>.Para crear el enlace en HTML, agregue el símbolo de libra y el nombre de identificación al final de la URL, seguido del nombre de identificación:index.html#R. Este enlace vacío cuando el visitante haga clic en Enviar. • Los ID también le permiten vincular a una parte específica de una página, lo que hace que las páginas web largas sean más rápidas de navegar. Si tiene un glosario alfabético de términos, puede usar una identificación apunta directamente a un elemento con el ID de #Ren la pagina índice.html. (Cuando se usa de esta manera, la ID se comporta como un ancla con nombre—<un nombre="R">R</a>—en HTML). Estilizar grupos de etiquetas A veces, necesita una forma rápida de aplicar el mismo formato a varios elementos diferentes. Por ejemplo, quizás desee que todos los encabezados de una página compartan el mismo color y fuente. Creando un estilo separado para cada encabezado—h1, h2, h3, h4,etcétera—es demasiado trabajo, y si luego desea cambiar el color de todos los encabezados, entonces tiene seis estilos diferentes para actualizar. Un mejor enfoque es utilizar ungrupo selector. Los selectores de grupo le permiten aplicar un estilo a varios selectores al mismo tiempo. Construcción de selectores de grupo Para trabajar con selectores como grupo, simplemente cree una lista de selectores separados por comas. Entonces, para diseñar todas las etiquetas de encabezado con el mismo color, puede crear la siguiente regla: h1, h2, h3, h4, h5, h6 { color: #F1CD33; } Este ejemplo consta solo de selectores de etiquetas, pero puede usar cualquier selector válido (o combinación de tipos de selector) en un selector de grupo. Por ejemplo, aquí hay un selector que aplica el mismo color de fuente a la etiqueta <h1>, la etiqueta <p>, cualquier etiqueta con el estilo . derechos de autorclase,yla etiqueta con el #banderaIDENTIFICACIÓN: h1, p, .copyright, #banner { color: #F1CD33; } 62 Css3: el manual perdido www.it-ebooks.info CONSEJOSi quieres un montón de elementos de página para compartiralgunopero no todas con las mismas propiedades de formato, entonces puede crear un selector de grupo con las opciones de formato compartidas y también crear reglas individuales con formato único ETIQUETAS DE ESTILO DENTRO DE LAS ETIQUETAS para cada elemento individual. En otras palabras, dos (o más) estilos diferentes pueden formatear la misma etiqueta. La capacidad de usar múltiples estilos para dar formato a un solo elemento es una característica poderosa de CSS. Vea el Capítulo 5 para más detalles. El Selector Universal (Asterisco) Piense en un selector de grupo como una abreviatura para aplicar las mismas propiedades de estilo a varios elementos de página diferentes. CSS también le brinda una especie de selector de grupo übertheuniversal selector. Un asterisco (*) es una forma abreviada de selector universal para seleccionar cada unoetiqueta. Por ejemplo, supongamos que desea que todas las etiquetas de su página aparezcan en negrita. Su selector de grupo podría parecerse a lo siguiente: a, p, img, h1, h2, h3, h4, h5 ...yadda yadda... { font-weight: bold; } El asterisco, sin embargo, es una forma mucho más corta de decirle a CSS que seleccionetodoEtiquetas HTML en la página: * { font-weight: negrita; } Incluso puede usar el selector universal como parte de un selector descendiente, para que pueda aplicar un estilo a todas las etiquetas que descienden de un elemento de página en particular. Por ejemplo, .pancarta *selecciona cada etiqueta dentro del elemento de página al que ha aplicado el banderaclase. (A continuación, leerá sobre los selectores de descendientes). Dado que el selector universal no especifica ningún tipo de etiqueta en particular, es difícil predecir su efecto en las páginas de un sitio web completo, todas compuestas por una variedad de etiquetas HTML diferentes. Para formatear muchos elementos de página diferentes, los gurús de páginas web confían enherencia—un rasgo de CSS discutido en profundidad en el próximo capítulo. Estilo de etiquetas dentro de etiquetas Elegir si diseñar su página con selectores de etiquetas o selectores de clase es una compensación. Los selectores de etiquetas son rápidos y fáciles, pero hacen que cada aparición de una etiqueta tenga el mismo aspecto, lo cual está bien, si desea que cada <h2>en su página para verse exactamente como el resto. Los selectores de clase e ID le brindan la flexibilidad de diseñar elementos de página individuales de forma independiente, pero la creación de estilos de clase o ID también requiere que agregue la clase o ID adecuada a las etiquetas HTML que desea diseñar. Esto no solo funciona para usted, sino también para codificar su archivo HTML. Lo que necesita es una forma de combinar la facilidad de los selectores de etiquetas con la precisión de las clases y los ID. CSS tiene justo lo que necesita:selectores descendientes. Los selectores descendientes se usan para formatear un montón de etiquetas de manera similar (al igual que los selectores de etiquetas), pero solo cuando se encuentran en una parte particular de una página web. Es como decir: "Oye, tú <un>etiquetas en la barra de navegación, escucha. Tengo algo de formato para ti. Todos ustedes otros <un>etiquetas, solo muévete; no hay nada que ver aquí. Capítulo 3:SELECTORES: IDENTIFICAR QUÉ ESTILIZAR www.it-ebooks.info 63 ETIQUETAS DE ESTILO DENTRO DE LAS ETIQUETAS Los selectores de descendientes le permiten dar formato a una etiqueta en función de su relación con otras etiquetas. Para comprender cómo funciona, debe profundizar un poco más en HTML. En el lado positivo, los conceptos subyacentes a los selectores descendientes también lo ayudan a comprender otros tipos de selectores, como se analiza más adelante en este capítulo. NotaLos selectores de descendientes pueden ser confusos al principio, pero se encuentran entre las técnicas más importantes para aplicar CSS de manera eficiente y precisa. Tómese el tiempo para dominarlos. El árbol genealógico HTML El HTML que forma cualquier página web es similar a un árbol genealógico, donde las etiquetas HTML representan a varios miembros de la familia. La primera etiqueta HTML que usa en una página: el <html> etiqueta: es como el abuelo de todas las demás etiquetas. El <html>etiqueta rodea el <cabeza> etiqueta y el < cuerpo>etiqueta, lo que hace <html>elantepasadode ambos. De manera similar, una etiqueta dentro de otra etiqueta es unadescendiente. El <título>La etiqueta en el siguiente ejemplo es el descendiente de la etiqueta <head>: <html> <cabeza> <title>Un documento simple</title> </ head> <cuerpo> <h1>Encabezado</h1> <p>Un párrafo de texto <strong>importante</strong>.</p> </ body> </html> Puede convertir el código HTML anterior en un diagrama, como la Figura 3-4, que muestra las relaciones entre las etiquetas de la página. Primero está el <html>etiqueta; se divide en dos secciones representadas por el <cabeza>y <cuerpo>etiquetas Esas dos etiquetas contienen otras etiquetas que a su vez pueden contener otras etiquetas. Al ver qué etiquetas aparecen dentro de qué otras etiquetas, puede diagramar cualquier página web. Figura 3-4 HTML consta de etiquetas anidadas: etiquetas dentro de etiquetas dentro de incluso más etiquetas. La relación entre estas etiquetas, cómo están anidadas unas dentro de otras, forma una especie de árbol genealógico. 64 Css3: el manual perdido www.it-ebooks.info Los diagramas de árbol lo ayudan a descubrir cómo CSS ve la relación de un elemento en una página con otro. Muchos de los selectores de este capítulo, incluidos los selectores ETIQUETAS DE ESTILO DENTRO DE LAS ETIQUETAS descendientes, se basan en estas relaciones. Las relaciones más importantes son: • Antepasado.Como se explicó al comienzo de este capítulo, una etiqueta HTML que se envuelve alrededor de otra etiqueta es su ancestro. En la Figura 3-4, el <html>La etiqueta es un ancestro de todas las demás etiquetas, mientras que <cuerpo>la etiqueta es un ancestro de todas las etiquetas adentrode eso—el <h1>, <p>,y <fuerte>etiquetas • descendienteUna etiqueta dentro de una o más etiquetas es un descendiente. En la Figura 3-4, el <cuerpo>la etiqueta es descendiente de <html>etiqueta, mientras que <p>etiqueta es descendiente de ambosel <cuerpo>y <html>etiquetas • Padre.Una etiqueta principal es lamás cercanoantepasado de otra etiqueta. En la Figura 3-4, un padre es la primera etiqueta conectada directamente a otra etiqueta y encima de ella. Por lo tanto, la <html> la etiqueta es el padre del <cabeza>y <cuerpo>etiquetas, pero de ninguna otra etiqueta. Y, en este diagrama, el <p>la etiqueta es el padre del <fuerte>etiqueta. • Niño.Una etiqueta que está encerrada directamente por otra etiqueta es un elemento secundario. En la Figura 3-4, tanto el <h1>y <p>las etiquetas son hijas de <cuerpo>etiqueta, pero el <fuerte> la etiqueta no lo es. Desde el <fuerte>la etiqueta está directamente envuelta dentro de <p>etiqueta, es un elemento secundario de <p> etiqueta. • Hermano.Las etiquetas que son hijos de la misma etiqueta se llamanhermanos, como hermanos y hermanas. En un diagrama HTML, las etiquetas hermanas están una al lado de la otra y conectadas al mismo padre. En la Figura 3-4, el <cabeza>y <cuerpo>las etiquetas son hermanas, al igual que <h1>y <p>etiquetas Afortunadamente, ahí es donde CSS traza la línea con esta metáfora familiar, para que no tengas que preocuparte por tías, tíos o primos. (Aunque se rumorea que CSS10voluntad incluir a los suegros). Construyendo selectores de descendientes Los selectores de descendientes le permiten aprovechar el árbol genealógico HTML dando formato a las etiquetas de manera diferente cuando aparecen dentro de otras etiquetas o estilos determinados. Por ejemplo, supongamos que tiene un <h1>etiqueta en su página web, y desea enfatizar una palabra dentro de ese encabezado con el <fuerte>etiqueta. El problema es que la mayoría de los navegadores muestran etiquetas de encabezado y <fuerte>etiqueta en negrita, para que cualquier persona que vea la página no pueda ver ninguna diferencia entre la palabra enfatizada y las otras palabras en el título. Creación de un selector de etiquetas para cambiar el <fuerte>el color de la etiqueta y hacer que se destaque del título no es una gran solución: terminas cambiando el color de cada<fuerte>etiqueta en la página, te guste o no. Un selector descendente te permite hacer lo que realmente quieres: cambiar el color de <fuerte>etiquetasólo cuandoaparece dentro de un <h1> etiqueta. La solución al <h1>y <fuerte>dilema se ve así: h1 fuerte { color: rojo; } Capítulo 3:SELECTORES: IDENTIFICAR QUÉ ESTILIZAR www.it-ebooks.info sesenta y cinco ETIQUETAS DE ESTILO DENTRO DE LAS ETIQUETAS Aquícualquier<fuerte>La etiqueta dentro de un h1 es roja, pero otras instancias de <fuerte> etiqueta en la página no se ven afectados. Podría lograr el mismo resultado creando un estilo de clase—.encabezado fuerte,por ejemplo, pero luego tendría que editar el HTML agregando clase = "cabecera fuerte"a la <fuerte>etiqueta dentro del encabezado. ¡El enfoque del selector descendente no agrega HTML y no más trabajo más allá de crear el estilo! Los selectores de descendientes dan estilo a los elementos que están anidados dentro de otros elementos, siguiendo exactamente el mismo patrón de ancestros y descendientes que las etiquetas en el árbol genealógico HTML. Usted crea un selector de descendientes uniendo los selectores de acuerdo con la parte del árbol genealógico que desea formatear, con el antepasado más antiguo a la izquierda y la etiqueta real a la que se dirige en el extremo derecho. Por ejemplo, en la Figura 3-5, observe los tres enlaces (el <un>etiqueta) dentro de los elementos de la lista con viñetas y otro enlace dentro de un párrafo. Para formatear los enlaces con viñetas de manera diferente a los otros enlaces en la página, puede crear el siguiente selector descendente: li a { familia de fuentes: Arial; } Figura 3-5 Este diagrama de árbol simple (derecha) representa la estructura de la página web que se muestra a la izquierda. Cada etiqueta en una página web es un descendiente de la<html>etiqueta, ya que <html>los envuelve a todos. Una etiqueta puede descender de varias etiquetas. Por ejemplo, el primero<un>etiqueta enumerada en este diagrama es un descendiente de la<fuerte>,<p>, <cuerpo>, y<html>etiquetas Esta regla dice: "Formatear todos los enlaces (a)que aparecen dentro de un elemento de lista (li)utilizando la fuente Arial”. Un selector descendiente puede contener más de dos elementos. Los siguientes son todos los selectores válidos para las etiquetas <a> dentro de las listas con viñetas en la Figura 3-5: ul li a cuerpo li a html li a cuerpo html ul li a NotaAunque, en general, es mejor escribir un selector de descendientes lo más corto posible, una de las razones por las que agregaría selectores de descendientes adicionales es si ha escrito varias reglas diferentes que dan formato a una etiqueta simultáneamente. Las instrucciones de formato de un selector descendiente prolijo pueden anular los estilos simples de clase o etiqueta. Más sobre eso en el próximo capítulo. 66 Css3: el manual perdido www.it-ebooks.info Estos cuatro selectores, todos los cuales hacen lo mismo, demuestran que no es necesario que describa el linaje completo de la etiqueta que desea formatear. Por ejemplo, en el segundo ejemplo,cuerpo li a-ulno es ETIQUETAS DE ESTILO DENTRO DE LAS ETIQUETAS necesario Este selector funciona siempre que haya un <un>etiqueta que es descendiente (en algún lugar de la línea) de un <li>etiqueta (que también es descendiente de <cuerpo>etiqueta). Este selector puede aplicarse con la misma facilidad a un <un>eso está dentro de un <em>etiqueta, eso está dentro de un <fuerte> etiqueta, que está dentro de un <li>etiqueta, y así sucesivamente. Tampoco está limitado a solo selectores de etiquetas. Puede construir selectores descendientes complejos combinando diferentes tipos de selectores. Por ejemplo, suponga que desea que sus enlaces aparezcan en amarillo solo cuando estén dentro de un elemento introductorio (que ha designado con un estilo de clase llamadointroducción).El siguiente selector hace el truco: . introducción a {color: amarillo; } Traducción rápida: aplique este estilo a cada enlace (a)eso es un descendiente de otra etiqueta que tiene elintroducciónclase que se le aplica. Creación de módulos Los selectores de descendientes se utilizan a menudo para dar formato a unmódulode código, es decir, una colección de HTML que cumple una función particular en una página. Por ejemplo, digamos que tiene un <div> en la página, que se usa para enumerar las últimas noticias de la empresa. Es posible que tenga HTML como este: <div> <h2>¡Nuestra empresa es genial!</h2> <p>Más información sobre por qué nuestra empresa es tan grande</ p> <h2>Otra noticia</h2> <p>Información sobre la otra noticia…</p> <h2>…y así sucesivamente…</h2> <p>… y así sucesivamente… </ p> </div> Si simplemente le das una palmada a una clase en esa apertura <div>etiqueta—<div class="noticias">—luego puede crear selectores descendientes que formatean las etiquetas HTML dentro de la sección de noticias de manera diferente. Por ejemplo, . noticias h2 { color: rojo; } . noticias p { color: azul; } Ahora el <h2>las etiquetas dentro de la sección de noticias serán rojas y los párrafos, azules. Incluso es posible (y común) crear selectores descendientes con múltiples nombres de clase. Por ejemplo, supongamos que está creando una página que proporciona un directorio de direcciones para los miembros de una organización. Puede envolver cada contacto en su propiodivisión,y refinar aún más los elementos dentro de esedivisióncon una clase como esta: <div clase="contacto"> <p class="nombre">John Smith</p> <p class="teléfono">555-555-1234</p> <p class="dirección">1234 Elem St</p> </div> Capítulo 3:SELECTORES: IDENTIFICAR QUÉ ESTILIZAR www.it-ebooks.info 67 seudoCLASES Y seudoElementos Luego, podría crear varios selectores descendientes para diseñar solo esos elementos de contacto como este: . contacto .name { font-weight: bold; } . contacto .phone { color: azul ;} . contacto .dirección { color: rojo; } NotaEn una hoja de estilo, a veces puede ver algo como esto: p.introducción Esto puede parecer un selector descendiente, ya que hay una etiqueta HTML y una clase, pero no lo es. No hay espacio entre el pagy el .introducción,lo que significa que elintroducciónla clase debe aplicarse específicamente a un <p>etiqueta (<p class="intro">)para que este estilo funcione. Si agrega un espacio, obtiene un efecto diferente: p .intro { color: amarillo; } Esta variación aparentemente leve selecciona cualquier etiqueta con el estilo .introducciónclass, que en sí misma es descendiente de una etiqueta <p>. En otras palabras, no selecciona un párrafo, selecciona otra etiqueta dentro de un párrafo. En general, para mantener los estilos de clase lo más flexibles posible, es mejor omitir la etiqueta HTML (en otras palabras, use solo .introducción en lugar dep.introducción). Pseudo-clases y pseudo-elementos A veces es necesario seleccionar partes de una página web que no tienen etiquetas per se, pero que, sin embargo, son fáciles de identificar, como la primera línea de un párrafo o un enlace al pasar el mouse sobre él. CSS te da un puñado de selectores para estos doohickeys— pseudo-clasesypseudo-elementos. Estilos para enlaces Cuatro pseudoclases le permiten formatear enlaces en cuatro estados diferentes en función de cómo un visitante ha interactuado con ese enlace. Identifican cuando un enlace está en uno de los siguientes cuatro estados: • un enlaceselecciona cualquier enlace que su invitado aún no haya visitado, mientras el mouse no se desplaza ni hace clic en él. Este estilo es su enlace web normal y no utilizado. • a: visitadoes un enlace en el que su visitante ha hecho clic antes, de acuerdo con el historial del navegador web. Puede diseñar este tipo de enlace de manera diferente a un enlace normal para decirle a su visitante: "¡Oye, ya has estado allí!" (Consulte el cuadro en la página 294 para ver las limitaciones que rodean a este selector). • a: flotarle permite cambiar la apariencia de un enlace a medida que su visitante pasa el mouse sobre él. Los efectos de rollover que puede crear no son solo para divertirse, sino que pueden proporcionar información visual útil para los botones de una barra de navegación. 68 Css3: el manual perdido www.it-ebooks.info También puede utilizar el:flotarpseudo-clase en elementos que no sean enlaces. Por ejemplo, puede usarlo para resaltar texto en un <p>o <div>cuando sus invitados pasen el mouse sobre seudoCLASES Y seudoElementos él. En ese caso, en lugar de usara: flotar (que es para enlaces) para agregar un efecto de desplazamiento, puede crear un estilo llamadop: flotarpara crear un efecto específico cuando alguien pasa el mouse sobre cualquier párrafo. Si solo desea diseñar etiquetas con una clase específica dedestacaraplicado a ellos, luego cree un estilo llamado . resaltar: flotar. • a:activole permite determinar cómo se ve un enlacecomosu visitante hace clic. En otras palabras, cubre el breve nanosegundo cuando alguien presiona el botón del mouse, antes de soltarlo. El Capítulo 9 le muestra cómo diseñar enlaces utilizando estos selectores para ayudar a sus visitantes a hacer clic en su sitio. NotaPuede vivir una vida larga y productiva sin leer sobre los selectores en las próximas secciones. Muchos diseñadores web nunca los usan. Los selectores que ha aprendido hasta ahora (etiqueta, clase, ID, descendiente, grupo, etc.) le permiten crear sitios web absolutamente hermosos, funcionales y fáciles de mantener. Si está listo para las cosas divertidas (diseñar páginas web), vaya al tutorial de la página 81. Siempre puede terminar de leer esta discusión en una noche fría y lluviosa junto al fuego. Estilizar partes de párrafo Las características tipográficas que hacen que los libros y las revistas se vean geniales, elegantes y pulidos no existían en la era web temprana. (Después de todo, ¿cuándo se preocuparon los científicos por verse bien?) CSS proporciona dos pseudoelementos:primera letray :primera linea-que dan a sus páginas web la delicadeza de diseño que la impresión ha disfrutado durante siglos. El :primera letrael pseudoelemento le permite crear una letra capitular, una letra inicial que sobresale del resto del párrafo con un formato de fuente más grande o más audaz, como al comienzo de un capítulo de libro. Estilizando el:primera lineade un párrafo en un color diferente mantiene la atención del lector en movimiento y hace que el texto parezca atractivo y fresco. (Si está intrigado, el Capítulo 6 trata sobre cómo formatear el texto, y la página 171 cubre estos dos pseudoelementos en profundidad). NotaCSS3 cambia la sintaxis de los pseudoelementos. En CSS 2.1, los pseudoelementos comienzan con dos puntos, así: :primera letra CSS3 agrega dos puntos adicionales para diferenciar pseudoclases como:flotarde pseudo-elementos. Entonces :primera letray : primera linea,son ahora ::primera letray ::primera linea.Afortunadamente, para mantener la compatibilidad con sitios más antiguos, el navegador seguirá siendo compatible con la versión de pseudoelementos de un solo punto. Eso es algo bueno ya que Internet Explorer 8 no entiende la sintaxis de dos puntos, así que por el momento, quédese con los dos puntos por ahora, ya que todos los demás navegadores todavía lo usan también. Capítulo 3:SELECTORES: IDENTIFICAR QUÉ ESTILIZAR www.it-ebooks.info 69 seudoCLASES Y seudoElementos Más pseudoclases y pseudoelementos Las pautas de CSS definen varios selectores poderosos de pseudo-clases y pseudo-elementos además de los cubiertos hasta ahora. La compatibilidad con estos selectores en todos los navegadores, excepto en los más antiguos, es muy buena. :Enfocar El :enfocarpseudo-clase funciona de manera muy similar a:flotarpseudo-clase. Mientras :flotar se aplica cuando un visitante pasa el mouse sobre un enlace:enfocarse aplica cuando el visitante hace algo para indicar su atención a un elemento de la página web, generalmente haciendo clic o tabulando en él. En la jerga de programación, cuando un visitante hace clic en un cuadro de texto en un formulario web, coloca el enfocaren ese cuadro de texto. Ese clic es la única pista que tiene un diseñador web sobre dónde está enfocando su atención el visitante. El :enfocarEl selector es principalmente útil para dar retroalimentación a su visitante, como cambiar el color de fondo de un cuadro de texto para indicar dónde está a punto de escribir. (Campos de texto de una sola línea, campos de contraseña y <área de texto>Las cajas son objetivos comunes para:enfocarselector). Este estilo, por ejemplo, agrega un color amarillo claro a cualquier cuadro de texto en el que un visitante hace clic o tabula: entrada: enfoque { color de fondo: #FFFFCC; } El :enfocarEl selector se aplica solo mientras el elemento está enfocado. Cuando un visitante ingresa a otro campo de texto o hace clic en cualquier otro lugar de la página, quita el foco y las propiedades CSS del cuadro de texto. CONSEJOUn buen recurso para ver qué navegadores admiten qué selector de CSS eswww.quirksmode.org/css/ contents.html. :Antes El :antespseudo-elemento hace algo que ningún otro selector puede hacer: le permite agregar contenido que precede a un elemento determinado. Por ejemplo, supongamos que desea poner "¡CONSEJO IMPORTANTE!" antes de ciertos párrafos para que se destaquen, como los recuadros de este libro que dicen “A LA VELOCIDAD” y “CLINICA DE USUARIOS PODEROSOS”. En lugar de escribir ese texto en el HTML de su página, puede dejar que:antesselector hazlo por ti. Este enfoque no solo ahorra código, sino también si decide cambiar el mensaje de "¡CONSEJO IMPORTANTE!" a, digamos, "Cosas que debe saber", luego puede cambiar cada página de su sitio con un cambio rápido en su hoja de estilo. (La desventaja es que este mensaje especial es invisible para los navegadores que no entienden CSS o no entienden:antesselector.) Primero, crea una clase (.consejo,say) y aplíquelo a los párrafos que desea preceder con el mensaje, así: <p clase="consejo">.Luego, agregue el texto de su mensaje a la hoja de estilo: p.tip:before {contenido: "¡CONSEJO IMPORTANTE!" } Cada vez que un navegador encuentra el archivo .consejoclase en un <p>etiqueta, inserta obedientemente el texto "¡CONSEJO IMPORTANTE!" justo antes del párrafo. 70 Css3: el manual perdido www.it-ebooks.info El término técnico para el texto que agrega con este selector escontenido generado, ya que los navegadores web lo crean (generan) sobre la marcha. En el código fuente HTML de la página, este seudoCLASES Y seudoElementos material no existe. Ya sea que se dé cuenta o no, los navegadores generan su propio contenido todo el tiempo, como las viñetas en las listas con viñetas y los números en las listas ordenadas. Si lo desea, puede incluso utilizar el:antesselector para definir cómo un navegador muestra sus viñetas y números para las listas. Internet Explorer 8 y versiones posteriores, así como todos los demás navegadores principales, son compatibles con:antes selector (y el :despuésselector que viene a continuación). Encontrará más información sobre el uso de estos selectores en el cuadro de la página 259. :DESPUÉS Exactamente como el:antesseleccionador, el:despuésel pseudo-elemento agrega contenido generado, pero después del elemento, no antes. Puede usar este selector, por ejemplo, para agregar comillas de cierre (") después del material citado. NotaAmbos :antesy :despuésson pseudo-elementos como:primera lineay :primera letra. Como se menciona en la nota de la página 69, CSS3 agrega dos puntos dobles a los pseudoelementos, por lo que:antes,y :después se escriben como ::antesy ::despuésen CSS3. Afortunadamente, los navegadores admiten la notación anterior, por lo que puede continuar usando:antesy :después,que tienen el beneficio adicional de trabajar en Internet Explorer 8. ::Selección Este selector de CSS3 se refiere a elementos que un visitante ha seleccionado en una página. Por ejemplo, cuando un visitante hace clic y arrastra sobre el texto, el navegador resalta ese texto y el visitante puede copiarlo. Normalmente, los navegadores agregan un fondo azul detrás del texto. Internet Explorer cambia el color del texto a blanco. Sin embargo, puede controlar el color de fondo y el color del texto definiendo este selector. Por ejemplo, si quisiera que el texto seleccionado fuera blanco con un fondo violeta, podría agregar este estilo a la hoja de estilo de una página: ::selección { color: #FFFFFF; color de fondo: #993366; } Las únicas propiedades que puede establecer con este selector soncolorycolor de fondo, para que pueda volverse loco y cambiar el tamaño de la fuente, las fuentes, los márgenes u otros cambios visuales que seguramente volverán locos a los visitantes de su sitio. (¡Gracias por protegernos de nosotros mismos, CSS!) NotaNo hay una versión de dos puntos del pseudoelemento de selección, por lo que debe usar los dos puntos dobles. En otras palabras, ::selecciónfunciona, pero:selecciónno. Este selector funciona en Internet Explorer 9, Opera, Chrome y Safari, pero no en IE 8 o Firefox. Sin embargo, puede agregar soporte para Firefox agregando lo que se llama un prefijo-proveedoral selector, así: Capítulo 3:SELECTORES: IDENTIFICAR QUÉ ESTILIZAR www.it-ebooks.info 71 atributo SELECTORES ::-moz-selección { color: #FFFFFF; color de fondo: #993366; } Para que esto funcione en Firefox y en los demás navegadores, debe tener ambos estilos en su hoja de estilos; simplemente colóquelos uno tras otro. (Obtendrá más detalles sobre los prefijos de proveedores y por qué los necesita en el cuadro de la página 209). Si realmente quiere volverse loco, puede especificar un color de fondo diferente solo para el texto seleccionado dentro de un elemento en particular. Por ejemplo, para hacer que solo el texto dentro de los párrafos sea rojo con un fondo rosa, simplemente agregue elpagselector de elementos antes ::selección,como esto: p::selección { color rojo; color de fondo: rosa; } CONSEJOAprender a escribir selectores a veces puede parecer como aprender jeroglíficos. Para traducir un selector a un lenguaje sencillo, visite Selectoracle enhttp://gallery.theopalgroup.com/selectoracle. Este gran recurso le permite escribir en un selector y luego escupe una descripción clara de qué elementos de página en una página afecta el estilo. Selectores de atributos CSS proporciona una forma de formatear una etiqueta en función de cualquier atributo HTML que tenga. Por ejemplo, supongamos que desea colocar bordes alrededor de las imágenes de su página, pero solo alrededor de las fotos importantes. No desea incluir su logotipo, botones y otros pequeños adornos que también tienen un <imagen>etiqueta. Afortunadamente, te das cuenta de que has dado todas las descripciones de las fotos usando eltítuloatributo, lo que significa que puede utilizar un selector de atributos para identificar sólo las imágenes importantes. CONSEJOel htmltítuloEl atributo es una excelente manera de agregar información sobre herramientas (mensajes emergentes) a enlaces e imágenes en una página. También es una forma de informar a los motores de búsqueda sobre la información útil en una página web. Obtenga más información al respecto en http://diseñoweb.about.com/od/htmltags/a/aa101005.htm. Con los selectores de atributos, puede seleccionar etiquetas que tengan una propiedad particular. Por ejemplo, aquí se explica cómo seleccionar todos los <imagen>etiquetas con untítuloatributo: img[título] La primera parte del selector es el nombre de la etiqueta (imagen)mientras que el nombre del atributo va entre paréntesis: [título]. 72 Css3: el manual perdido www.it-ebooks.info CSS no limita los selectores de atributos a los nombres de etiquetas: también puede combinarlos con clases. Por ejemplo, .foto [título]selecciona cada elemento con el .foto estilo atributo SELECTORES de clase y un atributo de título HTML. Para ser más específico, puede seleccionar elementos que no solo compartan un atributo en particular, sino que también tengan un valor exacto establecido para ese atributo. Por ejemplo, cuando desee resaltar enlaces que apuntan a una URL en particular, cree un selector de atributos llamativo, así: a[href="http://www.cafesoylentgreen.com"]{ color rojo; fuente-peso:negrita; } Agregar un valor a un selector de atributos es muy útil cuando se trabaja con formularios. Muchos elementos de formulario tienen la misma etiqueta, incluso si se ven y actúan de manera diferente. La casilla de verificación, el cuadro de texto, el botón Enviar y otros campos del formulario comparten el <entrada>etiqueta. El valor del atributo de tipo es lo que le da al campo su forma y función. Por ejemplo, <tipo de entrada="texto">crea un cuadro de texto y < tipo de entrada = "casilla de verificación">crea una casilla de verificación. Para seleccionar solo cuadros de texto en un formulario, por ejemplo, use este selector: entrada[tipo="texto"] El selector de atributos es muy versátil. Le permite no solo encontrar etiquetas que tengan un valor específico para un atributo (por ejemplo, buscar todos los campos de formulario con un tipo de casilla de verificación), sino incluso seleccionar elementos con un valor de atributo quecomienza con, termina con, o contiene un valor específico. Si bien esto puede parecer excesivo, en realidad es bastante útil. Por ejemplo, suponga que desea crear un estilo específico para resaltar enlaces externos (enlaces que apuntan fuera de su propio sitio web) para indicar: "Oye, abandonarás este sitio si haces clic aquí". Suponiendo que no utilice enlaces absolutos para vincular a ninguna página de su propio sitio, puede suponer que cualquier enlace externo comienza conhttp://—la primera parte de cualquier vínculo absoluto. Si ese es el caso, el selector se vería así: a[href^="http://"] El ^= se traduce como "comienza con", por lo que puede usar este selector para dar formato a cualquier enlace que comience conhttp://. Puede usarlo para diseñar un enlace que apunte ahttp:// www. google.comasí como un enlace ahttp://www.sawmac.com. En otras palabras, selecciona cualquier enlace externo. NotaEste selector no funcionará para ninguna conexión segura a través de SSL; en otras palabras, cualquier enlace que comience conhttps://. Para crear un estilo que también los afecte, puede crear un selector de grupo (página 84) como este: a[href^="http://"], a[href^=" https://"] De manera similar, hay momentos en los que desea seleccionar un elemento con un atributo que terminaen un valor específico. Nuevamente, los enlaces son útiles para esta tarea. Di que quieres agregar Capítulo 3:SELECTORES: IDENTIFICAR QUÉ ESTILIZAR www.it-ebooks.info 73 Niño SELECTORES un pequeño icono de documento junto a cualquier enlace que apunte a un archivo PDF. Dado que los documentos PDF terminan en .pdf, sabe que un enlace que apunta a uno de esos archivos terminará en .pdf, por ejemplo, <a href="descargar_instrucciones.pdf">.Entonces, para seleccionar solo esos tipos de enlaces, crearía un selector como este: a[href$=".pdf"] El estilo completo podría verse así: a[href$=".pdf"] { fondo: url(doc_icon.png) sin repetición; relleno-izquierda: 15px; }; No se preocupe demasiado por las propiedades particulares de este estilo; aprenderá sobre el relleno en la página 195 y sobre las imágenes de fondo en la página 240. Solo preste atención a ese genial selector: $= se traduce como "termina con". Puede usar este selector para formatear enlaces que apuntan a documentos de Word ([a href$=".doc"]),películas (un [href$=".mp4"]),etcétera. Finalmente, puede incluso seleccionar elementos con atributos que contengan otro valor. Por ejemplo, supongamos que le gusta resaltar fotos de sus empleados en todo el sitio. Es posible que desee que todas esas fotos tengan un estilo común, como un borde verde grueso y un fondo gris. Una forma de hacer esto es crear un estilo de clase—.disparo a la cabeza,por ejemplo, y agregue manualmente un atributo de clase al <imagen>etiquetas Sin embargo, si nombra las fotos de manera consistente, entonces hay un método más rápido. Por ejemplo, supongamos que nombra cada una de esas imágenes con la palabradisparo a la cabezaen ellos, por ejemplo,mcfarland_headshot.png,mccord_headshot.jpg,headshot_albert . jpg, etcétera. Cada uno de estos archivos tiene la palabradisparo a la cabezaen algún lugar del archivo, por lo que elorigenatributo del < imagen>etiqueta utilizada para insertar cada imagen también contiene la palabra disparo a la cabeza. Puede crear un selector solo para esas imágenes como esta: img[src*="foto de cabeza"] Esto se traduce como "seleccionar todas las imágenes cuyasorigenatributo tiene la palabradisparo a la cabeza en algún lugar de él. Es una manera simple y elegante de formatear solo esas imágenes. Selectores de niños Similar a los selectores de descendientes descritos anteriormente en este capítulo, CSS le permite formatear los elementos secundarios de otra etiqueta con unniñoselector. El selector secundario utiliza un símbolo adicional: un corchete angular (>) para indicar la relación entre los dos elementos. Por ejemplo, el seleccionadorcuerpo > h1selecciona cualquier <h1>etiqueta que es hija de <cuerpo> etiqueta. A diferencia de un selector descendiente, que se aplica atododescendientes de una etiqueta (hijos, nietos, etc.), el selector de hijos le permite especificar a qué hijo de qué padre se refiere. Por ejemplo, en la Figura 3-6, hay dos <h2>etiquetas Usando un simple selector de descendientes antiguo—cuerpo h2—selecciona ambos <h2>etiquetas Aunque ambos <h2> 74 Css3: el manual perdido www.it-ebooks.info las etiquetas están dentro de <cuerpo>etiqueta, solo la segunda es un elemento secundario de <cuerpo> etiqueta. el primero <h2>está directamente dentro de un <div>etiqueta, por lo que su padre es el <división>. Niño SELECTORES Ya que los dos <h2> las etiquetas tienen diferentes padres, puede usar un selector de niños para llegar a ellos individualmente. Para seleccionar solo el segundo <h2>etiqueta, su selector de niños se ve así:cuerpo > h2.Si quieres el primero <h2>etiqueta, entonces debe usar este selector de niños en su lugar:división > h2. Figura 3-6 El diagrama (derecha) muestra la relación entre las etiquetas HTML (izquierda). CSS3 también incluye algunas pseudoclases muy específicas para seleccionar elementos secundarios. Le permiten ajustar sus selectores para muchos arreglos diferentes de HTML. :PRIMER HIJO Volviendo a la analogía del árbol genealógico HTML por un momento, recuerde qué es una etiqueta secundaria: cualquier etiqueta encerrada directamente por otra etiqueta. (Por ejemplo, en la Figura 3-6, <h1>, <div>, <h2>,y <ul>son todos hijos de <cuerpo>etiqueta.) El :primer hijopseudo-elemento le permite seleccionar y formatear solo elprimerode cuantos hijos pueda tener un elemento. En la Figura 3-6, si desea seleccionar el primer <h1>etiqueta en la página, cree un selector como este: h1: primer hijo Este selector se aplica a cualquier <h1>etiqueta que es un primer hijo. En la Figura 3-6, los resultados son obvios: solo hay en <h1>etiqueta y es la primera etiqueta en la página. Por lo tanto es un hijo del <cuerpo>elemento. Sin embargo, :primer hijopuede ser confuso. Por ejemplo, si cambia el <h2> etiqueta dentro del <div>representado en la Figura 3-6 a un <h1>etiqueta, Capítulo 3:SELECTORES: IDENTIFICAR QUÉ ESTILIZAR www.it-ebooks.info 75 Niño SELECTORES entoncesh1: primer hijoseleccionaría tanto el <h1>directamente dentro del <cuerpo>etiqueta y el <h1>dentro dedivisión (ya que <h1> es elprimer hijodeldivisión). :ÚLTIMO NIÑO Esto es como :primer hijodiscutido anteriormente, pero solo con el último hijo de un elemento. Por ejemplo, para aplicar estilo al último elemento de una lista, utilice elul :último hijoselector (vea la Figura 3-7). Figura 3-7 La amplia gama de selectores secundarios de CSS le brinda una variedad de formas de seleccionar elementos secundarios. Estos selectores son excelentes cuando desea resaltar el primero, el último o un número alternativo de elementos en una lista. ENÉSIMO NIÑO Este selector complejo es muy útil. Con él, puede diseñar fácilmente una fila alterna en una tabla, cada tercer elemento de la lista o diseñar cualquier combinación de elementos secundarios alternos (vea la Figura 3-7). Este selector requiere un valor para determinar qué elementos secundarios seleccionar. La opción más fácil es una palabra clave, ya seaextrañooincluso-que le permite seleccionar elementos secundarios pares o impares alternos. Por ejemplo, si desea proporcionar un color de fondo para cada fila par en una tabla y otro color en el fondo de cada fila impar, puede escribir dos estilos como este: tr:nésimo hijo(impar) { color de fondo: #D9F0FF; } tr:nthchild(par) { color de fondo: #FFFFFF; } Esa es una forma muy sencilla de colorear filas alternas de una tabla (vea la Figura 3-8). Pero :nthchild()tiene aún más poder bajo la manga. También puede seleccionar, digamos, cada tercer elemento secundario en una serie, comenzando con el segundo elemento secundario. Por ejemplo, suponga que desea resaltar cada tercera celda de la tabla (<td>etiqueta) dentro de una fila, comenzando con la segunda celda de la tabla (vea la Figura 3-8). Aquí hay un estilo para lograr eso: tr td:nth-child(3n+2) { color de fondo:#900; } Básicamente, el número antes deln (3 en este caso) representa qué elemento secundario está buscando. Entonces,3nsignifica cada tercer elemento, mientras que4nsignifica cada cuarto elemento. El signo más seguido de un número (+2en este ejemplo) indica qué elemento 76 Css3: el manual perdido www.it-ebooks.info empezar en, entonces +2significa comenzar en el segundo elemento secundario, mientras que +5significa comenzar en el quinto elemento secundario. Entonces :enésimo hijo(5n + 4)selecciona cada quinto elemento secundario a partir Niño SELECTORES del cuarto elemento secundario. Figura 3-8 Despiece de mesas de forma sencilla: con selectores para niños. Incluso puedes rayar columnas alternas por apuntando a todos los demás <td>etiqueta dentro de una fila o, como en este caso, cada tercera columna que comienza con el segundo. ¡Eso sí que es precisión! Selectores de tipo de niño CSS3 incluye un selector que funciona de manera muy similar a los selectores secundarios de la sección anterior, pero se aplica a los elementos secundarios con un tipo específico de HTML.etiqueta. Por ejemplo, digamos que desea formatear el primer párrafo dentro de una barra lateral de una manera particular, pero en algunas páginas, esa barra lateral comienza con un <h2>etiqueta, y en otras páginas, comienza con un < p>etiqueta. No puedes usar:primer hijopara seleccionar ese párrafo, ya que en algunos casos es elsegundo niño (siguiendo el <h2>).Sin embargo, siempre es el primero.párrafo (<p>etiqueta) en esa barra lateral, incluso si hay otras etiquetas antes, por lo que puede seleccionarlo con un selector de tipo llamado:primero de tipo. Nota:último hijo, :primero de tipo,y :nth-child()son compatibles con todos los navegadores modernos, incluido Internet Explorer 9 y superior. Por desgracia, estos no funcionan en IE 8. :PRIMERO-DE-TIPO Funciona como:primer hijopero se aplica a un niño que tiene una etiqueta particular. Por ejemplo, supongamos que tiene un elemento de barra lateral con la clasebarra lateralPara diseñar el primer párrafo en esa barra lateral, use este selector: . barra lateral p: primero de tipo Observe lapagenp: primero de tipo.Indica la etiqueta que vas a formatear. :ÚLTIMO-DE-TIPO Funciona como:último niñopero se aplica a la última instancia de un tipo particular de etiqueta. Por ejemplo, si desea formatear el último párrafo en el div de la barra lateral de una manera particular, pero no está seguro de si hay otras etiquetas después del párrafo (como una lista con viñetas, un título o una imagen). Aquí está el estilo: . barra lateral p: último tipo Capítulo 3:SELECTORES: IDENTIFICAR QUÉ ESTILIZAR www.it-ebooks.info 77 Niño SELECTORES NotaRecuerde, estos selectores de tipo también tienen que ser elementos secundarios de una etiqueta en particular. Entoncesp: primero de tipo significa "el primer hijo que es una etiqueta de párrafo". :NTH-DE-TIPO Funciona como:nth-child()pero se aplica a los hijos alternos que tienen una etiqueta específica. Puede encontrar útil este selector si tiene algo así como un gran párrafo de texto que está salpicado de fotos. El < imagen>etiqueta es una etiqueta en línea, por lo que puede tener un <p> etiqueta con un montón de < imagen>etiquetas en su interior. Y supongamos que desea hacer flotar las imágenes alternativamente hacia la izquierda y hacia la derecha, como se muestra en la Figura 3-9. Puedes hacerlo con estos dos estilos: img:nth-of-type(odd) { float: left; } img:nthof-type(even) { float: right; } Como puede ver, utiliza las mismas palabras clave (extrañooincluso)y fórmula (aquí,2n+1) para :enésimo de tipo()como lo haces por:nth-child(). De hecho, puedes usar:enésimo de tipo()para seleccionar filas alternas de la tabla también: tr: enésimo de tipo (impar) { color de fondo: #D9F0FF; } tr: enésimo de tipo (par) { color de fondo: #FFFFFF; } En el caso de los selectores de CSS, siempre hay más de una forma de personalizar una etiqueta HTML: ¡generalmente hay cinco o más! (Solo tenga en cuenta que ninguno de estos selectores de tipos secundarios es compatible con Internet Explorer 8 o anterior). Figura 3-9 Con el:enésimo de tipo() selector, puede seleccionar fácilmente cualquier otra imagen dentro de una etiqueta, alternando entre la alineación izquierda y derecha. 78 Css3: el manual perdido www.it-ebooks.info Hermanos Preguntas frecuentes Hacer que las listas se vean geniales ¿Cuándo usaría un selector de niños? Solo por leer este capítulo, ya Aplica el .listaprincipalestilo de clase a la primera <ul>etiqueta: <ul conozco suficientes selectores para llegar a casi cualquier elemento de class="listaprincipal">.Luego use un selector de niños (ul. lista principal la página, entonces, ¿por qué aprender otro?? > li )para seleccionar solo el primer conjunto de elementos de la lista y Hay un desafío de diseño en el que los selectores de niños son insuperables, y aparece en más sitios web de los que cree. Cada vez que tenga una lista desordenada con una o más listas desordenadas anidadas dentro (como en la Figura 3-6), puede usar selectores secundarios para organizar visualmente estas categorías y subcategorías de información. Puede dar formato al primer nivel de los elementos de la lista de una forma y al segundo nivel de los elementos agregar el estilo de texto deseado para la primera subcategoría. Este estilo se aplica al <li>etiquetas que son hijos de <ul> etiqueta con el . listaprincipalestilo que se le aplica. Entonces, para peinar al niño <li> etiquetas de cualquier < anidado posteriorul>las etiquetas usan este selectorul.mainList > li > ul > li. (Un selector descendiente comoulli,por el contrario, selecciona los elementos de la lista de todas las listas desordenadas en la página, anidadas y todas). de la lista de otra forma. El contenido presentado de esta manera se ve Necesitará tener en mente un concepto que aprenderá en el próximo capítulo: herencia. ordenado, profesional y legible (y sus visitantes lo amarán por ello). Básicamente, ciertas propiedades CSS aplicadas a una etiqueta son heredadas por Primero, cree un estilo de clase para el nivel anidado más externo en su lista y llámelo, digamos, .listaprincipal.Para este nivel superior, puede usar una fuente sans-serif, un poco más grande que el resto del texto, quizás en negrita o en un color diferente. Las categorías subsiguientes pueden ser más pequeñas, en una etiquetas dentro de ellas. Por lo tanto, incluso si usa un selector de elementos secundarios para dirigirse a los elementos secundarios de una etiqueta, las propiedades pueden pasar a otras etiquetas dentro de ese elemento secundario. El :no()selector, discutido en la página 80, es una forma de evitar esto. fuente serif como Times para facilitar la lectura. Cuando tiene mucho texto, diseñar cada nivel de subcategoría de manera un poco diferente ayuda a orientar visualmente a sus visitantes en el material. Hermanos Las relaciones padre-hijo no son las únicas en el árbol genealógico HTML. A veces es necesario seleccionar una etiqueta en función no de su etiqueta principal, sino de las etiquetas que la rodean, las etiquetas que comparten un elemento principal común. Una etiqueta que aparece inmediatamente después de otra etiqueta en HTML se denominahermano adyacente. En la Figura 3-6, el <div>la etiqueta es el hermano adyacente del <h1>etiqueta, el <p>la etiqueta es el hermano adyacente del <h2>etiqueta, y así sucesivamente. Usando un selector de hermanos adyacente, puede, por ejemplo, darle al primer párrafo después de cada encabezado un formato diferente al de los párrafos que siguen. Suponga que desea eliminar el margen que aparece encima de <p>etiqueta para que quede justo debajo del encabezado sin ningún espacio. O tal vez quiera darle al párrafo un color y un tamaño de fuente distintos, como una pequeña declaración introductoria. El selector de hermanos adyacente utiliza un signo más (+) para unir un elemento con el siguiente. Entonces, para seleccionar cada párrafo que sigue a cada <h2>etiqueta, utilice este selector:h2 + p (Los espacios son opcionales, por lo queh2+pfunciona también). El último elemento del selector (pag,en este caso) es lo que obtiene el formato, pero solo cuando está directamente después de su hermano <h2>. Capítulo 3:SELECTORES: IDENTIFICAR QUÉ ESTILIZAR www.it-ebooks.info 79 El no( ) Selector Hay otro selector de hermanos llamadoselector combinatorio general de hermanos(Dilo tres veces rápido). Es simplemente una ~ (tilde) y significa "seleccionar todos los hermanos de este tipo". Por ejemplo, mientrash2 + pselecciona una sola etiqueta <p> que sigue inmediatamente a un <h2> etiqueta,h2 ~ pagseleccionatodo<p>etiquetas que son hermanos (es decir, en el mismo nivel) delh2. Para ser honesto, es posible que nunca encuentre un buen uso para este selector, pero CSS no es más que completo. El selector :no() El :no()selector, también llamado pseudoclase de negación, le permite seleccionar algo que no es otra cosa. Por ejemplo, puede aplicar una clase a un párrafo: <p class="con clase">—y cree un selector de clase CSS para formatearlo, así: . elegante { color: rojo; } Pero, ¿qué sucede si desea seleccionar todos los párrafos, excepto elde buen tonopárrafos? Ahí es donde el:no()entra el selector. Pones un selector de CSS dentro de los paréntesis para indicar lo que quieresnodesea seleccionar. Por ejemplo: p: no (.con clase) { color: azul; } Este estilo hace que el texto sea de color azul para todos los párrafos que no tienen elde buen tono clase aplicada a ellos. El :no()El selector puede ser útil cuando usa los selectores de atributos que se analizan en la página 72. Por ejemplo, vio en la página 73 que puede usar un selector de atributos para seleccionar todos los enlaces que apuntan fuera de su sitio web, como este: a[href^="http://"] Como probablemente haya notado, ese selector no selecciona específicamente todos los enlaces que apuntan fuera de su sitio, simplemente selecciona todos los enlaces que usan URL absolutas, es decir, URL que comienzan conhttp://. Para muchos sitios, eso es lo mismo; muchos sitios utilizan vínculos relativos a documentos oa la raíz para apuntar a otras páginas dentro del sitio y direcciones URL absolutas para vincular a otros sitios. Sin embargo, en algunos casos, puede usar URL absolutas para apuntar a páginas dentro de su sitio. Por ejemplo, algunos sistemas de administración de contenido (WordPress, por ejemplo) usan URL absolutas para apuntar a publicaciones de blog dentro del sitio. En este caso, si desea diseñar enlaces que apuntan fuera de su sitio, debe refinar el selector de atributos básico empleando también el:no()selector. Por ejemplo, digamos que el nombre de dominio de su sitio es mysite.com. Para seleccionar enlaces que apunten fuera de su sitio, querrá seleccionar todos los enlaces absolutos quenoapuntar al dominiomisitio.com. Así es como lo harías: a[href^="http://"]:not([href^="http://misitio.com"]) 80 Css3: el manual perdido www.it-ebooks.info Traducido al inglés, este selector dice “Seleccionar todos los enlaces, cuyohrefatributo comienza conhttp://, peronolos que comienzan con http://mysite.com”. Como recordará de la Tutorial: Selector Dechado página 72, en un selector de atributos, ^= significa “empieza por”. Una forma más corta de escribir lo mismo sería esta: a[href^="http://"]:not([href*="misitio.com"]) En un selector de atributos, *= significa "contiene", por lo que excluiría cualquier URL absoluta que contenga mysite.com. Esto incluiríahttp://www.misitio.comasí comohttp:// misitio.com. Existen algunas limitaciones para:no()selector: • Solo puede usarselectores simplescon el :no()selector. En otras palabras, puede usar selectores de elementos (comohtml,opag),el selector universal (* [ver página 63]), clases (.pie de página,por ejemplo), identificaciones (#bandera,por ejemplo), o pseudoclases (: flotar, :marcado, :primer hijo,etcétera). Así que los siguientes son todos válidos: . nota al pie: no (div) img:no(.retrato) div:no(#banner) li: no (: primer hijo) • No puede usar selectores descendientes (comodiv pa,pseudo-elementos (como ::primera linea), selectores de grupo o combinadores (como el selector de hermanos adyacenteh2 + p). • No puede encadenar múltiples:no()selectores juntos. Por ejemplo, lo siguiente no es válido: a[href^="http://"]:no([href*="google.com"]):no([href="yahoo.com]) En otras palabras, solo puedes usar:no( )una vez con un selector. Tutorial: Selector de muestras En el resto de este capítulo, creará una variedad de tipos de selector y verá cómo cada uno afecta una página web. Este tutorial comienza con los tipos de selectores básicos y luego pasa a estilos más avanzados. Para comenzar, debe descargar los archivos del tutorial que se encuentran en el sitio web complementario de este libro enwww.sawmac.com/css3. Haga clic en el enlace del tutorial y descargue los archivos. Todos los archivos están incluidos en un archivo zip, por lo que primero deberá descomprimirlos. (Las instrucciones detalladas para descomprimir los archivos se encuentran en el sitio web). Los archivos de este tutorial se encuentran dentro de la carpeta denominada03. Capítulo 3:SELECTORES: IDENTIFICAR QUÉ ESTILIZAR www.it-ebooks.info 81 Tutorial: Selector Dechado PREGUNTA CON INDIGNACIÓN Manteniéndolo interno Oye, ¿qué pasa con la hoja de estilo interna en este tutorial? El Además, puede obtener una vista previa de sus resultados sin actualizar Capítulo 2 recomienda el uso de hojas de estilo externas por constantemente el caché de su navegador; Vuelva al recuadro de la página 39 para varias razones. obtener más información sobre esa peculiaridad. ¿Crees que eres bastante inteligente, eh? Sí, las hojas de estilo externas A muchos diseñadores web les gusta comenzar sus diseños con una hoja de generalmente hacen que los sitios web sean más rápidos y eficientes, estilo interna, ya que es más rápido y evita cualquier problema con todas esas por todas las razones mencionadas en el Capítulo 2. Sin embargo, las tonterías del caché. Aquí está su secreto: una vez que han perfeccionado su hojas de estilo internas facilitan su vida cuando diseña una sola página a diseño, simplemente cortan el código de la hoja de estilo interna, lo pegan en la vez, como en este tutorial. Puede trabajar en un solo archivo de una hoja de estilo externa y luego vinculan la hoja de estilo a las páginas de su página web en lugar de alternar entre el archivo de hoja de estilo sitio como se describe en la página 42. externo y la página web. 1.abiertoselector_basics.htmlen tu editor de texto favorito. Esta página está hecha de etiquetas HTML muy básicas. Lo más emocionante de esto es el banner gráfico (vea la Figura 3-10). Pero animarás las cosas en este tutorial. Comenzará agregando una hoja de estilo interna a este archivo. 2.Haga clic directamente después del cierre </título>etiqueta, presione Entrar (Retorno) y escriba <estilo>.Presione Entrar dos veces y luego escriba </estilo>. Estas son las etiquetas de estilo de apertura y cierre: es una buena idea escribir ambas etiquetas al mismo tiempo, para que no se olvide accidentalmente de agregar el cierre </estilo> etiqueta. Juntas, estas dos etiquetas le dicen a un navegador web que la información entre ellas son instrucciones de hojas de estilo en cascada. El HTML ahora debería verse así (lo que agregó está en negrita): <title>Conceptos básicos del selector</title> <estilo> </estilo> </cabeza> Los selectores de tipo, como el selector de etiquetas que está a punto de crear, son el tipo de selector más básico. (Si completó el tutorial en el último capítulo, ya ha creado algunos). 82 Css3: el manual perdido www.it-ebooks.info Tutorial: Selector Dechado Figura 3-10 El HTML simple se ve frío y monótono en un navegador web. Pero con un poco de CSS, puede convertir lo monótono (que se muestra aquí) en fabuloso (Figura 3-11) en 31 sencillos pasos. NotaSi está utilizando tipos de documentos HTML 4.01 o XHTML (en lugar de HTML5), deberá agregar eltipo="texto/css" atribuya a la etiqueta de estilo de apertura de esta manera: <tipo de estilo="texto/css"> 3.Haga clic entre las etiquetas de estilo de apertura y cierre que acaba de agregar y escriba pag {, presione regresar dos veces y escriba el cierre }. Es una buena idea agregar siempre la llave de cierre inmediatamente después de escribir la llave de apertura, solo para que no se te olvide. Para crear un selector de etiquetas, simplemente use el nombre de la etiqueta HTML que desea formatear. Este estilo se aplica a todos los párrafos de texto dentro de <p>etiquetas Capítulo 3:SELECTORES: IDENTIFICAR QUÉ ESTILIZAR www.it-ebooks.info 83 Tutorial: Selector Dechado 4.Haga clic entre las llaves de apertura y cierre del estilo ( { } ) y agregue las siguientes cuatro propiedades CSS para proporcionar el formato del estilo: color, tamaño, fuente y sangría izquierda: pag { color: #505050; tamaño de fuente: 1em; familia tipográfica: “Helvetica Neue”, Arial, Helvetica, sans-serif; margen izquierdo: 100px; } Presione Entrar para colocar cada propiedad CSS en su propia línea. También es una buena idea organizar visualmente su código CSS sangrando cada propiedad con la tecla Tabulador (algunos diseñadores usan dos espacios en lugar de una tabulación, depende de usted). NotaEstos nombres de propiedad y sus valores pueden parecer desconocidos. Por ahora, simplemente escríbalos tal como están. Aprenderá lo que significan 1em y 100px, junto con todos los entresijos de las propiedades de formato de texto, en el Capítulo 6. Su hoja de estilo está completa. Hora de echar un vistazo. 5.abra la página en un navegador web para obtener una vista previa de su trabajo. A menos que juegue con la configuración de preferencias, la mayoría de los navegadores muestran texto negro en una fuente serif estándar como Times. Si su estilo CSS funciona correctamente, debería ver siete párrafos sangrados en una fuente sans-serif en un color gris oscuro. Creación de un selector de grupo A veces querrá que varios elementos diferentes en una página compartan el mismo aspecto. Por ejemplo, es posible que desee que todos sus encabezados tengan la misma fuente y color para lograr un estilo uniforme. En lugar de crear estilos separados y duplicar la misma configuración de propiedades para cada etiqueta—<h1>, <h2>,y así sucesivamente: puede agrupar las etiquetas en un solo selector. 1.Regrese a su editor de texto y elselector_basics.htmlarchivo. Agregará un nuevo estilo debajo de <p>estilo de etiqueta que acaba de crear. 2.Haga clic al final de la llave de cierre del selector de etiquetas, presione Entrar para comenzar una nueva línea y el siguiente código: h1, h2, h3 { } Como se explicó anteriormente en este capítulo, un selector de grupo es simplemente una lista de selectores separados por comas. Esta regla aplica el mismo formato, que agregará a continuación, a todos los <h1>, <h2>,y <h3>etiquetas en la página. 84 Css3: el manual perdido www.it-ebooks.info 3.Haga clic en la línea vacía entre la apertura {y el cierre} y agregue cinco propiedades CSS: Tutorial: Selector Dechado color: #BD8100; familia tipográfica: Baskerville, "Palatino Linotype", Times, serif; borde superior: 2px sólido #86A100; acolchado superior: 7px; relleno-izquierda: 100px; Están sucediendo muchas cosas aquí, pero básicamente está configurando el color y el tipo de fuente para los titulares, agregando una línea de borde sobre los titulares para interés visual y controlando el espacio superior e izquierdo mediante el uso de la propiedad de relleno. En pocas palabras, esta propiedad agrega espacio desde los bordes de un elemento sin afectar el fondo o el borde; está deslizando el texto del título desde la izquierda y hacia abajo desde la parte superior sin mover la línea del borde que se extiende por toda la página. 4.Guarde el archivo y obtenga una vista previa en un navegador web. El <h1>encabezado cerca de la parte superior de la página y el <h2>y <h3>todos los encabezados inferiores en la página tienen la misma fuente y color de fuente, además de un borde verde en la parte superior (consulte la Figura 3-11). Creación y aplicación de un selector de clase Los selectores de etiquetas son rápidos y eficientes, pero son un poco indiscriminados en la forma en que diseñan una página. ¿Qué pasa si quieres diseñar un solo <p>etiqueta diferente a todos los demás <p> etiquetas en una página? Un selector de clase es la respuesta. 1.Regrese a su editor de texto y elselector_basics.htmlarchivo. Agregue un nuevo estilo debajo del estilo del selector de grupo que acaba de crear. 2.Haga clic al final de la llave de cierre delh1, h2, h3selector, presione Entrar (Retorno) y luego escriba . nota { } El nombre de este estilo,nota,indica su propósito: resaltar los párrafos que contienen fragmentos adicionales de información para los visitantes de su sitio. Una vez que crea un estilo de clase, puede aplicarlo dondequiera que aparezcan estas notas, como el segundo párrafo, en este caso. Capítulo 3:SELECTORES: IDENTIFICAR QUÉ ESTILIZAR www.it-ebooks.info 85 Tutorial: Selector Dechado Figura 3-11 Un simple selector de etiquetas puede transformar por completo la apariencia de cada instancia de una etiqueta, haciendo que el estilo de todos los párrafos de texto en una página sea rápido. ¡Y en este caso, un selector de grupo hace aún más al formatear cada instancia de tres etiquetas de título diferentes! 3.Haga clic en la línea vacía entre la apertura {y el cierre} y agregue la siguiente lista de propiedades al estilo: color: #333; borde: 2px punteado #BD8110; color de fondo: #FBF8A9; margen superior: 25px; margen inferior: 35px; relleno: 20px; 86 Css3: el manual perdido www.it-ebooks.info La mayoría de estas propiedades deberían parecerle familiares ahora, pero la propiedad background-color puede ser nueva para usted. Lógicamente, añade un color al fondo del Tutorial: Selector Dechado elemento. El estilo completo debería verse así: . nota { color: #333; borde: 2px punteado #BD8110; color de fondo: #FBF8A9; margen superior: 25px; margen inferior: 35px; relleno: 20px; } Si obtiene una vista previa de la página ahora, no verá cambios. A diferencia de los selectores de etiquetas, los selectores de clase no tienen ningún efecto en una página web hasta que aplique el estilo en el código HTML. 4.En el HTML de la página, hay dos <p>etiquetas que comienzan con la palabra “Nota” dentro de <fuerte>etiquetas Para aplicar un estilo de clase a una etiqueta, simplemente agregue un atributo de clase, seguido del nombre del selector de clase; en este caso, elnotaestilo que acaba de crear. 5.Haga clic justo después de lapagen el primero <p>etiqueta y, a continuación, escriba un espacio seguido de clase="nota".El HTML ahora debería verse así (lo que acaba de escribir está en negrita): <pclase = "nota"><strong>NOTA:</strong> Ut enim ad Estar seguronodigitarclase=".nota".En CSS, el punto es necesario para indicar un nombre de estilo de clase; en HTML, está prohibido. Repita este paso para el segundo párrafo (está justo encima del <h3>etiqueta con el texto "¡Yo no!"). NotaNo hay ninguna razón por la que no pueda agregar esta clase a otras etiquetas también, no solo a <p> etiqueta. Si desea aplicar este formato a un <h2>etiqueta, por ejemplo, entonces su HTML se vería así: <h2 clase="nota">. 6.Guarde y obtenga una vista previa de la página web en un navegador. El párrafo de la nota está muy bien resaltado en la página (consulte la Figura 3-12). Capítulo 3:SELECTORES: IDENTIFICAR QUÉ ESTILIZAR www.it-ebooks.info 87 Tutorial: Selector Dechado Figura 3-12 Puede realizar cambios de formato detallados con los selectores de clase. Un estilo de clase otorga a los párrafos seleccionados un formato diferente al de todos los demás párrafos de la página. El cuadro de notas distintivo que se muestra aquí utiliza un estilo de clase para destacar entre la multitud. NotaSi su página no se parece a la Figura 3-12, es posible que haya escrito mal el nombre de una propiedad o su valor. Vuelva a verificar su código con los pasos anteriores. Además, asegúrese de finalizar cada declaración—El valor de la propiedad combinación—con un punto y coma y concluye el estilo con una llave de cierre al final. Cuando su estilo no funciona correctamente, los puntos y comas faltantes y las llaves de cierre son culpables frecuentes. Creación de un selector de descendientes Sobre elselectors_basics.htmlpágina, usted aplicó elnotaclase a dos párrafos. Cada uno de esos párrafos comienza con la palabra "Nota:" en negrita; en realidad, la palabra está envuelta dentro del HTML <fuerte>etiqueta, que todos los navegadores muestran como texto en negrita. Pero, ¿qué sucede si desea formatear esas palabras en negrita en naranja brillante? Podrías crear un estilo de etiqueta para el <fuerte>etiqueta, pero eso afectaría a todos < fuerte>etiquetas en la página, y solo desea cambiar la etiqueta fuerte dentro de esos cuadros de notas. Una solución sería crear un estilo de clase—.notaTexto,por ejemplo, y aplíquelo a cada una de las etiquetas <strong> dentro de los cuadros de notas. Pero eso es mucho trabajo, y es posible que olvide aplicar la clase si tiene muchas páginas con esas notas. 88 Css3: el manual perdido www.it-ebooks.info Traducido del inglés al español - www.onlinedoctranslator.com Un método mejor es crear un selector descendiente (página 88), que apunte solo al <fuerte>etiqueta cuando está dentro de uno de estos cuadros de notas. Afortunadamente, eso es fácil de hacer. Tutorial: Selector Dechado 1.Regrese a su editor de texto y elselector_basics.htmlarchivo.Cree una nueva línea vacía para el estilo del selector descendiente. Si acaba de completar los pasos anteriores, haga clic después de la llave de cierre del . notaestilo, y luego presione Enter (Return). 2.Tipo .nota fuerte {. La última etiqueta en el selector—fuerte-es el elemento que finalmente desea formatear. En este caso, el estilo formatea el <fuerte>etiqueta solo cuando esadentro otra etiqueta con la clasenotaaplicado a ella. No tiene efecto en <fuerte>etiquetas dentro de otros párrafos, listas o etiquetas de encabezado, por ejemplo. 3.Presiona Enter, escribecolor: #FC6512;,y luego presione Enter (Return) nuevamente para crear otra línea en blanco.Finalice el estilo escribiendo el carácter de llave de cierre. El estilo terminado debería verse así: . nota fuerte { color: #FC6512; } 4.Guarde la página y obtenga una vista previa en un navegador web. La palabra "Nota:" debe aparecer en naranja en cada uno de los cuadros de notas de la página. Los selectores de descendientes se encuentran entre las herramientas CSS más poderosas. Los diseñadores web profesionales los utilizan ampliamente para apuntar a etiquetas particulares sin ensuciar el HTML con clases CSS. Aprenderá mucho más sobre los selectores de descendientes a medida que se usan a lo largo de este libro. Creación y aplicación de un selector de ID Puede aplicar selectores de clase a varios elementos de una página. Por ejemplo, anteriormente creó un archivo .notaestilo de clase y lo aplicó a dos párrafos, pero podría aplicarlo a más párrafos (o incluso a otras etiquetas) si quisiera. Los selectores de ID se ven y actúan como clases, pero solo puede aplicar una IDuna vezpor página. Como se mencionó en la página 61, muchos diseñadores web ahora evitan los selectores de ID (aprenderá exactamente por qué en la página 114). Sin embargo, eso no significa que no debas aprender a usarlos. En este ejercicio, creará un estilo que establece un ancho específico para el contenido de una página web, lo centra en el medio de la ventana del navegador y agrega una imagen de fondo decorativa a la página. Aplicarás el ID a la página <cuerpo>etiqueta para indicar un diseño de página único. 1.Regrese a su editor de texto y elselector_basics.htmlarchivo. Agregará un nuevo estilo debajo del archivo .nota fuerteestilo de clase que creó antes. Capítulo 3:SELECTORES: IDENTIFICAR QUÉ ESTILIZAR www.it-ebooks.info 89 Tutorial: Selector Dechado 2.Haga clic después del corchete de cierre del estilo anterior (}), presione Entrar (Retorno) para crear una nueva línea y luego escriba #artículo {. Los selectores de ID siempre comienzan con el símbolo de almohadilla (#). El nombre del estilo indica qué tipo de página es: es común que los sitios web tengan diferentes diseños para diferentes tipos de páginas web. Por ejemplo, la página de inicio se verá diferente de una página que anuncia un producto, que puede verse diferente de una página con el texto de una publicación de blog. En este caso, identificará esta página como un "artículo" (como en un periódico) creando y aplicando una ID a <cuerpo>etiqueta. 3.Presiona Enter nuevamente y luego escribe: color de fondo: #FDF8AB; imagen de fondo: url(images/bg_page.png); fondo-repetir: repetir-y; posición de fondo: parte superior central; relleno: 0; margen: 0 automático; ancho: 760px; Aquí hay muchas propiedades, pero básicamente está agregando un color a la página, insertando una imagen en el fondo (y controlando cómo se coloca), eliminando espacio alrededor de los bordes de la ventana del navegador, configurando un ancho fijo para el contenido de la página , y centrando todo en el medio de la página. 4.Termina el estilo escribiendo la llave de cierre.Todo debería verse así: # artículo { color de fondo: #FDF8AB; imagen de fondo: url(images/bg_page.png); fondo-repetir: repetir-y; posición de fondo: parte superior central; relleno: 0; margen: 0 automático; ancho: 760px; } Al igual que con una clase, este estilo nohacernada hasta que lo apliques a la página. Por lo tanto, agregará un atributo de ID al HTML de la página, indicando dónde desea que se aplique el estilo de ID. 5.Encuentra la apertura de la página <cuerpo>etiquetar y agregarid="artículo"para que la etiqueta se vea así (sus cambios están en negrita): <cuerpoid="artículo"> Ahora el <cuerpo>la etiqueta refleja el formato definido en el #artículoestilo. Al igual que con todo lo relacionado con CSS, hay muchas formas de llegar al mismo destino: en su lugar, puede usar un estilo de clase y aplicarlo a <cuerpo>etiqueta (siempre que no la aplique más de una vez en la página; de lo contrario, cualquier otro elemento con la 90 Css3: el manual perdido www.it-ebooks.info artículola clase obtendrá el mismo formato). Incluso puedes crear un planocuerpo estilo de elemento con las mismas propiedades de formato, siempre que todas las demás páginas de su Tutorial: Selector Dechado sitio compartan estas mismas opciones de formato. Pero en este caso, está usando un selector de ID ya que el objetivo de este estilo (identificar el tipo de página) está en consonancia con la noción general de los selectores de ID. 6.Guarde la página y obtenga una vista previa en un navegador. Todo en la página (el logotipo y todo el texto) ahora tiene un ancho establecido y flota en el centro de la ventana del navegador. Incluso si cambia el tamaño de la ventana del navegador, ¡pruébelo!, el contenido permanece centrado. Además, aparece una sombra a ambos lados del contenido, gracias a la prácticaimagen de fondopropiedad (aprenderá más sobre esa genial propiedad en la página 240). Últimos retoques Para divertirse, agregará un estilo más avanzado, un selector de hermanos adyacentes que se analiza en la página 79, para dar formato al párrafo que sigue inmediatamente al primer título de la página. (Puede lograr el mismo efecto creando un estilo de clase y aplicándolo a ese párrafo, pero el selector de hermanos adyacente no requiere cambios en su HTML). 1.Regrese a su editor de texto y elselector_basics.htmlarchivo.Cree una nueva línea vacía para un nuevo estilo. Si acaba de completar los pasos anteriores, haga clic después de la llave de cierre del # artículoestilo, y luego presione Enter (Return). 2.Tipoh1+p {. Este estilo se aplicará a cualquier párrafo queinmediatamentesigue un <h1>etiqueta, en otras palabras, el primer párrafo después del título superior de la página. No se aplicará al segundo párrafo ni a los subsiguientes. Este selector proporciona una manera fácil de crear un aspecto único para un párrafo introductorio para resaltarlo visualmente y resaltar el comienzo de un artículo. 3.Presiona Enter y luego agrega la siguiente lista de propiedades al estilo: color: #FF6600; tamaño de fuente: 1,2 em; altura de línea: 140%; margen superior: 20px; Aquí está cambiando el color y el tamaño de la fuente, además de agregar un poco de espacio encima del párrafo. Elaltura de la líneapropiedad (sobre la que leerá en la página 167) controla el espacio entre líneas en un párrafo (también conocido comoprincipal). 4.Finalmente, complete el estilo presionando Enter y escribiendo la llave de cierre. El estilo de clase completado debería verse así: h1+p { color: #FF6600; tamaño de fuente: 1,2 em; Capítulo 3:SELECTORES: IDENTIFICAR QUÉ ESTILIZAR www.it-ebooks.info 91 Tutorial: Selector Dechado altura de línea: 140%; margen superior: 20px; } Si obtiene una vista previa de la página ahora, verá que el párrafo superior es de color naranja y el texto es más grande y hay más espacio entre cada línea de texto (vea la Figura 3-13). Si realmente eliminara este párrafo en el HTML, vería que el párrafo restante repentinamente sería de color naranja con texto más grande, ya que sería el nuevo hermano adyacente de <h1>etiqueta. NotaInternet Explorer 6 no comprende los selectores de hermanos adyacentes, por lo que en ese navegador, el primer párrafo se verá igual que todos los demás en la página. Y ahí lo tiene: un recorrido rápido por varios tipos de selectores. Se familiarizará con todos estos selectores (y más) a medida que avance en los tutoriales más adelante en el libro, pero a estas alturas, ya debería familiarizarse con los diferentes tipos y por qué usaría uno sobre el otro. NotaPuede ver una versión completa de la página que acaba de crear en la03_terminadocarpeta. Figura 3-13 La página realmente se ha unido. El ancho establecido, el efecto de sombra paralela y los detalles tipográficos realmente han mejorado el aspecto de la aburrida página HTML con la que comenzaste. 92 Css3: el manual perdido www.it-ebooks.info Capítulo 4 4 Ahorro de tiempo con Herencia de estilo C Los niños heredan rasgos de sus padres: color de ojos, altura, calvicie de patrón masculino, etc. A veces, heredamos rasgos de antepasados más lejanos, como abuelos o bisabuelos. Como viste en el capítulo anterior, la metáfora de las relaciones familiares también forma parte de la estructura de HTML. Y al igual que los humanos, las etiquetas HTML pueden heredar las propiedades CSS de sus antepasados. ¿Qué es la herencia? En pocas palabras, la herencia es el proceso mediante el cual algunas propiedades CSS aplicadas a una etiqueta se transmiten a etiquetas anidadas. Por ejemplo, un <p>la etiqueta siempre está anidada dentro de <cuerpo>etiqueta, por lo que las propiedades aplicadas a <cuerpo>la etiqueta es heredada por el <p> etiqueta. Supongamos que creó un estilo de etiqueta CSS (página 62) para el <cuerpo>etiqueta que establece el colorpropiedad a un rojo oscuro. Etiquetas que son descendientes de <cuerpo>etiqueta, es decir, las que están dentro de <cuerpo>etiqueta: heredará esa propiedad de color. Eso significa que cualquier texto en esas etiquetas—<h1>, <h2>, <p>,lo que sea, aparecerá en ese mismo color rojo oscuro. La herencia también funciona a través de múltiples generaciones. Si una etiqueta como <em>o <fuerte>la etiqueta aparece dentro de un <p>etiqueta, entonces el <em>y el <fuerte>las etiquetas también heredan propiedades de cualquier estilo aplicado al <cuerpo>etiqueta. NotaComo se discutió en el Capítulo 3, cualquier etiqueta dentro de otra etiqueta es unadescendientede esa etiqueta. Así que un <p> etiqueta dentro del <cuerpo>la etiqueta es descendiente de <cuerpo>,mientras que el <cuerpo>la etiqueta es unantepasadodel <p>etiqueta. Descendientes(piense en hijos y nietos) hereda propiedades de los antepasados (piense en padres y abuelos). 93 www.it-ebooks.info qué es ¿herencia? Aunque esto suene un poco confuso, la herencia es unen realidadgran ahorro de tiempo. Imagínese si no se pasaran propiedades a las etiquetas anidadas y tuviera un párrafo que contuviera otras etiquetas como <em>etiqueta para enfatizar el texto o el <un>etiqueta para añadir un enlace. Si creó un estilo que hizo que el párrafo fuera morado, de 24 px de alto, usando la fuente Arial, sería extraño si todo el texto dentro de <em>la etiqueta volvió a su estilo habitual de "navegador aburrido" (consulte la Figura 4-1). Entonces tendría que crear otro estilo para formatear el <em> etiqueta para que coincida con la apariencia de <p>etiqueta. Qué lata. Figura 4-1 La herencia permite que las etiquetas copien propiedades de las etiquetas que las rodean. Arriba: la etiqueta de párrafo se configura con una familia de fuentes, un tamaño y un color específicos. Las etiquetas dentro de cada párrafo heredan esas propiedades para que se vean como el resto del párrafo. Abajo: si la herencia no existiera, la misma página se vería como esta figura. Fíjate cómo elfuerte,ellos, yalas etiquetas dentro del párrafo conservan la familia de fuentes, el tamaño y el color definidos por el navegador. Para que se vean como el resto del párrafo, tendría que crear estilos adicionales, una gran pérdida de tiempo. 94 Css3: el manual perdido www.it-ebooks.info La herencia no solo se aplica a los estilos de etiquetas. Funciona con cualquier tipo de estilo; por lo tanto, cuando aplica un estilo de clase (consulte la página 57) a una etiqueta, las etiquetas dentro de esa etiqueta heredan las LOS LÍMITES DE herencia propiedades de la etiqueta con estilo. Lo mismo ocurre con los estilos de ID, los selectores de descendientes y los otros tipos de estilos discutidos en el Capítulo 3. Cómo la herencia agiliza las hojas de estilo Puede utilizar la herencia a su favor para optimizar sus hojas de estilo. Digamos que desea que todo el texto de una página use la misma fuente. En lugar de crear estilos para cada etiqueta, simplemente cree un estilo de etiqueta para el <cuerpo>etiqueta. (O cree un estilo de clase y aplíquelo al <cuerpo>etiqueta.) En el estilo, especifique la fuente que desea usar, y todas las etiquetas en la página heredan la fuente:cuerpo { familia de fuentes: Arial, Helvetica, sans-serif; }.Rapido y facil. También puede utilizar la herencia para aplicar propiedades de estilo a unsecciónde una pagina Por ejemplo, como muchos diseñadores web, puede usar el <div>etiqueta (página 21) para definir un área de una página como un banner, barra lateral o pie de página; o, si usa elementos HTML5, puede usar uno de los nuevos elementos de sección como <encabezado>, <aparte>, <pie de página>, o < artículo>.Al aplicar un estilo a esa etiqueta externa, puede especificar propiedades CSS particulares para todas las etiquetas dentro de esa sección de la página. Si desea que todo el texto en una barra lateral sea del mismo color, debe crear un estilo configurando elcolorpropiedad, y luego aplicarlo a la <div>, <encabezado>, <artículo>,u otro elemento de seccionamiento. Cualquier <p>, <h1>,u otras etiquetas dentro heredan el mismo color de fuente. Los límites de la herencia La herencia no es todopoderosa. Muchas propiedades CSS no se transmiten a las etiquetas descendientes en absoluto. por ejemplo, elbordeLa propiedad (que le permite dibujar un cuadro alrededor de un elemento) no se hereda, y por una buena razón. Si lo fuera, entonces cada etiqueta dentro de un elemento con elbordela propiedad también tendría un borde a su alrededor. Por ejemplo, si agregó un borde al <cuerpo>etiqueta, entonces cada lista con viñetas también tendría un cuadro alrededor, y cada elemento con viñetas en la lista también tendría un borde (Figura 4-2). NotaHay una lista de propiedades CSS en el Apéndice A, incluidos los detalles sobre cuáles se heredan. Estos son ejemplos de ocasiones en las que la herencia no se aplica estrictamente: • Como regla general, las propiedades que afectan la ubicación de los elementos en la página o los márgenes, los colores de fondo y los bordes de los elementos no se heredan. Capítulo 4:AHORRO DE TIEMPO CON LA HERENCIA DE ESTILO www.it-ebooks.info 95 LOS LÍMITES DE herencia Figura 4-2 Afortunadamente, no todas las propiedades se heredan. El borde aplicado a los párrafos en la parte superior no lo heredan las etiquetas dentro de esos párrafos. Si lo fueran, terminaría con un lío poco atractivo de cajas dentro de cajas dentro de cajas (abajo). • Los navegadores web usan sus propios estilos inherentes para formatear varias etiquetas: los encabezados son grandes y en negrita, los enlaces son azules, etc. Cuando defines untamaño de fuentepara el texto en una página y aplicarlo al <cuerpo>etiqueta, los encabezados aún aparecen más grandes que los párrafos, y <h1>las etiquetas siguen siendo más grandes que <h2>etiquetas Es lo mismo cuando aplica un color de fuente al <cuerpo>;los enlaces en la página todavía aparecen en un buen azul antiguo de navegador web. 96 Css3: el manual perdido www.it-ebooks.info NotaPor lo general, es una buena idea eliminar estos estilos de navegador incorporados, ya que facilitará el diseño de sitios que funcionen de manera consistente entre diferentes navegadores. En el Capítulo 5, en la página 115, aprenderá cómo hacerlo. Tutorial: herencia • Cuando los estilos entran en conflicto, gana el estilo más específico. En otras palabras, cuando ha aplicado específicamente propiedades CSS a un elemento, como especificar el tamaño de fuente para una lista desordenada, y esas propiedades entran en conflicto con las propiedades heredadas, como untamaño de fuenteestablecido para el <cuerpo>etiqueta: el navegador utiliza el tamaño de fuente aplicado a la etiqueta <ul>etiqueta. NotaEstos tipos de conflictos entre estilos son muy comunes, y las reglas sobre cómo un navegador los trata se denominancascada. Aprenderá sobre eso en el Capítulo 5. Tutorial: Herencia En este tutorial de tres partes, verá cómo funciona la herencia. En primer lugar, creará un selector de etiquetas simple y observará cómo pasa sus características a las etiquetas anidadas. Luego, creará un estilo de clase que use la herencia para modificar el formato de una página completa. Finalmente, verá dónde CSS hace algunas excepciones bienvenidas a la regla de herencia. Para comenzar, debe descargar los archivos del tutorial que se encuentran en el sitio web complementario de este libro enwww.sawmac.com/css3. Haga clic en el enlace del tutorial y descargue los archivos. Todos los archivos están incluidos en un archivo zip, por lo que primero deberá descomprimirlos. (Las instrucciones detalladas para descomprimir los archivos se encuentran en el sitio web). Los archivos de este tutorial se encuentran en la carpeta denominada04. Un ejemplo básico: un nivel de herencia Para ver cómo funciona la herencia, comience agregando un solo estilo de etiqueta y observe cómo afecta a las etiquetas anidadas en su interior. Las próximas dos partes de este tutorial se basarán en su trabajo aquí, así que guarde el archivo cuando haya terminado. 1.abre el archivoherencia.htmlen tu editor de texto favorito. Ahora agregue una hoja de estilo interna a este archivo. NotaEn general, es mejor usar hojas de estilo externas para un sitio web, por las razones que se analizan en el Capítulo 2 (página 48). Pero a veces es más fácil comenzar su diseño basado en CSS en una hoja de estilo interna, como en este ejemplo, y convertirlo en una hoja de estilo externa más tarde. 2.Haga clic directamente después del cierre </título>etiqueta.Presiona Enter (Return) y luego escribe <estilo>.Pulse Intro dos veces y escriba la etiqueta de cierre:</estilo>—para indicar el final de la hoja de estilo. Estas etiquetas marcan el área donde van las instrucciones CSS. Ahora, creará un estilo que se aplique a todos <p>etiquetas Capítulo 4:AHORRO DE TIEMPO CON LA HERENCIA DE ESTILO www.it-ebooks.info 97 Tutorial: herencia Nota Si está utilizando tipos de documentos HTML 4.01 o XHTML (en lugar de HTML5 como en este tutorial), deberá agregar eltipo="texto/css"atribuya a la etiqueta de estilo de apertura de esta manera: <tipo de estilo="texto/css"> 3.Haga clic en la línea vacía entre la apertura y el cierre <estilo>etiquetas y tipo pag {.Pulse Intro dos veces y escriba la llave de cierre: }. Ha creado un selector de etiquetas que se aplica a todos los <p>etiquetas en la página. 4.Haga clic entre las dos llaves y escribacolor: #FF6600;.El estilo completo debería verse así: pag { color: #FF6600; } Como has visto en los tutoriales anteriores, elcolorLa propiedad establece el color del texto. Su hoja de estilo está completa. 5.abra la página en un navegador web para obtener una vista previa de su trabajo. El color de los cuatro párrafos de la página ha cambiado de negro a naranja (consulte la Figura 4-3). Pero observe cómo esto <p>el estilo de la etiqueta afectaotroetiquetas: Etiquetasadentrodel <p>la etiqueta también cambia de color. Por ejemplo, el texto dentro de <em>y <fuerte>las etiquetas dentro de cada párrafo también cambian a naranja mientras mantienen su formato de cursiva y negrita. Este tipo de comportamiento tiene mucho sentido. Después de todo, cuando establece el color del texto en un párrafo, esperatodoel texto del párrafo, independientemente de cualquier otra etiqueta dentro de ese párrafo, sea del mismo color. Sin herencia, la creación de hojas de estilo requeriría mucho trabajo. Si el <em>, <a>,y <fuerte> las etiquetas no heredaron la propiedad de color del <p>selector de etiquetas, entonces tendría que crear estilos adicionales, tal vez selectores descendientes comopor favor yp fuerte —para formatear correctamente el texto. Sin embargo, notará que el enlace al final del primer párrafo no cambia de color, conserva su color azul de enlace. Como se mencionó en la página 97, los navegadores tienen sus propios estilos para ciertos elementos, por lo que no se aplica la herencia. Aprenderá más sobre este comportamiento en el Capítulo 5. Uso de la herencia para cambiar el estilo de una página completa La herencia también funciona con estilos de clase: cualquier etiqueta con cualquier tipo de estilo aplicado pasa propiedades CSS a sus descendientes. Con eso en mente, puede usar la herencia para realizar cambios rápidos y radicales en una página completa. 1.Regrese a su editor de texto y elherencia.htmlarchivo. Agregará un nuevo estilo debajo de <p>estilo de etiqueta que ha creado. 98 Css3: el manual perdido www.it-ebooks.info 2.Haga clic al final de la llave de cierre del selector p.Presione Entrar (Retorno) para crear una nueva línea y luego escriba .estilo de página {.Pulse Intro dos veces y escriba la llave Tutorial: herencia de cierre: }. Está a punto de crear un nuevo estilo de clase que aplicará alcuerpoetiqueta. 3.Haga clic entre las dos llaves y luego agregue la siguiente lista de propiedades al estilo: familia tipográfica: "Helvetica Neue", Arial, Helvetica, sans-serif; tamaño de fuente: 18px; color: #BD8100; ancho: 900px; margen: 0 automático; Figura 4-3 ¡Herencia en acción! Las etiquetas dentro de una etiqueta con estilo (el texto en negrita y cursiva) muestran lo mismo color aplicado a la<p> etiqueta que los rodea. Pero que es eso? El enlace al final del primer párrafo sigue siendo azul (en un círculo). Aprenderá por qué en el próximo capítulo. Todo debería verse así: . estilo de página { familia tipográfica: "Helvetica Neue", Arial, Helvetica, sans-serif; tamaño de fuente: 18px; color: #BD8100; ancho: 900px; margen: 0 automático; } Capítulo 4:AHORRO DE TIEMPO CON LA HERENCIA DE ESTILO www.it-ebooks.info 99 Tutorial: herencia Este estilo de clase completo establece una fuente, un tamaño de fuente y un color. También establece un ancho y centra el estilo en la página (viste este truco en el tutorial anterior en la página 89 para crear un área fija y centrada para el contenido de una página). 4.Encuentra la apertura <cuerpo>etiqueta (solo un par de líneas debajo del estilo que acaba de crear), y luego escribaclase = "estilo de página". La etiqueta ahora debería verse así: <clase de cuerpo = "estilo de página">.Aplica la clase a la etiqueta del cuerpo. Gracias a la herencia, todas las etiquetas dentro de la etiqueta del cuerpo (que también son todas las etiquetas visibles dentro de una ventana del navegador) heredan las propiedades de este estilo y, por lo tanto, usan la misma fuente. 5.Guarde y obtenga una vista previa de la página web en un navegador. Como puede ver en la Figura 4-4, su estilo de clase ha creado una apariencia uniforme y uniforme en todo el texto del cuerpo de la página. Tanto los encabezados como los párrafos dentro del <cuerpo>han adoptado el nuevo estilo de fuente. La página en su conjunto se ve muy bien, pero ahora mire más de cerca: el cambio de color afectó solo a los encabezados y la lista con viñetas en la página, y aunque el estilo especificaba un tamaño de fuente exacto, el texto del título tiene un tamaño diferente al del párrafos ¿Cómo supo CSS que no quería que sus encabezados tuvieran el mismo tamaño de 18 píxeles que el cuerpo del texto? ¿Y por qué no anidaron <p>Las etiquetas heredan su nuevo estilo de color del <cuerpo>¿etiqueta? Nota¿Por qué usar una clase?estilo de página—en lugar de un estilo de etiqueta—cuerpo-para redefinir el aspecto de la página? Bueno, en este caso, un estilo de etiqueta funcionaría bien. Pero, aplicando una clase al <cuerpo>La etiqueta es una excelente manera de personalizar el aspecto de las diferentes páginas de su sitio. Por ejemplo, si todas las páginas de su sitio comparten la misma hoja de estilo externa, se aplicaría un estilo de etiqueta de cuerpo a <cuerpo>etiqueta de cada página de su sitio. Pero al crear diferentes clases (o ID) puede crear un estilo diferente para el <cuerpo>etiqueta para diferentes secciones del sitio o diferentes tipos de páginas. Está viendo el aspecto "en cascada" de las hojas de estilo en cascada en acción. En este ejemplo, su <p>las etiquetas tienen dos estilos de color en conflicto: el <p>estilo de etiqueta que creó en la página 98 y el estilo de clase que creó aquí. Cuando los estilos chocan, el navegador tiene que elegir uno. Como se explicó en la página 104, el navegador usa un estilo más específico: el color que asignó explícitamente para <p>etiqueta. Aprenderá mucho más sobre las reglas de la cascada en el Capítulo 5. 100 Css3: el manual perdido www.it-ebooks.info Tutorial: herencia Figura 4-4 Un estilo aplicado a la etiqueta del cuerpo pasa sus propiedades a todas las etiquetas que ve en el navegador web, lo que facilita la aplicación de efectos de formato global a una página. Inacción de herencia La herencia no siempre se aplica, y eso no es necesariamente algo malo. Para algunas propiedades, la herencia tendría un efecto negativo en la apariencia de una página. Verás otro ejemplo de herencia.en acciónen la sección final de este tutorial. Los márgenes, el relleno y los bordes (entre otras propiedades) no los heredan las etiquetas descendientes, y no querrá que lo hagan, como verá en este ejemplo. 1.Regrese a su editor de texto y elherencia.htmlarchivo. Ampliarás lapagestilo de etiqueta que acaba de crear. 2.Localiza elpagestilo, haga clic al final de la propiedad de color (color: #FF6600;), y luego presione Enter (Return) para crear una nueva línea. Sangrará los párrafos de la página agregando un margen izquierdo. 3.Agregue tres propiedades al estilo para que se vea así: pag { color: #FF6600; margen izquierdo: 50px; relleno-izquierda: 20px; borde izquierdo: sólido 25px #BD8100; } Capítulo 4:AHORRO DE TIEMPO CON LA HERENCIA DE ESTILO www.it-ebooks.info 101 Tutorial: herencia Elmargen izquierdola propiedad sangra el párrafo 50 píxeles desde la izquierda; el rellenoLa propiedad sangra el texto del párrafo a 20 píxeles del borde. 4.Guarde el archivo y obtenga una vista previa en un navegador web. Observe que todos los <p>las etiquetas tienen una sangría de 50 px desde el borde izquierdo de la ventana del navegador y cada una tiene un borde marrón grueso a la izquierda. Sin embargo, las etiquetasadentroel <p>etiqueta (por ejemplo, el <em> etiqueta) no tienen ninguna sangría o borde adicional (vea la Figura 4-5). Este comportamiento tiene sentido: se vería raro si hubiera 50px adicionales de espacio a la izquierda de cada <em>y cada <fuerte>etiqueta dentro de un párrafo! Para ver qué pasaría si esas propiedades fueran heredadas, edite elpagselector para que quede así:p, p *,lo que lo convierte en un selector de grupo (página 84). La primera parte es solo lapagselector que ya creaste. La segunda parte- pag *-significa "seleccionar todas las etiquetas dentro de la etiqueta ap y aplicarles este estilo". (El * , o selector universal, se describe en la página 63.) Figura 4-5 Mientras que la mayoría de las propiedades se heredan (como el color), hay muchos, como márgenes, relleno y bordes, que no pasan a las etiquetas anidadas. La Referencia de propiedades de CSS en el Apéndice A indica qué propiedades se heredan y cuáles no. NotaPuede encontrar una versión completa de la página que creó en este tutorial en el04_terminadocarpeta. 102 Css3: el manual perdido www.it-ebooks.info Capítulo 5 5 Gestión de múltiples Estilos: La Cascada A A medida que crea hojas de estilo cada vez más complejas, a veces se preguntará por qué un elemento en particular en una página tiene el aspecto que tiene. La característica de herencia de CSS, como se discutió en el Capítulo 4, crea la posibilidad de que cualquier etiqueta en una página se vea potencialmente afectada por cualquiera de las etiquetas que la envuelven. por ejemplo, el <cuerpo>la etiqueta puede pasar propiedades a un párrafo, y un párrafo puede pasar sus propias instrucciones de formato a un enlace dentro del párrafo. En otras palabras, ese enlace puede heredar propiedades CSS deambosel <cuerpo>y el <p>tag—esencialmente creando una especie de Frankenstyle que combina partes de dos estilos CSS diferentes. Luego, hay ocasiones en las que los estilos chocan: la misma propiedad CSS se define en varios estilos, y todos se aplican a un elemento particular de la página (por ejemplo, un <p>estilo de etiqueta en una hoja de estilo externa y otro <p>estilo de etiqueta en una hoja de estilo interna). Cuando eso sucede, puede ver algunas cosas bastante extrañas, como texto que aparece en azul brillante, aunque haya aplicado específicamente un estilo de clase con el color de texto establecido en rojo. Afortunadamente, en realidad hay un sistema en funcionamiento: un mecanismo básico de CSS conocido como elcascada, que rige cómo interactúan los estilos y qué estilos tienen prioridad cuando hay un conflicto. NotaEste capítulo se ocupa de los problemas que surgen cuando crea hojas de estilo complejas que se basan en la herencia y en tipos de selectores más sofisticados, como los selectores descendientes (página 88). Todas las reglas son bastante lógicas, pero son tan divertidas de dominar como el código fiscal. Si eso te deprime, considera saltarte los detalles y hacer el tutorial en la página 117 para hacerte una idea de qué es la cascada y por qué es importante. O pase directamente al siguiente capítulo, que explora formas divertidas y visualmente emocionantes de dar formato al texto. Siempre puede volver a este capítulo más adelante, una vez que haya dominado los conceptos básicos de CSS. 103 www.it-ebooks.info CÓMO ESTILOS Cascada Cómo se aplican los estilos en cascada Elcascadaes un conjunto de reglas para determinar qué propiedades de estilo se aplican a un elemento. Especifica cómo un navegador web debe manejar múltiples estilos que se aplican a la misma etiqueta y qué hacer cuando las propiedades CSS entran en conflicto. Los conflictos de estilo ocurren en dos casos: a través de la herencia, cuando la misma propiedad se hereda de varios ancestros, y cuando uno o más estilos se aplican al mismo elemento (quizás aplicó un estilo de clase a un párrafo y también creó un <p>estilo de etiqueta, por lo que ambos estilos se aplican a ese párrafo). Acumulación de estilos heredados Como leyó en el último capítulo, la herencia CSS garantiza que los elementos relacionados, como todas las palabras dentro de un párrafo, incluso aquellas dentro de un enlace u otra etiqueta, compartan un formato similar. Le ahorra la creación de estilos específicos para cada etiqueta en una página. Pero dado que una etiqueta puede heredar propiedades decualquieretiqueta de antepasado: un enlace, por ejemplo, que hereda la misma fuente que su padre <p>etiqueta: determinar por qué una etiqueta en particular tiene el formato de una manera puede ser un poco complicado. Imagine una familia de fuentes aplicada a <cuerpo> etiqueta, un tamaño de fuente aplicado a un <p>etiqueta y un color de fuente aplicado a un <un>etiqueta. Cualquier <un> La etiqueta dentro de un párrafo heredaría la fuente del cuerpo y el tamaño del párrafo. En otras palabras, los estilos heredados se combinan para formar un estilo híbrido. La página que se muestra en la Figura 5-1 tiene tres estilos: uno para <cuerpo>,uno para el < p> etiqueta, y uno para el <fuerte>etiqueta. El CSS se ve así: cuerpo { familia de fuentes: Verdana, Arial, Helvetica, sans-serif; } p {color: #F30; } fuerte { tamaño de fuente: 24px; } Figura 5-1 Gracias a la herencia, es posible que múltiples estilos afecten la apariencia de una etiqueta. Aquí el< fuerte>La etiqueta tiene un color, una familia de fuentes y un tamaño de fuente específicos, aunque solo se aplica una única propiedad directamente a esa etiqueta. Las otras dos opciones de formato se heredaron de los ancestros de la etiqueta: el< cuerpo>y el <p>etiquetas 104 Css3: el manual perdido www.it-ebooks.info El <fuerte>la etiqueta está anidada dentro de un párrafo, que está dentro de <cuerpo>etiqueta. eso < fuerte>La etiqueta hereda de sus dos ancestros, por lo que hereda la propiedad de familia de fuentes CÓMO ESTILOS Cascada del cuerpo y la propiedad de color de su párrafo principal. Además, el <fuerte>La etiqueta tiene un poco de CSS aplicado directamente: un tamaño de fuente de 24 px. La apariencia final de la etiqueta es una combinación de los tres estilos. En otras palabras, el <fuerte>la etiqueta aparece exactamente como si hubiera creado un estilo como este: fuerte { familia tipográfica: Verdana, Arial, Helvetica, sans-serif; color: #F30; tamaño de fuente: 24px; } El antepasado más cercano gana En el ejemplo anterior, varias etiquetas heredadas y aplicadas se combinaron sin problemas para crear un paquete de formato general. Pero, ¿qué sucede cuando las propiedades CSS heredadas entran en conflicto? Piense en una página en la que haya establecido el color de fuente para la etiqueta del cuerpo en rojo y la etiqueta del párrafo en verde. Ahora imagine que dentro de un párrafo, hay un <fuerte>etiqueta. El <fuerte>la etiqueta hereda tanto de lacuerpoypagestilos de etiqueta, también lo es el texto dentro de <fuerte>etiqueta roja o verde? Damas y caballeros, tenemos un ganador: el verde del estilo de párrafo. Eso es porque el navegador web obedece al estilo más cercano a la etiqueta en cuestión. En este ejemplo, cualquier propiedad heredada de <cuerpo>Las etiquetas son bastante genéricas. Se aplican a todas las etiquetas. Un estilo aplicado a un <p>La etiqueta, por otro lado, se define de forma más estricta. Sus propiedades se aplican solo a <p>etiquetas y las etiquetas dentro de ellas. En pocas palabras, si una etiqueta no tiene un estilo específico aplicado, entonces, en el caso de cualquier conflicto de propiedades heredadas, gana el ancestro más cercano (vea la Figura 5-2, número 1). Aquí hay un ejemplo más, solo para asegurarse de que el concepto se asiente. Si un estilo CSS que define el color del texto se aplicara a un <mesa>etiqueta, y otro estilo que define un diferenteel color del texto se aplicó a un <td>etiqueta dentro de esa tabla, luego etiquetas dentro de esa celda de la tabla (<td>)como un párrafo, un título o una lista desordenada usaría el color de <td>estilo, ya que es el ancestro más cercano. El estilo aplicado directamente gana Llevando la regla del "ancestro más cercano" a su conclusión lógica, hay un estilo que siempre se convierte en el rey del árbol genealógico de CSS: cualquier estilo aplicado directamente a una etiqueta determinada. Supongamos que se establece un color de fuente para el cuerpo, párrafo,yetiquetas fuertes. El estilo de párrafo es más específico que el estilo de cuerpo, pero el estilo aplicado al <fuerte>la etiqueta es más específica que cualquiera de las dos. Da formato al <fuerte>etiquetas y solo el <fuerte> etiquetas, anulando cualquier propiedad conflictiva heredada de las otras etiquetas (vea la Figura 5-2, número 2). En otras palabras, las propiedades de un estilo aplicado específicamente a una etiqueta superan a cualquier propiedad heredada. Capítulo 5:GESTIÓN DE MÚLTIPLES ESTILOS: LA CASCADA www.it-ebooks.info 105 CÓMO ESTILOS Cascada Esta regla explica por qué algunas propiedades heredadas no parecen heredar. Un enlace dentro de un párrafo cuyo texto es rojo todavía aparece azul como enlace del navegador. Eso es porque los navegadores tienen su propio estilo predefinido para <un>etiqueta, por lo que no se aplicará un color de texto heredado. Figura 5-2 Así es como los navegadores web determinan qué propiedades mostrar cuando las propiedades heredadas entran en conflicto: <em>etiqueta en el primer párrafo (1) hereda la familia de fuentes y el color tanto de la<cuerpo> etiqueta y el párrafo. Pero como el cuerpo y el párrafo tienen diferentes fuentes y colores aplicados, el<em>etiqueta utiliza la fuente y el color especificados para su ancestro más cercano: el<p>etiqueta. Cuando un estilo se aplica directamente a una etiqueta, la familia de fuentes y el color se especifican para el<fuerte> etiqueta (2): los navegadores ignoran las propiedades heredadas en conflicto. NotaPuede aprender cómo superar los estilos preestablecidos para el <un>etiquete y cambie los colores de los enlaces al contenido de su corazón. Consulte la página 115. una etiqueta, muchos estilos La herencia es una forma en que una etiqueta puede verse afectada por varios estilos. Pero también es posible aplicar múltiples estilosdirectamentea una etiqueta dada. Por ejemplo, supongamos que tiene una hoja de estilo externa con un <p>estilo de etiqueta y adjúntelo a una página que tenga una hoja de estilo interna quetambiénincluye un <p>estilo de etiqueta Y solo para hacer las cosas realmente interesantes, uno de los <p>etiquetas en la página tiene un estilo de clase aplicado. Entonces, para esa etiqueta, tres estilos diferentes la formatean directamente. ¿Qué estilo, oestilos—¿Debe obedecer el navegador? La respuesta: Depende. Según los tipos de estilos y el orden en que se crean, un navegador puede aplicar uno o más de ellos a la vez. Aquí hay algunas situaciones en las que se pueden aplicar varios estilos a la misma etiqueta: • La etiqueta tiene un selector de etiquetas y un estilo de clase aplicados.Por ejemplo, un estilo de etiqueta para <h2>etiqueta, un estilo de clase llamado .titular principaly este HTML: <h2 class="leadHeadline">¡Tu futuro revelado!</h2>.Ambos estilos se aplican a este <h2> etiqueta. 106 Css3: el manual perdido www.it-ebooks.info Nota Aférrate a tu sombrero si te preocupa lo que sucede cuando estos múltiples estilos entran en conflicto; detalles seguir. • CÓMO ESTILOS Cascada El mismo nombre de estilo aparece más de una vez en la hoja de estilo.Podría haber un selector de grupo (página 84), como .titular principal,.título secundario,.titular de noticias,y el estilo de clase.titular principalen la misma hoja de estilo. Ambas reglas definen cómo cualquier elemento con una clase detitular principalaspecto. • Una etiqueta tiene aplicados tanto una clase como un estilo de ID.Tal vez sea una identificación llamada #bandera,una clase llamada .noticias,y este HTML: <div id="banner" class="noticias">. Propiedades de ambosbanderaynoticiaslos estilos se aplican a esto <div>etiqueta. • Hay más de una hoja de estilo que contiene elmismonombre de estilo adjunto a una página.Los estilos del mismo nombre pueden llegar en una hoja de estilo externa y en una hoja de estilo interna. O bien, el mismo estilo puede aparecer en varias hojas de estilo externas que están vinculadas a la misma página. • Hay selectores complejos que apuntan a la misma etiqueta.Esta situación es común cuando utiliza selectores descendientes (página 88). Por ejemplo, supongamos que tiene una etiqueta div en una página (como esta: <div id="Contenidoprincipal">),y dentro del div hay un párrafo con una clase aplicada: <p class="línea de autor">.Los siguientes selectores se aplican a este párrafo: # contenido principal p # contenidoprincipal .byline p.byline . línea de autor Si se aplica más de un estilo a un elemento en particular, entonces un navegador web combina las propiedades de todos esos estilos,siempre y cuando no entren en conflicto. Un ejemplo aclarará este concepto. Imagina que tienes un párrafo que enumera el nombre del autor de la página web, incluido un enlace a su dirección de correo electrónico. El HTML podría verse así: <p class="byline">Escrito por <a href="correo a: jean@cosmofarmer.com">Jean Graine de Pomme</a></p> Mientras tanto, la hoja de estilo de la página tiene tres estilos que dan formato al enlace: un {color: #6378df; } pa { font-weight: negrita; } . byline a { texto-decoración: ninguno; } El primer estilo convierte todo <un>etiquetas azul claro; el segundo estilo hace todo <un>etiquetas que aparecen dentro de un <p>etiqueta en negrita; y el tercer estilo elimina el subrayado de cualquier enlace que aparezca dentro de un elemento con ellínea de autorclase que se le aplica. Los tres estilos se aplican a ese muy popular <un>etiqueta, pero dado que ninguna de las propiedades es igual, no hay conflictos entre las reglas. La situación es similar al ejemplo de herencia (página 104): los estilos se combinan para crear un überstyle que contiene las tres propiedades, por lo que este enlace en particular aparece en azul claro, negrita, ysin subrayar. Capítulo 5:GESTIÓN DE MÚLTIPLES ESTILOS: LA CASCADA www.it-ebooks.info 107 ESPECIFICIDAD: ¿QUÉ ESTILO gana NotaRealmente comenzará a dolerle la cabeza cuando se dé cuenta de que el formato de este enlace en particular también puede verse afectado por las propiedades heredadas. Por ejemplo, heredaría cualquier familia de fuentes que se aplique al párrafo. Algunas herramientas pueden ayudar a resolver lo que sucede en la cascada. (Vea el recuadro en la página 110.) Especificidad: qué estilo gana El ejemplo anterior es bastante sencillo. Pero, ¿y si los tres estilos de enlace de arriba tuvieran undiferentefuente especificada para elFamilia tipográfica¿propiedad? ¿A cuál de las tres fuentes prestaría atención un navegador web? Como sabrá si ha estado leyendo detenidamente hasta ahora, la cascada proporciona un conjunto de reglas que ayudan a un navegador web a resolver cualquier conflicto de propiedad; a saber,las propiedades del estilo más específico ganan. Pero al igual que con los estilos enumerados anteriormente, a veces no está claro qué estilo es más específico. Afortunadamente, CSS proporciona una fórmula para determinar el estilo deespecificidadeso se basa en un valor asignado al selector de estilo: un selector de etiqueta, un selector de clase, un selector de ID, etc. Así es como funciona el sistema: • Vale la pena un selector de etiquetas1 punto. • Vale la pena un selector de clase10 puntos. • Vale la pena un selector de ID100 puntos. • Un estilo en línea (página 44) vale la pena1,000 puntos. NotaLas matemáticas involucradas en el cálculo de la especificidad son en realidad un poco más complicadas que las descritas aquí. Pero esta fórmula funciona en todos los casos excepto en los más extraños. Para leer cómo los navegadores web calculan realmente la especificidad, visite www.w3.org/TR/css3-selectors/#specificity. Cuanto mayor sea el número, mayor será la especificidad. Digamos que creas los siguientes tres estilos: • Un estilo de etiqueta para el <imagen>etiqueta (especificidad = 1) • Un estilo de clase llamado .destacar (especificidad = 10) • Un estilo de ID llamado #logotipo (especificidad = 100) Luego, digamos que su página web tiene este HTML: <img id="logo" class="highlight" src="logo.gif" />.Si define la misma propiedad, como la propiedad de borde, en los tres estilos, el valor del estilo de ID (#logo)siempre gana. NotaUn pseudo-elemento (como ::primera lineapor ejemplo) se trata como un selector de etiquetas y vale 1 punto. Una pseudoclase (:enlace,por ejemplo) se trata como una clase y vale 10 puntos. (Consulte la página 70 para conocer el trato sobre estas pseudo-cosas). 108 Css3: el manual perdido www.it-ebooks.info ESPECIFICIDAD: Dado que los selectores descendientes se componen de varios selectores—#contenido p,oh2 fuerte, ¿QUÉ ESTILO por ejemplo, las matemáticas se vuelven un poco más complicadas. La especificidad de un selector gana descendiente es el valor total de todos los selectores enumerados (consulte la Figura 5-3). Figura 5-3 Cuando se aplica más de un estilo a una etiqueta, un navegador web debe determinar qué estilo debe "ganar" en caso de que las propiedades del estilo entren en conflicto. En CSS, la importancia de un estilo se conoce como especificidad y está determinada por el tipo de selectores utilizados al crear el estilo. Cada tipo de selector tiene un valor diferente y, cuando aparecen varios tipos de selector en un estilo, por ejemplo, el selector descendente # pancarta p—se suman los valores de todos los selectores utilizados. NotaLas propiedades heredadas no tienen ninguna especificidad. Entonces, incluso si una etiqueta hereda propiedades de un estilo con una gran especificidad, como #bandera-esas propiedades siempre serán anuladas por un estilo que se aplique directamente a la etiqueta. El desempate: el último estilo gana Es posible que dos estilos con propiedades en conflicto tengan la misma especificidad. ("Oh, hermano, ¿cuándo terminará?" Pronto, camarada, pronto. El tutorial se acerca.) Puede ocurrir un empate de especificidad cuando tiene el mismo selector definido en dos ubicaciones. Puede que tengas un <p>selector de etiquetas definido en una hoja de estilo interna y una hoja de estilo externa. O dos estilos diferentes pueden simplemente tener valores de especificidad iguales. En caso de empate, gana el estilo que aparece en último lugar en la hoja de estilo. Aquí hay un ejemplo engañoso usando el siguiente HTML: <p class="byline">Escrito por <a class="email" href="correo a: jean@cosmofarmer. com">Jean Graine de Pomme</a></p> En la hoja de estilo de la página que contiene el párrafo y el enlace anteriores, tiene dos estilos: p .email { color: azul; } . línea de autor a { color: rojo; } Ambos estilos tienen una especificidad de 11 (10 para un nombre de clase y 1 para un selector de etiquetas) y ambos se aplican a <un>etiqueta. Los dos estilos están empatados. ¿Qué color usa el navegador para colorear el enlace en el párrafo anterior? Respuesta: Rojo, ya que es el segundo (y último) estilo de la hoja. Capítulo 5:GESTIÓN DE MÚLTIPLES ESTILOS: LA CASCADA www.it-ebooks.info 109 ESPECIFICIDAD: ¿QUÉ ESTILO gana Preguntas frecuentes Obtenga un poco de ayuda Me duele la cabeza por todo esto. ¿No hay alguna herramienta que pueda usar En el lado derecho del panel, verá los estilos aplicados al elemento. Por para ayudarme a descubrir cómo la cascada está afectando mi página web? lo general, hay un estilo "computado": la suma total de todas las Tratar de averiguar todos los entresijos de las propiedades heredadas y los estilos en conflicto confunde a muchas personas. Además, hacer los cálculos para descubrir la especificidad de un estilo no es la idea de diversión del diseñador web promedio, especialmente cuando hay hojas de estilo grandes propiedades CSS aplicadas al elemento a través de la herencia y la cascada o el "Frankenstyle" del elemento. Debajo encontrará las reglas de estilo que se aplican al elemento, enumeradas en orden de más específico (en la parte superior) a menos específico (en la parte inferior). con muchos selectores descendientes. Todos los navegadores web actuales tienen ayuda integrada en forma de inspector. La forma más rápida de inspeccionar un elemento en una página y todo el CSS que lo afecta es hacer clic con el botón derecho (Control-clic en una Mac) en el elemento (el título, el enlace, el párrafo o la imagen) y elegir Inspeccionar elemento en el menú contextual. Se abrirá un panel (generalmente debajo de la página web) que muestra el HTML de la página, con el HTML del elemento seleccionado resaltado. (Para que esto funcione en Safari, primero debe activar la opción Mostrar menú de desarrollo en la ventana Preferencias→Avanzado.) En la lista de estilos, probablemente verá algunas propiedades tachadas; esto indica que la propiedad no se aplica al elemento o que ha sido anulada por un estilo más específico. Para ver un par de breves tutoriales sobre el uso de las herramientas para desarrolladores de Chrome para analizar CSS, visitehttps:// desarrolladores. google.com/chrome-developer-tools/docs/ elements-styles yht tp: //webdesign.tut splus .com/tutor ials/work flowtutorials/faster-htmlcss-workflow-with-chromedevelopertools/. Ahora supongamos que la hoja de estilo se viera así: . línea de autor a { color: rojo; } p .email { color: azul; } En este caso, el enlace seríarojo.Desde .firma unaparece despuésp.emailen la hoja de estilo, sus propiedades ganan. ¿Qué sucede si tiene reglas en conflicto en una hoja de estilo externa e interna? En ese caso, la ubicación de sus hojas de estilo (dentro de su archivo HTML) se vuelve muy importante. Si primero agrega una hoja de estilo interna usando el <estilo>etiqueta (página 45) yentonces adjunte una hoja de estilo externa más abajo en el HTML usando el <enlace>(página 48), entonces gana el estilo de la hoja de estilo externa. (En efecto, es el mismo principio en el trabajo sobre el que acaba de terminar de leer:El estilo que aparece en último lugar gana. ) El resultado final: Sea coherente en la forma en que coloca las hojas de estilo externas. Lo mejor es enumerar primero las hojas de estilo externas y usar solo una hoja de estilo interna cuando sea absolutamente necesario aplicar uno o más estilos a una sola página. NotaCualquier hoja de estilo externa adjunta con @importarla regla debe aparecer antes de los estilos internos dentro de un < estilo>y antes de cualquier estilo en una hoja de estilo externa. Consulte la página 48 para obtener más información sobre las hojas de estilo externas e internas. 110 Css3: el manual perdido www.it-ebooks.info Controlador LA CASCADA MOMENTO DE RESOLUCIÓN DE PROBLEMAS Anulando la especificidad CSS proporciona una forma de anular la especificidad por completo. Puede Sin embargo, incluyendo!importantedespués de un valor de propiedad significa usar este truco cuando quiera asegurarse de manera absoluta y positiva de que que esa propiedad específica siempre gana. Entonces, en el ejemplo anterior, una propiedad en particular no pueda ser anulada por un estilo más específico. todos los enlaces en la página, incluidos los que están dentro de un elemento ¡Simplemente inserte!importantedespués de cualquier propiedad para con elnavegaciónclase—son verde azulado. protegerla de anulaciones basadas en especificidad. Tenga en cuenta que !importantefunciona en una propiedad individual, Por ejemplo, considere los dos estilos siguientes: no en un estilo completo, por lo que debe agregar !importantehasta el . nav a { color: rojo; } final de cada propiedad que desees hacer invencible. ¡Finalmente, a { color: verde azulado !importante; } cuando dos estilos ambos tienen!importanteaplicado a la misma Normalmente, un enlace dentro de un elemento con la clase de propiedad, el estilo más específico!importantela regla gana. navegaciónsería de color rojo desde el .nav unEl estilo es más específico que elaestilo de etiqueta Controlando la cascada Como puede ver, cuantos más estilos CSS cree, mayor será el potencial para formatear errores. Por ejemplo, puede crear un estilo de clase especificando una fuente y un tamaño de fuente en particular, pero cuando aplica el estilo a un párrafo, ¡no sucede nada! Este tipo de problema suele estar relacionado con la cascada. Aunque puede pensar que aplicar directamente una clase a una etiqueta debería aplicar las propiedades de formato de la clase, puede que no sea así si hay un estilo con mayor especificidad. Tienes un par de opciones para lidiar con este tipo de problema. Primero, puedes usar !importante ( como se describe en el cuadro anterior) para asegurarse de que una propiedadsiemprese aplica. El ! importanteSin embargo, el enfoque es un poco torpe, ya que es difícil predecir que nunca, nunca, querrá anular una regla !importantepropiedad algún día. Siga leyendo para conocer otras dos soluciones de ajuste en cascada. Cambiar la especificidad La imagen superior de la Figura 5-4 es un ejemplo de un estilo de etiqueta específico que pierde en el juego en cascada. Afortunadamente, la mayoría de las veces, puede cambiar fácilmente la especificidad de uno de los estilos en conflicto y ¡ahorrar!importantepara emergencias reales. En la Figura 5-4 (arriba), dos estilos dan formato al primer párrafo. El estilo de clase—.introducción—no es tan específico como el #barra lateral pestilo, entonces.introducciónLas propiedades de s no se aplican al párrafo. Para aumentar la especificidad de la clase, agregue el nombre de ID al estilo: # barra lateral .intro. Capítulo 5:GESTIÓN DE MÚLTIPLES ESTILOS: LA CASCADA www.it-ebooks.info 111 Controlador LA CASCADA Figura 5-4 Aunque una clase se aplica a una etiqueta específica, como el primer párrafo de la imagen superior, es posible que sus propiedades no siempre tengan efecto. En este caso, el párrafo está dentro de un<div>etiqueta con una identificación de#barra lateral, por lo que el selector descendiente#barra lateral pes más específico que el. introducciónclase. La solución: Hacer el.introducción clase más específica agregando la ID antes de ella—#sidebar p.intro—como en el ejemplo de abajo. Sin embargo, simplemente agregar selectores adicionales para hacer que las propiedades de un estilo "ganen" puede conducir a lo que se ha llamadoguerras de especificidaddonde terminas con hojas de estilo que contienen nombres de estilo muy largos y enrevesados como: #casa #principal #piso h1.De hecho, como leerá en la página 114, debe intentar evitar este tipo de estilos y tratar de mantener sus selectores lo más cortos posible. 112 Css3: el manual perdido www.it-ebooks.info NotaSi te gustan las matemáticas, el #barra lateral pstyle tiene una especificidad de 101 (100 para el ID y 1 para el selector de etiquetas), mientras que .introducciónestilo tiene una especificidad de 10 (10 puntos para un selector de clase). Como 101 es Controlador LA CASCADA mayor que 10, #barra lateral ptoma precedencia. Cambiando .introduccióna #barra lateral .introcambia su especificidad a 110. Anulación selectiva También puede afinar su diseñoselectivamenteanulando estilos en ciertas páginas. Supongamos que ha creado una hoja de estilo externa llamadaestilos.cssque ha adjuntado a cada página de su sitio. Este archivo contiene la apariencia general de su sitio: la fuente y el color de <h1>etiquetas, cómo deben verse los elementos del formulario, etc. Pero tal vez en su página de inicio, quiera el <h1>etiqueta para que se vea ligeramente diferente al resto del sitio, quizás más audaz y más grande. O el texto del párrafo debe ser más pequeño en la página de inicio, para que pueda introducir más información. En otras palabras, aún desea utilizarmayoríade los estilos de laestilos.cssarchivo, pero simplemente desea anular algunas propiedades para algunas de las etiquetas (<h1>, <p>,etcétera). Un enfoque es simplemente crear una hoja de estilo interna que enumere los estilos que desea anular. Quizas elestilos.cssarchivo tiene la siguiente regla: h1 { familia tipográfica: Arial, Helvetica, sans-serif; tamaño de fuente: 24px; color: #000; } Quieres el <h1>etiqueta en la página de inicio para que sea más grande y roja. Así que simplemente agregue el siguiente estilo en una hoja de estilo interna en la página de inicio: h1 { tamaño de fuente: 36px; color rojo; } En este caso, el <h1>La etiqueta en la página de inicio usaría la fuente Arial (de la hoja de estilo externa) pero sería roja y de 36 píxeles de alto (del estilo interno). CONSEJOAsegúrese de adjuntar la hoja de estilo externaantesla hoja de estilo interna en el <cabeza>sección del HTML. Esto garantiza que los estilos de la hoja de estilo interna prevalezcan en los casos en que la especificidad de dos estilos sea la misma, como se explica en la página 114. Otro enfoque sería crear una hoja de estilo externa más:casa.csspor ejemplo, que adjunte a la página de inicio además de laestilos.csshoja de estilo. Elcasa.cssEl archivo contendría los nombres de estilo y las propiedades que desea anular desde elestilos.css archivo. Para que esto funcione, debe asegurarse de que elhogar . CSSaparece el archivo despuéselestilos.cssarchivo en el HTML, así: <enlace rel="hoja de estilo" href="css/estilos.css"/> <enlace rel="hoja de estilo" href="css/inicio.css"/> Capítulo 5:GESTIÓN DE MÚLTIPLES ESTILOS: LA CASCADA www.it-ebooks.info 113 Controlador LA CASCADA CONSEJOOtra forma de afinar los diseños página por página es usar diferentes nombres de clase para el <cuerpo> etiqueta de diferentes tipos de páginas, por ejemplo .reseña, .story, .home—y luego cree selectores descendientes para cambiar la forma en que se ven las etiquetas en este tipo de páginas. Esta técnica se analiza en la página 67. Evitar las guerras de especificidad Como se mencionó en la página 112, muchos diseñadores web en estos días evitan los selectores de ID en favor de las clases. Una razón: los selectores de ID son muy poderosos y, por lo tanto, requieren más poder para anularlos. Esto a menudo conduce a guerras de especificidad en las que las hojas de estilo se cargan con selectores complicados e innecesariamente extensos. Este problema se explica mejor con un ejemplo. Digamos, por ejemplo, que su página tiene este fragmento de código HTML: <div id="artículo"> <p>Un párrafo</p> <p>Otro párrafo</p> <p class="special">Un párrafo especial</p> </ div> Tú decides que quieres colorear los párrafos dentro del artículo.divisiónrojo, por lo que crea un selector descendiente como este: # artículo p { color: rojo; } Pero desea que ese párrafo con la clase de especial sea azul. Si simplemente crea un selector de clase, no obtendrá lo que desea. . especial { color: azul; } Como leyó en la página 108, al determinar qué propiedades aplicar a una etiqueta, un navegador web usa una fórmula matemática simple para lidiar con los conflictos de estilo: los navegadores le dan a un selector de ID un valor de 100, a un selector de clase un valor de 10 y un selector de etiqueta un valor de 1. Porque el selector #artículo pse compone de una ID y un elemento (un total de 101 puntos de especificidad), anula el estilo de clase simple, lo que le obliga a cambiar el selector: # artículo .especial {color: azul; } Desafortunadamente, este cambio causa dos problemas más. Primero, hace que el selector sea más largo y segundo, ahora que el color azul se aplica solo cuando la clase especial aparece dentro de algo con una identificación de artículo. En otras palabras, si copia el HTML <p class="special">Un párrafo especial</p>y péguelo en otra parte de la página, ya no será azul. En otras palabras, el uso de la ID hace que sus selectores sean más largos y menos útiles. Ahora mire lo que sucede si simplemente reemplaza todas las ID con clases. El HTML anterior cambiaría a: <div id="artículo"> <p>Un párrafo</p> <p>Otro párrafo</p> <p class="special">Un párrafo especial</p> </ div> 114 Css3: el manual perdido www.it-ebooks.info Controlador LA CASCADA Y podrías cambiar el CSS a esto: . artículo p { color: rojo; } p.especial { color: azul; } El primer estilo—.artículo p—es un selector descendiente que vale 11 puntos. el segundo estilo p.especialtambién vale 11 puntos (una etiqueta y una clase) y significa "aplicar las siguientes propiedades a cualquier párrafo con la clase especial". Ahora, si corta ese HTML y lo pega en cualquier otro lugar de la página, obtendrá el estilo azul que está buscando. Este es solo un ejemplo, pero no es difícil encontrar hojas de estilo con selectores ridículamente largos como #inicio #artículo #sidebar #legal py #inicio #artículo #barra lateral # legal p.especial. Básicamente, no hay razón para usar identificaciones. No proporcionan nada que no puedas tener con un simple selector de clases o un selector de etiquetas, y su poderosa especificidad solo puede llevarte a hojas de estilo innecesariamente complejas. NotaPara una discusión más detallada de por qué debe evitar los selectores de ID, visitehttp://csswizardry . com/2011/09/when-using-ids-can-be-a-doin-in-the-class. Comenzando con una pizarra limpia Como se explicó en la página 96, los navegadores aplican sus propios estilos a las etiquetas: por ejemplo, <h1> las etiquetas son más grandes que <h2>etiquetas, y ambos están en negrita, mientras que el texto del párrafo es más pequeño y no está en negrita; los enlaces son azules y están subrayados; y las listas con viñetas están sangradas. No hay nada en el estándar HTML que defina ninguno de estos formatos: los navegadores web simplemente agregan este formato para hacer que el HTML básico sea más legible. Sin embargo, aunque los navegadores tratan todas las etiquetas aproximadamente de la misma manera, no las tratan de manera idéntica. Por ejemplo, Safari y Firefox utilizan elrellenopropiedad para sangrar las listas con viñetas, pero Internet Explorer utiliza la propiedadmargenpropiedad. Del mismo modo, encontrará diferencias sutiles en el tamaño de las etiquetas entre los navegadores y un uso totalmente confuso de los márgenes entre los navegadores web más comunes. Debido a estas inconsistencias, puede encontrarse con problemas en los que, por ejemplo, Firefox agrega un margen superior, mientras que Internet Explorer no lo hace. Estos tipos de problemas no son culpa suya, se derivan de las diferencias en los estilos de navegador integrados. Para evitar inconsistencias entre navegadores, es una buena idea comenzar una hoja de estilo desde cero. En otras palabras, borre el formato del navegador incorporado y proporcione el suyo propio. El concepto de borrar el estilo del navegador se llamaRestablecimiento de CSS. Esta sección le ofrece una introducción práctica. En particular, hay un conjunto básico de estilos que debe incluir en la parte superior de sus hojas de estilo. Estos estilos establecen una línea de base para las propiedades que comúnmente se tratan de manera diferente en los navegadores. Aquí hay un reinicio de CSS básico: Capítulo 5:GESTIÓN DE MÚLTIPLES ESTILOS: LA CASCADA www.it-ebooks.info 115 Controlador LA CASCADA html, cuerpo, div, lapso, objeto, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acrónimo, dirección, grande, citar, código, del, dfn, em, img, ins, kbd, q, s, samp,small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, etiqueta, leyenda, tabla, título, tbody, tfoot, thead, tr, th, td, artículo, aparte, lienzo, detalles, incrustar, figura, figcaption, pie de página, encabezado, hgroup, menú, navegación, salida, ruby, sección, resumen, tiempo, marca, audio, video { margen: 0; relleno: 0; borde: 0; tamaño de fuente: 100%; alineación vertical: línea de base; } artículo, aparte, detalles, figcaption, figura, pie de página, encabezado, hgroup, menú, navegación, sección { bloqueo de pantalla; } cuerpo { altura de línea: 1.2; } viejo { relleno izquierdo: 1,4 em; estilo de lista: decimal; } ul { relleno-izquierda: 1.4em estilo de lista: cuadrado; } mesa { borde-colapso: colapso; espaciado de borde: 0; } NotaEl restablecimiento de CSS anterior está adaptado del conocido e influyente restablecimiento de CSS de Eric Meyer, que puede encontrar enhttp://meyerweb.com/eric/tools/css/reset. El primer estilo es un selector de grupo muy largo (página 84) que toma las etiquetas más comunes y los pone a cero—eliminar todo el relleno y los márgenes, configurar el tamaño del texto base al 100 % y eliminar el formato de texto en negrita. Este paso hace que sus etiquetas se vean bastante idénticas (vea la Figura 5-5), pero ese es el punto: desea comenzar desde cero y luego agregar su propio formato para que todos los navegadores apliquen una apariencia uniforme a su HTML. El segundo seleccionador (artículo, aparte, detalles…) es otro selector de grupo que ayuda a los navegadores más antiguos a mostrar correctamente las nuevas etiquetas HTML5. El tercer selector (cuerpo) 116 Css3: el manual perdido www.it-ebooks.info estilo establece una coherenciaaltura de la línea (espacio entre líneas en un párrafo). Aprenderás sobre elaltura de la líneapropiedad en el próximo capítulo. TUTORIAL: EL CASCADA EN acción NotaNo es necesario que escriba todo este código usted mismo. Encontrarás un archivo llamadorestablecer.cssen el05carpeta de tutoriales enwww.sawmac.com/css3que contiene un archivo básico de restablecimiento de CSS. Simplemente copie los estilos de este archivo y péguelos en sus propias hojas de estilo. Otro enfoque para los reinicios (discutido en la página 551) está disponible en los archivos del tutorial del Capítulo 17 dentro del17carpeta. Los estilos cuarto y quinto (elviejoyulestilos de etiqueta) establezca un margen izquierdo y un estilo consistentes (la página 173 presenta el estilo de la lista), y el último estilo facilita la adición de bordes a las celdas de la tabla (aprenderá por qué este estilo es útil en la página 380). Tutorial: La cascada en acción En este tutorial, verá cómo interactúan los estilos y cómo a veces pueden entrar en conflicto para crear resultados inesperados. Primero, verá una página básica que tiene los estilos de restablecimiento de CSS mencionados anteriormente, además de un par de otros estilos que proporcionan un diseño simple. Luego, creará dos estilos y verá cómo se heredan algunas propiedades y cómo la cascada invalida otras. Luego, verá cómo la herencia afecta las etiquetas en una página y cómo un navegador resuelve cualquier conflicto de CSS. Finalmente, aprenderá a solucionar problemas creados por la cascada. Para comenzar, debe descargar los archivos del tutorial que se encuentran en el sitio web complementario de este libro enwww.sawmac.com/css3. Haga clic en el enlace del tutorial y descargue los archivos. Todos los archivos están incluidos en un archivo zip, por lo que primero deberá descomprimirlos. (Visite el sitio web para obtener instrucciones detalladas sobre cómo descomprimir los archivos). Los archivos de este tutorial se encuentran dentro de la carpeta denominada05. Restablecimiento de CSS y estilo desde cero Primero, eche un vistazo a la página en la que estará trabajando. 1.En un navegador web, abra el archivo llamadocascada.htmlubicado en el05 carpeta del tutorial (consulte la Figura 5-5). La página no parece gran cosa: dos columnas, una con fondo azul y mucho texto con el mismo aspecto. Ya se han aplicado algunos estilos a este archivo, así que abra el CSS en un editor de texto y eche un vistazo. 2.Con su editor de texto o página web favorito, abra el archivoestilos.cssubicado en el05carpeta. Este archivo es la hoja de estilo externa que elcascada.htmlusos del archivo. Ya tiene varios estilos: el primer grupo son los estilos de restablecimiento de CSS discutidos en la página anterior. Eliminan los estilos básicos del navegador, por lo que actualmente todo el texto tiene el mismo aspecto. (Pronto creará sus propios estilos para que esta página se vea genial). Capítulo 5:GESTIÓN DE MÚLTIPLES ESTILOS: LA CASCADA www.it-ebooks.info 117 TUTORIAL: EL CASCADA EN acción Figura 5-5 Los estilos básicos de "restablecimiento de CSS" en esta página eliminan las sutiles diferencias en cómo los diferentes navegadores muestran las etiquetas HTML básicas. También eliminan cualquier diferencia entre cómo se ven las etiquetas. Su trabajo es tomar este lienzo vacío y diseñar las etiquetas para que se vean como usted quiere. Los dos últimos estilos: los estilos de clase.principaly .barra lateral—cree las dos columnas que ve en la Figura 5-5. El HTML se divide en dos etiquetas <div>, cada una con su propia clase. Los estilos de clase aquí esencialmente colocan los dos divs para que aparezcan uno al lado del otro como columnas (aprenderá cómo controlar el diseño de la página y crear columnas en la Parte 3). Primero agregará un par de estilos para mejorar la apariencia básica de la página y su título superior. 3.En elestilos.cssarchivo, agregue estos dos estilos en la parte inferior de la hoja de estilo después del último } del .barra lateralestilo: cuerpo { color: #B1967C; familia tipográfica: "Palatino Linotype", Baskerville, serif; acolchado superior: 115px; fondo: #CDE6FF url(images/bg_body.png) repetir-x; ancho: 800px; margen: 0 automático; } h1 { tamaño de fuente: 3em; familia de fuentes: "Arial Black", Arial, sans-serif; margen inferior: 15px; } 118 Css3: el manual perdido www.it-ebooks.info El primer estilo agrega una imagen de fondo y un color a la página, y también establece un ancho fijo para la página. Si guarda este archivo y obtiene una vista previa delcascada.html en TUTORIAL: EL CASCADA EN acción un navegador web (vea la Figura 5-6), notará que estos atributos no son heredados por las otras etiquetas; la misma imagen, por ejemplo, no se repite detrás de las etiquetas de encabezado o párrafo. ElFamilia tipográficaycolorLas propiedades, por otro lado, se heredan, por lo que otras etiquetas en la página ahora usan esa fuente y tienen un color marrón. Sin embargo, verá que, aunque el título superior tiene el mismo color que el resto del texto de la página, utiliza una fuente diferente: aquí está la cascada en acción. Elh1estilo de etiqueta no tiene un color asignado, por lo que el encabezado hereda el color marrón aplicado al cuerpoetiqueta. Pero, desde elh1estilo de etiqueta especifica una familia de fuentes, anula la fuente heredada delcuerpoestilo de etiqueta Figura 5-6 La herencia y la cascada en acción: la<h1>La etiqueta en la parte superior de esta página hereda su color de fuente del estilo de la etiqueta del cuerpo, pero obtiene su tamaño y familia de fuentes del estilo específico.h1estilo de etiqueta Crear un estilo híbrido En este ejemplo, creará dos estilos. Un estilo da formato a todos los títulos de segundo nivel de la página; y otro estilo más específico reformatea solo esos encabezados en la columna principal más grande de la página. 1.En elestilos.cssarchivo, agregue el siguiente estilo al final de la hoja de estilo: h2 { tamaño de fuente: 2,2 em; color: #AFC3D6; margen inferior: 5px; } Capítulo 5:GESTIÓN DE MÚLTIPLES ESTILOS: LA CASCADA www.it-ebooks.info 119 TUTORIAL: EL CASCADA EN acción Este estilo simplemente cambia el color del texto y aumenta el tamaño delh2etiqueta y agrega un poco de espacio debajo de ella. Si ve el archivo en un navegador web, verá que elh2etiquetas en la columna principal y lah2etiqueta en la barra lateral derecha ahora se parecen. A continuación, creará un estilo para dar formato únicamente a los títulos de segundo nivel en la columna principal. 2.Regrese al editor de su página web y alestilos.cssarchivo, haga clic directamente después del final del nuevo <h2>estilo de etiqueta y presione Entrar (Retorno) para crear una línea vacía.Agregue el siguiente estilo: . principal h2 { color: #E8A064; borde inferior: 2px blanco sólido; fondo: url(images/bullet_flower.png) sin repetición; relleno: 0 0 2px 80px; } Acabas de crear un selector descendiente que da formato a todos los <h2>etiquetas que aparecen adentrode una etiqueta con una clase deprincipalaplicado a ella. Las dos columnas de texto de esta página están encerradas entre <div>etiquetas con diferentes nombres de clase aplicados a ellos. La columna más grande de la izquierda tiene la claseprincipal,por lo que este estilo en particular solo se aplicará a <h2>etiquetas en ese div. Este estilo es similar al que creó en el tutorial del Capítulo 2 en el Paso 17 en la página 52: agrega un subrayado y un ícono de flor simple al título. Este estilo también especifica un color naranja para el texto. 3.Guarde la hoja de estilo y obtenga una vista previa de la página una vez más en un navegador web (vea la Figura 5-7). Notará que todas las etiquetas del encabezado 2 (las dos en la columna principal y una en la barra lateral) tienen el mismo tamaño, pero las dos en la columna principal también tienen el ícono de subrayado y flor. Porque el .principal h2el estilo es más específico que el simpleh2estilo, si hay algún conflicto entre los dos estilos, elcolorpropiedad, en este caso—el . principal h2las propiedades ganan. Entonces, aunque los títulos de segundo nivel en la columna principal obtienen un color de texto azul delh2estilo, el color naranja de los más específicos.principal h2el estilo gana. Sin embargo, desde el .principal h2estilo no especifica un tamaño de fuente o un margen inferior, los títulos en la columna principal obtienen esas propiedades delh2estilo. superación de conflictos Debido a que las propiedades de CSS a veces entran en conflicto cuando se aplican varios estilos a la misma etiqueta, a veces encontrará que sus páginas no se ven exactamente como las planeó. 120 Css3: el manual perdido www.it-ebooks.info TUTORIAL: EL CASCADA EN acción Figura 5-7 Una historia de dos estilos: tanto elh2y .principalh2 estilos se aplican a los títulos de segundo nivel en el columna izquierda de esta página. sin embargo, el.principal h2El estilo se aplica solo a los titulares dentro de la columna principal (izquierda). Además, dado que ese estilo es más poderoso que el básico h2estilo de etiqueta, anula cualquier conflicto entre los dos estilos, en este caso, usando un color de texto naranja en lugar del color azul delh2estilo de etiqueta Cuando eso suceda, deberá trabajar un poco para averiguar por qué y reajustar sus selectores de CSS para asegurarse de que la cascada funcione para producir los resultados que desea. 1.Regrese al editor de su página web y alestilos.cssarchivo. Ahora creará un nuevo estilo para formatear solo los párrafos en la columna principal de la página. 2.Agregue el siguiente estilo al final de la hoja de estilo: . p principal { color: #616161; familia tipográfica: "Palatino Linotype", Baskerville, serif; tamaño de fuente: 1,1 em; altura de línea: 150%; margen inferior: 10px; margen izquierdo: 80px; } Este estilo cambia el color, el tamaño y la fuente del texto, extiende las líneas del texto (elaltura de la líneapropiedad) y ajusta los márgenes inferior e izquierdo de los párrafos. Capítulo 5:GESTIÓN DE MÚLTIPLES ESTILOS: LA CASCADA www.it-ebooks.info 121 TUTORIAL: EL CASCADA EN acción La página se vería mejor si resaltara el párrafo inmediatamente después del título; hacerlo más grande y más audaz puede ayudar a crear un mensaje más poderoso. La forma más fácil de diseñar solo ese párrafo es crear un estilo de clase y aplicarlo a ese párrafo. 3.Agregue un último estilo al final de la hoja de estilo: . introducción { color: #6A94CC; familia tipográfica: Arial, Helvetica, sans-serif; tamaño de fuente: 1,2 em; margen izquierdo: 0; margen inferior: 15px; } Este estilo cambia el color, la fuente y el tamaño, y ajusta un poco los márgenes. Todo lo que tienes que hacer es aplicar la clase al HTML. 4.abre elcascada.htmlarchivo en el editor de su página web.Localice el <p>etiqueta que aparece después de <h1>CSS: El Manual Perdido</h1>y directamente debajo <clase div="principal">,y luego agregue el siguiente atributo de clase: <p clase="introducción"> 5.Obtenga una vista previa de la página en un navegador web. Y... el párrafo no ha cambiado por completo. ¿Lo que da? Siguiendo las reglas de la cascada, . introducciónes un selector de clase básico, mientras que .p principales un selector descendiente compuesto por una clase y un nombre de etiqueta. Estos se suman para crear un estilo más específico, por lo que sus propiedades de estilo anulan cualquier conflicto entre él y el . introducciónestilo. Para hacer el .introduccióntrabajo de estilo, necesitas darle un poco de jugo haciendo que su selector sea más poderoso. 6.Volver a laestilos.cssarchivo en el editor de su página web y cambie el nombre del estilo de .introducciónap.introducción Asegúrese de que no haya espacio entre lospagy .introducciónBásicamente has creado un lazo—.p principales una clase y un selector de etiqueta, yp.introducciónes una etiqueta y una clase. Ambos tienen un valor de especificidad de 11, pero debido a que p.introducciónaparece después.p principalen la hoja de estilo, gana la batalla y sus propiedades se aplican al párrafo. (Podrías haber creado un estilo aún más específico). principal . introducción—para superar el conflicto.) 7.Obtenga una vista previa de la página en un navegador web (consulte la Figura 5-8). ¡Voila! El párrafo cambia a azul, con texto más grande, una fuente diferente y sin margen izquierdo. Si no tuviera una comprensión clara de la cascada, estaría rascándose la cabeza preguntándose por qué ese estilo de clase no funcionó la primera vez. 122 Css3: el manual perdido www.it-ebooks.info En este y los cuatro capítulos anteriores, ha cubierto los conceptos básicos de CSS. Ahora, en la segunda parte, es hora de tomar ese conocimiento y aplicarlo a desafíos de diseño reales: hacer que las páginas web TUTORIAL: EL CASCADA EN acción se vean geniales. Figura 5-8 Incluso en una página simple como esta, con solo un puñado de estilos, el aspecto de cualquier etiqueta suele ser una combinación de propiedades de varios estilos. Capítulo 5:GESTIÓN DE MÚLTIPLES ESTILOS: LA CASCADA www.it-ebooks.info 123 www.it-ebooks.info PARTE CSS aplicado CAPÍTULO 6: Dar formato al texto CAPÍTULO 7: Márgenes, relleno y bordes CAPÍTULO 8: Adición de gráficos a páginas web CAPÍTULO 9: Mejorar la navegación de su sitio CAPÍTULO 10: Transformaciones, transiciones y animaciones CSS CAPÍTULO 11: Formateo de tablas y formularios www.it-ebooks.info 2 www.it-ebooks.info Capítulo 6 6 Dar formato al texto La mayoría de los sitios web todavía dependen de las palabras para transmitir sus mensajes. Claro, METRO a la gente le gusta mirar fotos, clips de películas y animaciones, pero es el material de lectura lo que hace que regresen. La gente está ávida de actualizaciones de Facebook, noticias, chismes, artículos instructivos, recetas, preguntas frecuentes, chistes, listas de información e incluso tweets de 140 caracteres. Con CSS, puede, ydebería—haga que sus titulares y cuerpo de texto capten la atención de los visitantes de manera tan convincente como cualquier foto. CSS ofrece una poderosa variedad de opciones de formato de texto, que le permiten asignar fuentes, colores, tamaños, espacios entre líneas y muchas otras propiedades que pueden agregar impacto visual a los títulos, listas con viñetas y párrafos de texto antiguos regulares (vea la Figura 6- 1). Este capítulo revela todo y luego termina con un tutorial en el que puede practicar cómo ensamblar estilos de texto CSS y ponerlos a trabajar en una página web real. Uso de fuentes Lo primero que puede hacer para que el texto de su sitio web se vea más emocionante es aplicar diferentes fuentes a los títulos, párrafos y otros elementos escritos en sus páginas. Para aplicar una fuente a un estilo CSS, utiliza elFamilia tipográficapropiedad y especifique la fuente que desea utilizar. Por ejemplo, supongamos que desea utilizar la fuente Arial para los párrafos de una página. Puedes crear unpagestilo de etiqueta y use elFamilia tipográficapropiedad como esta: pag { familia tipográfica: Arial; } 127 www.it-ebooks.info USO DE FUENTES Figura 6-1 Una buena tipografía web hace que los sitios sean fáciles de leer y agradables de ver. El uso de demasiadas fuentes o demasiadas florituras tipográficas a menudo conduce a páginas web confusas y difíciles de entender (arriba). El uso de diferentes tamaños de letra, opciones de estilo sutiles y solo un par de variaciones de fuente hace que una página sea fácil de escanear y divertida de leer (abajo). Originalmente, elFamilia tipográficaLa propiedad solo funcionaba si los visitantes de su sitio tenían la misma fuente instalada en sus computadoras. En otras palabras, usando el ejemplo anterior, si alguien que visita su sitio no tiene la fuente Arial en su computadora, los párrafos de la página se mostrarán con la fuente predeterminada del navegador web (generalmente alguna variante de Times 128 Css3: el manual perdido www.it-ebooks.info Nuevo Romano). Debido a esto, los diseñadores web se limitaron a un puñado de fuentes que vienen preinstaladas en la mayoría de las computadoras. USO DE FUENTES Más recientemente, los navegadores web comenzaron a admitirfuentes web: fuentes que el navegador descarga y usa mientras ve su sitio. Las fuentes web utilizan elFamilia tipográfica propiedad también, pero requiere un comando CSS adicional llamado @Perfil delanterodirectiva, que indica a un navegador web que descargue la fuente especificada. Las fuentes web abren muchas posibilidades de diseño emocionantes, lo que le permite elegir entre una gran variedad de tipos de letra. Pero, como aprenderá en la página 132, también vienen con su propio conjunto de desafíos. En otras palabras, como diseñador web, puede optar por seguir con el método de fuente probado y verdadero (seleccionar fuentes del conjunto básico instalado en la mayoría de las computadoras) o usar fuentes web para una mayor elección de diseño (a costa de más trabajo). ). Tampoco estás limitado a un enfoque u otro. Muchos diseñadores web combinan las dos, utilizando fuentes estándar en algunos casos (como el texto del cuerpo principal de una página) y fuentes web en otros casos (para crear títulos llamativos, por ejemplo). Elegir una fuente común Cuando usas elFamilia tipográficapropiedad para especificar una fuente, los visitantes de su sitio no necesariamente verán la fuente que elija; deben tenerla instalada en sus computadoras o, en el caso de las fuentes web, descargar temporalmente la fuente para ver el sitio. Debido a que no siempre puede saber si su fuente preferida está disponible para un visitante en particular, es una práctica común especificar no solo su fuente principal, sino también un par de opciones de respaldo. Si la computadora de su espectador tiene su fuente de primera elección, entonces eso es lo que verá. Pero cuando la primera fuente no está instalada, el navegador busca en la lista hasta que encuentra una fuente que sí lo está. La idea es especificar una lista de fuentes de aspecto similar que son comunes a una variedad de sistemas operativos, así: familia tipográfica: Arial, Helvetica, sans-serif; En este ejemplo, un navegador web primero busca si la fuente Arial está instalada; si es así, entonces se usa esa fuente; si no, el navegador luego busca Helvetica, y si no está instalada, finalmente se conforma con una fuente genérica: sans-serif. Cuando enumera un tipo de fuente genérico (como sans-serif o serif), el navegador del espectador puede elegir la fuente real. Pero al menos puedes definir su carácter básico. NotaEn la vida real, cuando pone en acción una propiedad CSS, debe, por supuesto, incluir todas las demás necesidades de un bloque de declaración de estilo completo y una hoja de estilo, como se describe en el Capítulo 2:p { familia de fuentes: Arial, Helvetica, sans-serif; },Por ejemplo. Cuando ves ejemplos comofamilia tipográfica: Arial, Helvetica, sans-serif;recuerde que esa es solo la propiedad aislada, destilada para su beneficio de lectura de libros. Además, si el nombre de la fuente se compone de más de una palabra, debe encerrarlo entre comillas: familia de fuentes: "Times New Roman", Times, serif; Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 129 USO DE FUENTES Aquí hay algunas combinaciones de uso frecuente de fuentes comúnmente instaladas organizadas por tipo de fuente, incluido un tipo de fuente genérico al final de cada lista. FUENTES SERIF Las fuentes serif son mejores para pasajes largos de texto, ya que se cree ampliamente que las serif, esos pequeños "pies" al final de los trazos principales de una letra, guían suavemente la vista de una letra a otra, lo que hace que el texto sea más fácil de leer. Ejemplos de fuentes serif son Times, Times New Roman y Georgia. • “Times New Roman”, Times, serif • Georgia, “Times New Roman”, Times, serif • Baskerville, “Palatino Linotype”, Times, serif • “Texto Hoefler”, Garamond, Times, serif Ejemplos de estas fuentes se encuentran en la Figura 6-2. Figura 6-2 Las fuentes no siempre se muestran igual en Mac (izquierda) y Windows (derecha). Los dos sistemas vienen con diferentes fuentes incorporadas. Además, el suavizado, que hace que el texto en pantalla se vea más suave, es mejor en Mac que en Windows. Windows incluye un tecnología llamada Clear Type, que puede mejorar la apariencia del texto en una pantalla. La calidad del texto en Windows depende de la configuración de Clear Type de su computadora con Windows. tiene. Puede obtener más información sobre Clear Type en www.microsoft.com/ tipografía/tipo claro. FUENTES SANS-SERIF Las fuentes sans-serif se utilizan a menudo para los titulares, gracias a su apariencia limpia y sencilla. Los ejemplos de fuentes sans-serif incluyen Arial, Helvetica y Verdana. El texto de este libro está escrito en fuente sans-serif. • Arial, Helvética, sans-serif • Verdana, Arial, Helvética, sans-serif 130 Css3: el manual perdido www.it-ebooks.info • Ginebra, Arial, Helvetica, sans-serif USO DE FUENTES • Tahoma, “Lúcida Grande”, Arial, sans-serif • “Trebuchet MS”, Arial, Helvética, sans-serif • “Century Gothic”, “Gill Sans”, Arial, sans-serif En la Figura 6-3 se muestran ejemplos de fuentes sans-serif. Figura 6-3 Fuentes sans-serif en Mac (izquierda) y Windows (derecha). Algunas personas creen que solo debe usar fuentes sansserif en las páginas web porque piensan que los delicados trazos decorativos de las fuentes serif no se muestran bien en la resolución gruesa de una pantalla de computadora. Al final, tu juicio estético es tu mejor guía. Elige las fuentes que creas que se ven mejor. FUENTES MONOESPACIADAS Y DIVERTIDAS Las fuentes monoespaciadas a menudo se usan para mostrar código de computadora como los fragmentos de CSS que ve a lo largo de este libro. Cada letra en una fuente monoespaciada tiene el mismo ancho (como las que se usan en las máquinas de escribir manuales). • “Courier New”, Courier, monoespaciado • “Consola Lucida”, Mónaco, monoespacio • “Luz de placa de cobre”, “Luz gótica de placa de cobre”, serif • “Marker Felt”, “Comic Sans MS”, fantasía En la Figura 6-4 se muestran ejemplos de estas listas de fuentes. FUENTES ADICIONALES A CONSIDERAR Hay literalmente miles de fuentes, y cada sistema operativo viene con muchas más fuentes de las que se enumeran aquí. Sin embargo, aquí hay algunas fuentes que son muy comunes tanto en Mac como en PC, por lo que es posible que desee probarlas: • Arial Negro • Arial Narrow • Impacto Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 131 UTILIZANDO LA WEB FUENTES Figura 6-4 Fuentes monoespaciadas en Mac (izquierda) y Windows (derecha). Courier es la fuente monoespaciada más común, pero está lejos de limitarse a ella. Lucida Console es muy común en Windows y Mac, y Monaco está instalado en cada Mac. Ojo con Arial Black e Impact: Solo tienen un único peso y no incluyen una versión en cursiva. En consecuencia, si utiliza estas fuentes, asegúrese de configurar el peso de fuentey elEstilo de fuente (en la página 141) a la normalidad. De lo contrario, si el texto está en negrita o cursiva, el navegador hará su mejor intento (léase: feo) de cómo debería verse el texto. Uso de fuentes web La forma tradicional de usar fuentes en CSS es sencilla: solo especifica la fuente que deseas usando elFamilia tipográficapropiedad. Sin embargo, está limitado a las fuentes que sus visitantes probablemente hayan instalado en sus computadoras. Afortunadamente, como se mencionó anteriormente, todos los principales navegadores ahora admiten fuentes web. Con las fuentes web, los navegadores en realidad descargan la fuente de un servidor web y la usan para mostrar texto en la página web. La parte CSS de las fuentes web es bastante básica y requiere solo dos comandos CSS: • El @Perfil delanteroLa directiva es responsable de decirle a un navegador web tanto el nombre de la fuente como de dónde descargar la fuente. Aprenderá cómo funciona este comando CSS en la página 137, pero por ahora tenga en cuenta que así es como le dice a un navegador que descargue la fuente. • ElFamilia tipográficase usa con fuentes web de la misma manera que las fuentes ya instaladas descritas en la página 127. En otras palabras, una vez que @Perfil delantero directiva le indica al navegador que descargue la fuente, luego puede asignar esa fuente a cualquier estilo CSS usando elFamilia tipográficapropiedad. En teoría, las fuentes web no son tan difíciles de usar. Sin embargo, cuando profundice en los detalles, deberá comprender algunos requisitos únicos para usarlos correctamente. 132 Css3: el manual perdido www.it-ebooks.info NotaGoogle ofrece un método realmente fácil de usar fuentes web. La página 146 entra en todos los detalles. UTILIZANDO LA WEB FUENTES Tipos de archivos de fuentes Lo crea o no, Internet Explorer ha tenido soporte para fuentes web desde la versión 5 (¡lanzada hace más de 12 años!). Desafortunadamente, requirió un método único y difícil para crear formato de fuente. Es decir, no podría simplemente tomar una fuente normal de su computadora, colocarla en un servidor web y listo. En su lugar, necesitaba tomar una fuente normal y convertirla al formato EOT (tipo abierto incrustado). Eso sigue siendo cierto para las versiones hasta IE 8. Todavía hay otros formatos de fuentes que se utilizan para las fuentes web, algunas de las cuales funcionan en algunos navegadores pero no en otros. Para asegurarse de que la mayor cantidad de visitantes de su sitio puedan disfrutar de las fuentes que especifique, deberá proporcionar esas fuentes en una variedad de formatos (encontrará los detalles en la página 135). Aquí hay una lista de los diferentes tipos de fuentes y en qué navegadores funcionan. • EoT.Las fuentes Open Type incrustadas solo funcionan en Internet Explorer. Necesita una herramienta especial para convertir una fuente normal a formato EOT, pero sitios como FontSquirrel (página 135) pueden hacerlo por usted. • Tipo verdadero y tipo abierto.Si busca en la carpeta Fuentes de su computadora, probablemente encontrará fuentes .ttf (True Type) o .otf (Open Type). Este es el formato de fuente más comúnmente utilizado para fuentes de computadora. Puede utilizarlos para procesamiento de textos y autoedición, así como para páginas web. Este tipo de fuente es ampliamente compatible con la mayoría de los navegadores web: IE 9 y posteriores, Firefox, Chrome, Safari, Opera, iOS Safari (versión 4.2 y posteriores), Android y Blackberry Browser. • WoFF.Los archivos Web Open Font Format son un formato de fuente más reciente diseñado específicamente para la Web. Las fuentes WOFF son básicamente versiones comprimidas de las fuentes TrueType o Open Type. Eso significa que las fuentes WOFF son generalmente más pequeñas en tamaño de archivo y se descargan más rápidamente que otras fuentes. El formato WOFF también tiene una amplia compatibilidad con navegadores, incluidos IE 9 y posteriores, Firefox, Chrome, Safari, Opera, navegador Blackberry e iOS Safari versión 5 y posteriores. La excepción más notable es Android. En otras palabras, si solo usa fuentes WOFF, los visitantes en dispositivos móviles Android o que usen IE 8 no podrán descargar ni mostrar sus fuentes. • SVG.El formato gráfico vectorial escalable no es un formato de fuente per se. En realidad, es una forma de crear gráficos vectoriales (gráficos que se pueden escalar sin perder calidad). El soporte para fuentes SVG es mucho más limitado. Ni Internet Explorer ni Firefox son compatibles con SVG. Otro problema con SVG es que produce archivos que a menudo tienen el doble del tamaño de TrueType y tres veces el tamaño de las fuentes WOFF. El único beneficio real de SVG es que es el único formato de fuente que entienden las versiones anteriores de iOS que ejecutan Safari versión 4.1 o anterior. Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 133 UTILIZANDO LA WEB FUENTES Afortunadamente, no tiene que seleccionar solo un tipo de fuente e ignorar todos los demás navegadores. Como leerá en la página siguiente, puede (y generalmente lo hará) especificar múltiples formatos y dejar que el navegador descargue el que funcione para él. Además, puede descargar una fuente que ya se haya convertido a estos cuatro formatos, o incluso convertir una fuente True Type normal a estos múltiples formatos. NotaUn solo archivo de fuente contiene solo un peso y estilo para esa fuente. En otras palabras, si desea que el texto esté en negrita, cursiva o negrita y cursiva, debe descargar archivos de fuentes independientes para cada variación de la fuente. Algunas fuentes, especialmente las fuentes de visualización divertidas, solo incluyen una variante y se usan mejor para títulos o texto donde no necesitará versiones en cursiva o negrita. Consulte la página 129 para obtener más información sobre los diferentes pesos y estilos de fuente. Problemas legales con las fuentes web El segundo obstáculo para el uso de fuentes web es un problema legal. Las personas y las empresas crean y venden estas fuentes, al igual que otro software, para ganarse la vida. Cuando carga una fuente TrueType en su servidor web para que los visitantes la usen mientras miran su sitio, cualquiera puede simplemente descargar la fuente y comenzar a usarla en su propio sitio web o en el programa de diseño de página o de procesamiento de texto de su computadora. A la mayoría de las empresas de fuentes no les gusta la idea de que la gente piratee sus creaciones, por lo que muchas fuentes tienen licencias que prohíben específicamente su uso en la Web. En otras palabras, incluso si compra una fuente de Adobe, no puede simplemente comenzar a usarla en su sitio web. Muchas empresas de fuentes ahora ofrecen diferentes tipos de licencias (a diferentes precios) para permitir su uso en la Web. Esto incluso se aplica a las fuentes que vienen con su computadora. Puede usarlos con los programas que instala en su computadora, pero es posible que no pueda colocar esos mismos archivos de fuente en su servidor web para usarlos como fuente web. Si no sabe si una fuente permite su uso en la Web, es mejor que no la use y busque una fuente que pueda usarse en la Web. NotaPara eludir cualquier problema legal, puede utilizar un servicio de fuentes como Google Fonts (página 146) o TypeKit, un servicio comercial de fuentes web de Adobe (consulte el cuadro en la página 153). Encontrar fuentes web Al buscar fuentes web, se enfrenta a dos problemas: encontrar fuentes que sean legales para usar en la Web y encontrar fuentes en todos los formatos de fuente (EOT, WOFF, TrueType, etc.). Si bien algunas empresas de fuentes han comenzado a ofrecer licencias web para las fuentes que compra, existe una amplia variedad de fuentes gratuitas disponibles para uso en la Web. Estas son algunas de las muchas fuentes de fuentes web gratuitas: • La liga de tipos móviles (www.theleagueofmoveabletype.com).Compuesto por un grupo de diseñadores, este sitio fue uno de los primeros en ofrecer fuentes gratuitas hechas a mano para uso web. Su fuente, League Gothic, es ampliamente utilizada en la Web. • Fundición de fuentes Exljbris (www.exljbris.com).Proporciona fuentes clásicas y gratuitas de Jos Buivenga: Museo, Museo Sans y Museo Slab. 134 Css3: el manual perdido www.it-ebooks.info • fontex.org (www.fontex.org).Proporciona una gran selección de fuentes gratuitas, aunque no todas tienen licencia para uso comercial. Si planea usar una de las fuentes en un sitio comercial (es decir, no solo en su sitio web personal), asegúrese de leer el acuerdo de licencia que acompaña a la fuente descargada. • UTILIZANDO LA WEB FUENTES La biblioteca de fuentes abierta (http://openfontlibrary.org).Más de 152 fuentes gratuitas (al momento de escribir este artículo) están disponibles y todas pueden usarse en sus sitios web (pero no use las 152 a la vez). • Fuente Ardilla (www.fontsquirrel.com).Un sitio de referencia en el mundo de las fuentes web que ofrece más de 800 fuentes. Además de ofrecer solo fuentes, Font Squirrel proporciona lo que llama "Kits @font-face", que son una colección de archivos que incluyen fuentes en todos los formatos de fuentes principales y un archivo CSS que incluye todos los @ necesarios.Perfil delanterosintaxis para cargarlos (aprenderás a usar @Perfil delanterousted mismo en la página 137). Además, Font Squirrel ofrece una herramienta en línea para convertir una fuente TrueType o Open Type a otros formatos de fuente, incluidos EOT, SVG y WOFF. Aprenderá a utilizar esta herramienta en la siguiente sección. • Fuentes de Google (www.google.com/webfonts).Google ofrece una forma sencilla y gratuita de incluir fuentes web en sus sitios. Aprenderá a usar este servicio en profundidad en la página 146. Generación de múltiples formatos de fuente La mayoría de los sitios que ofrecen fuentes gratuitas proporcionan la fuente en un solo formato (generalmente TrueType (.ttf) o Open Type (.otf). Si bien muchos navegadores admiten TrueType y Open Type, no todos lo hacen. Además, el formato WOFF más nuevo es compatible con la mayoría de los navegadores y tiene la ventaja de ser más pequeño en tamaño de archivo que TrueType. Para asegurarse de proporcionar fuentes a tantos navegadores como sea posible, debe usar al menos fuentes EOT, WOFF y TrueType. para iPhones con Safari versión 4.1 o anterior, necesitará fuentes SVG. NotaSegún el sitio de estadísticas web NetMarketShare, Safari 4.1 y versiones anteriores representan menos del 2 por ciento de todos los navegadores web móviles. Puedes leer el artículo enwww.netmarketshare.com/browser-market-share. aspx? qprid=2&qpcustomd=1. Afortunadamente, Font Squirrel proporciona una herramienta en línea muy útil para ayudar a generar los formatos de fuente requeridos. El generador @font-face ubicado en www.fontsquirrel.com/fontface/generatorproporciona un método simple para crear no solo las fuentes adecuadas, sino también un archivo HTML de muestra y una hoja de estilo CSS básica. Para usar el generador @font-face de Font Squirrel: 1.Busque una fuente TrueType (.ttf) o tipo abierto (.otf). Utilice uno de los sitios enumerados en la sección anterior o busque una fuente de otro sitio. Solo asegúrese de que la fuente tenga licencia para su uso como fuente web. Si no lo es, o no está seguro, sáltelo y busque otra fuente. Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 135 UTILIZANDO LA WEB FUENTES 2.Vaya al generador @font-face enwww.fontsquirrel.com/fontface/ generador. Es una página simple con solo unas pocas opciones (vea la Figura 6-5). 3.Haga clic en el botón Agregar fuentes (#1 en la Figura 6-5). Su navegador abre un cuadro de diálogo "Seleccionar archivos". 4.Seleccione una o más fuentes de su computadora y haga clic en el botón Abrir. Su navegador carga el archivo o los archivos en el servidor de Font Squirrel. 5.Seleccione una opción de conversión (#2 en la Figura 6-5). • Básicosimplemente convierte la fuente a formatos EOT, WOFF y SVG. • óptimoes una mejor opción ya que no solo convierte la fuente, sino que también realiza otras mejoras para mejorar el rendimiento y la velocidad de las fuentes. • Expertole permite ajustar hasta la última configuración para la conversión. Por ejemplo, le permite crear unsubconjuntode la fuente, es decir, solo un conjunto de caracteres cuidadosamente seleccionados. En otras palabras, puede excluir del archivo de fuente ciertos caracteres que no está usando, como el punto y coma, el signo de exclamación o la letra Q. Con toda probabilidad, querrá acceder a todos los personajes, por lo que es mejor quedarse con el Óptimo. 6.Active la casilla de verificación "Sí, las fuentes que estoy cargando son legalmente elegibles para la incrustación web" (n.º 3 en la Figura 6-5). Como se mencionó en la página 134, las fuentes son propiedad intelectual, y simplemente colocar una en un servidor web promueve la piratería de software. Asegúrese de que sus fuentes se puedan usar en la Web; la mayoría de los enumerados en esta sección lo son. 7.Haga clic en el botón Descargar su kit (#4 en la Figura 6-5). Según la cantidad de fuentes que estés convirtiendo y su complejidad, el proceso de descarga puede demorar un poco. El servidor de Font Squirrel necesita tomar la fuente y realizar su magia para generar cada formato de fuente. Cuando haya terminado, descargará una carpeta que contiene varios archivos de formato de fuente, un archivo de demostración, un archivo CSS y algunos otros archivos misceláneos. Los más importantes son, por supuesto, los . Archivos de fuentes eot, .ttf, .woff y .svg. Ahora que tiene las fuentes que desea usar, es hora de aprender a usarlas con @ de CSSPerfil delanterodirectiva. 136 Css3: el manual perdido www.it-ebooks.info UTILIZANDO LA WEB FUENTES Figura 6-5 A menos que sepa lo que está haciendo, quédese con la configuración de conversión Óptima de Font Squirrel. Él genera todos los formatos de fuente que necesitará y realiza algunos otros ajustes para que las fuentes se carguen más rápido y se vean mejor en pantalla. Pero para obtener el máximo control, elija la opción Experto y verá una lista de casi una docena de configuraciones que puede usar para modificar la forma en que se generan las fuentes. Uso de la directiva @font-face Una vez que haya descargado los archivos de fuentes adecuados, es hora de usarlos. Primero, copie los archivos en la ubicación de su computadora donde guarda los archivos para su sitio web. Muchos diseñadores web crean una carpeta dedicada en la carpeta raíz del sitio llamadafuentes, _fuentes,o fuentes web.Alternativamente, si tiene una carpeta para sus archivos CSS, puede colocar los archivos de fuentes allí. Realmente no importa dónde coloque estos archivos en su sitio, pero es útil estar organizado. El secreto de las fuentes web es un comando CSS llamado @Perfil delanterodirectiva. Este comando, en su forma más básica, nombra la fuente y le dice al navegador dónde encontrar el archivo de fuente para descargarlo. Tu colocas la @Perfil delanterodirectiva en su hoja de estilo, al igual que un estilo normal. Por ejemplo, supongamos que está utilizando la fuente League Gothic. Tiene un archivo True Type llamadoLeague_Gothic-webfont.ttfdentro de una carpeta de fuentes en su sitio. Le indicaría a un navegador que descargue esta fuente agregando la @Perfil delanterodirectiva a su hoja de estilo como esta: Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 137 UTILIZANDO LA WEB @Perfil delantero { FUENTES familia de fuentes: "League Gothic"; src: url('fuentes/League_Gothic-webfont.ttf'); } La primera propiedad,Familia tipográfica,has visto antes (página 127), pero aquí tiene un propósito diferente. Cuando se usa dentro de una @Perfil delanterodirectiva,Familia tipográficaasigna un nombre a la fuente. Luego usa ese nombre de fuente cuando desea aplicar esa fuente a un estilo. Por ejemplo, supongamos que desea utilizar la fuente League Gothic para todos los párrafos de una página. A continuación, podría utilizar este estilo: pag { familia de fuentes: "League Gothic"; } NotaUsas una @Perfil delanterodirectiva para cada fuente que desee utilizar. Si tiene tres fuentes, necesita tres @Perfil delanterodirectivas. Es una buena idea mantenerlos agrupados y colocarlos en la parte superior de su hoja de estilo, para que un navegador pueda comenzar a descargarlos inmediatamente. El segundo atributo, elorigenpropiedad: le dice al navegador dónde buscar el archivo de fuente en el servidor. Coloque la ruta desde la hoja de estilo hasta el archivo de fuente en el sistema entre comillas y dentrodirección URL ().La ruta funciona igual que otras rutas de archivos HTML, por ejemplo, rutas a imágenes, enlaces y archivos JavaScript. Por ejemplo, supongamos que tiene una hoja de estilo dentro de una carpeta llamada _estilosy un archivo de fuente llamadomi_fuente. ttf dentro de una carpeta llamada _fuentesAmbas carpetas están en la raíz de su sitio. Entonces, la ruta desde la hoja de estilo hasta el archivo de fuente es ../_fuentes/mi_fuente.ttf.escribirías un @Perfil delanterodirectiva para esa fuente como esta: @Perfil delantero { familia de fuentes: "Mi fuente"; src: url('../_fuentes/mi_fuente.ttf'); } Probablemente haya notado que en los ejemplos anteriores, solo hay un único archivo de fuente: una fuente TrueType. Eso hace que sea fácil ver cómo @Perfil delanterofunciona en general, antes de pasar a más detalles. Como se discutió anteriormente, @Perfil delanterole permite especificar varios archivos con diferentes tipos de fuentes. Desafortunadamente, debido a errores del navegador, la sintaxis de todo eso es un poco complicada. Por ejemplo, supongamos que desea utilizar todos los diferentes formatos de fuente para League Gothic en su sitio. He aquí cómo reescribir el código anterior: @Perfil delantero { familia de fuentes: 'League Gothic'; src: url('fuentes/League_Gothic-webfont.eot'); src: url('fuentes/League_Gothic-webfont.eot?#iefix') format('embedded-opentype'), url('fuentes/League_Gothic-webfont.woof') format('woff'), url('fonts/League_Gothic-webfont.ttf') format('truetype'), url('fonts/League_Gothic-webfont.svg') formato('svg'); } 138 Css3: el manual perdido www.it-ebooks.info Esto parece desordenado y, desafortunadamente, debido a un error en IE, es innecesariamente complicado. Así es como se descompone: UTILIZANDO LA WEB FUENTES • La línea 2 es la misma que antes. ElFamilia tipográficala propiedad proporciona el nombre de la fuente; el mismo nombre que usará al aplicar la fuente a sus estilos CSS. • Line 3 es para Internet Explorer 9, pero solo cuando está en modo de compatibilidad, un modo en el que IE 9 actúa como si fuera IE 8. Esta característica extraña se agregó a IE 9 para que los sitios web diseñados para acomodar correctamente los errores en IE 8 y versiones anteriores se vería bien en IE 9. Un usuario tiene que cambiar deliberadamente al modo de compatibilidad en IE 9, por lo que probablemente esté seguro omitiendo esto. • La línea 4 comienza un segundoorigenpropiedad, que de acuerdo con las reglas de la @Perfil delanterodirectiva, puede tener varios tipos de fuente especificados. La primera fuente es la . eot fuente de nuevo, pero esta vez verá que al final del archivo .eot, debe agregar ?#iefix.Esto es para acomodar aún más errores de IE, esta vez para IE 6–8. Si no agrega ese poco a la URL que sigue al .eot, es posible que la fuente no se muestre correctamente en IE 8 o versiones anteriores. También notará que después de la URL hay un código nuevo: formato ('tipo abierto incrustado') Esto indica el formato de fuente y lo agrega después de cada URL para un formato de fuente diferente. • Las líneas 5 a 7 simplemente identifican formatos de fuentes adicionales. En realidad, esta es solo una propiedad: laorigenpropiedad: dividida en varias líneas para una mayor legibilidad. Para cada tipo de fuente que especifique para elorigenpropiedad, agrega una URL, un formato y una coma (para todas las fuentes menos la última): url('fuentes/League_Gothic-webfont.woof') format('woff'), NotaAl final de la lista de archivos para elorigenpropiedad, agrega un punto y coma para indicar que ha llegado al final de laorigenpropiedad (línea 7 arriba). No olvide este punto y coma final, o el @Perfil delanterodirectiva no funcionará. Aunque un navegador puede comprender diferentes tipos de fuentes (por ejemplo, Chrome puede usar fuentes WOFF, TrueType y SVG), no descargará todos los archivos de fuentes. En cambio, a medida que lee la lista de tipos de fuentes, el navegador descarga solo la primera que entiende. En otras palabras, si Chrome encuentra el código anterior, omitirá el archivo .eot ya que no entiende ese formato de fuente, pero descargará el archivo .woof. Luego omitiría los archivos TrueType y SVG por completo. Eso significa que el orden en que enumera las fuentes es importante. Generalmente se prefiere WOOF ya que es un archivo más pequeño que se descarga más rápido, mientras que SVG es generalmente un archivo mucho más grande, por lo que debe asegurarse de enumerar las fuentes en el orden de .eot, .woof, .ttf y .svg. Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 139 UTILIZANDO LA WEB FUENTES NotaLo anterior @Perfil delanteroLa sintaxis es el resultado de muchas pruebas y solución de problemas por parte de muchos profesionales web talentosos. Puedes leer sobre su evolución en las siguientes entradas del blog:http:// www. fontspring.com/blog/forther-hardening-of-the-bulletproof-syntax,http://www.fontspring.com/blog/thenewbulletproof-font-face-syntax, yhttp://paulirish.com/2009/bulletproof-font-face-implementation-syntax/. Creación de estilos usando fuentes web La parte más difícil de las fuentes web es obtener los archivos de fuentes en el formato adecuado y configurar @Perfil delanterodirectivas. Una vez hecho esto, usa las fuentes web tal como lo haría con las fuentes preinstaladas que se describen en la página 127. En otras palabras, cuando crea un nuevo estilo, simplemente usa elFamilia tipográficapropiedad y proporcione el nombre de la fuente que utilizó en el @Perfil delanterodirectiva. Por ejemplo, en el código anterior, el @Perfil delantero directiva nombra la nueva fuente League Gothic (línea 2 en la página 138). Este es el nombre que usa cuando aplica esta fuente a un estilo. para hacer todoh1etiquetas usan la fuente League Gothic, podrías escribir este estilo: h1 { familia de fuentes: 'League Gothic'; peso de fuente: normal; } Observe que hay una nueva propiedad:peso de fuente—listado aquí. Los navegadores normalmente muestran <h1>etiquetas en negrita. La mayoría de los navegadores pondrán en negrita artificialmente una fuente web cuando se requiera una versión subnegrita. Esto da como resultado una negrita fea. Configuración de lapeso de fuenteanormalle dice al navegador que use la fuente League Gothic "tal cual", y evita intentar ponerla en negrita. En la siguiente sección, obtendrá más información sobre cómo manejar variantes de fuentes como negrita y cursiva con fuentes web. También es una buena idea incluir una lista de fuentes preinstaladas de respaldo, en caso de que el navegador no pueda cargar la fuente web. Esta es la misma técnica descrita en la página 129. Por ejemplo: h1 { familia tipográfica: 'League Gothic', Arial, sans-serif; peso de fuente: normal; } CONSEJOTambién puede utilizar fuentes que contengan símbolos e iconos en una página web. Entonces, en lugar de crear un gráfico de una señal de advertencia (por ejemplo) y colocarlo dentro de un párrafo de texto, puede usar @Perfil delantero directiva para cargar una fuente que contenga el ícono de señal de advertencia y simplemente use una letra simple (asignada al ícono en la fuente). Aquí hay algunos recursos sobre el uso de fuentes de iconos:http://css-tricks.com/flat-icons-icon-fuentes/, http://css-tricks.com/ html-for-icon-font-usage/yhttp://css-tricks.com/examples/IconFont/. Manejo de variantes en negrita y cursiva Las fuentes comunes instaladas en las computadoras incluyen variaciones en estilo y peso, por lo que cuando aplica un <fuerte>etiqueta en HTML, un navegador web usa la versión en negrita de esa fuente; del mismo modo, cuando aplica un <em>etiqueta al texto, el navegador usa una cursiva 140 Css3: el manual perdido www.it-ebooks.info versión de esa fuente; y si combina ambas etiquetas, verá una versión en negrita y cursiva de la fuente. Estas son en realidad diferentes fuentes contenidas en diferentes archivos de fuentes. Con el UTILIZANDO LA WEB FUENTES método original de uso de fuentes en páginas web (descrito en la página 129), nunca tendrá que preocuparse por estas diferentes fuentes, ya que el navegador usa la versión correcta automáticamente. Sin embargo, con las fuentes web, necesita archivos de fuentes independientes para cada variante de fuente. Por lo tanto, para el cuerpo del texto necesitará al menos una versión normal de una fuente, una versión en negrita, una versión en cursiva y una versión en negrita/cursiva. Tenga esto en cuenta cuando busque una fuente web para su sitio; algunas fuentes solo tienen un peso único y no tienen versión en cursiva. Esto podría estar bien para un título, pero no sirve de mucho para párrafos largos de texto, que probablemente tendrán algo de texto en cursiva y negrita. Además, debe crear una @ separadaPerfil delantero directivas para cada variante de fuente. Tiene dos opciones cuando trabaja con versiones en cursiva/negrita de fuentes web. Un método es más fácil de implementar pero no funciona en Internet Explorer 8 o anterior (o IE 9 en modo de compatibilidad); el otro requiere más mano de obra pero funciona en versiones anteriores de Internet Explorer. LA MANERA FÁCIL DE AÑADIR NEGRITA Y CURSIVA La forma más fácil de agregar variantes en negrita y cursiva de sus fuentes es agregarpeso de fuente yEstilo de fuentepropiedades a la @Perfil delanterodirectiva. Normalmente, el CSSpeso de fuente (página 140) le dice a un navegador que muestre una fuente en negrita, normal o uno de varios otros pesos, mientras que laEstilo de fuenteproperty (página 141) le dice a un navegador que muestre una fuente en cursiva o normal. Sin embargo, cuando se usa dentro del @Perfil delantero directiva,Estilo de fuentele dice a un navegador que aplique la fuente cuando el estilo solicite una variante particular de la fuente. Digamos que tiene una fuente llamada PTSans. Empiece con la versión normal, sin negrita y sin cursiva de la fuente. Los diversos formatos de fuente comienzan con PTSansRegular (PTSansRegular.eot, PTSansRegular.ttf, etc.). En su hoja de estilo, agregaría este @ Perfil delanterodirectiva: @Perfil delantero { familia de fuentes: 'PTSans'; src: url('PTSansRegular.eot'); src: url('PTSansRegular.eot?#iefix') format('embedded-opentype'), url('PTSansRegular.woof') format('woff'), url('PTSansRegular.ttf') format('truetype'), url('PTSansRegular.svg') format('svg'); peso de fuente: normal; estilo de fuente: normal; } Note lo siguiente: • Utiliza un nombre genérico para la familia de fuentes, PTSans en la línea 2 anterior, en lugar del nombre específico para ese archivo de fuente, PTSansRegular. Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 141 UTILIZANDO LA WEB FUENTES • Elpeso de fuentese establece en normal, ya que esta no es una versión en negrita de la fuente (línea 8). • ElEstilo de fuentese establece en normal, ya que esta no es una versión en cursiva de la fuente (línea 9). NotaLos ejemplos de código aquí asumen que los archivos de fuente PTSansRegular.eot, PTSansBold.eot, etc. están en la misma carpeta que la hoja de estilo. Si estuvieran en carpetas diferentes, tendría que ajustar la URL para señalar con precisión la ubicación de los archivos de fuentes en relación con la hoja de estilo. Ahora, supongamos que tiene una versión en cursiva de la fuente: el nombre del archivo comienza con PTSansItalic. Luego agregaría esto a su hoja de estilo: @Perfil delantero { familia de fuentes: 'PTSans'; src: url('PTSansItalic.eot'); src: url('PTSansItalic.eot?#iefix') format('embedded-opentype'), url('PTSansItalic.woof') format('woff'), url('PTSansItalic.ttf') format('truetype'), url('PTSansItalic.svg') format('svg'); peso de fuente: normal; estilo de fuente: cursiva; } usas lo mismoFamilia tipográficanombre en la línea 2—PTSans. Sin embargo, cambias el Estilo de fuenteen cursiva (línea 9). Esto le dice al navegador que la fuente que está especificando es la versión en cursiva de la fuente PTSans. Agregarías @ similarPerfil delanterodirectivas para las versiones en negrita y negrita/cursiva como esta: @Perfil delantero { familia de fuentes: 'PTSans'; src: url('PTSansBold.eot'); src: url('PTSansBold.eot?#iefix') format('embedded-opentype'), url('PTSansBold.woof') format('woff'), url('PTSansBold.ttf') format('truetype'), url('PTSansBold.svg') format('svg'); fuentepeso: negrita; estilo de fuente: normal; } @Perfil delantero { familia de fuentes: 'PTSans'; src: url('PTSansBoldItalic.eot'); src: url('PTSansBoldItalic.eot?#iefix') format('embedded-opentype'), url('PTSansBoldItalic.woof') format('woff'), url('PTSansBoldItalic.ttf') format('truetype'), url('PTSansBoldItalic.svg') format('svg'); fuente-peso: negrita; estilo de fuente: cursiva; } 142 Css3: el manual perdido www.it-ebooks.info En otras palabras, necesitas cuatro @Perfil delanterodirectivas para cubrir todas las variantes de negrita, cursiva y texto regular: observe que elFamilia tipográficael nombre es el mismo en cada UTILIZANDO LA WEB FUENTES caso; Solo elorigencambian las propiedades (para apuntar a los diferentes archivos) y elpeso de fuente yEstilo de fuentecambian las propiedades. La ventaja de este método es que puede aplicar la fuente normal al texto, aplicar <em>y <fuerte>etiquetas a su HTML, y deje que el navegador se preocupe por qué archivo de fuente cargar y usar. En este ejemplo, si desea utilizar la fuente PTSans en todos sus párrafos, simplemente agregue este estilo a su hoja de estilo: pag { familia de fuentes: PTSans; } Luego puede marcar sus etiquetas de párrafo con HTML. Por ejemplo, podría tener un párrafo como este: <p>Cuando era más joven, podía recordar <em>cualquier cosa<em>, si había sucedido o <strong>no<strong> -- <strong><em>Mark Twain</em></strong>< /p> Cuando el navegador web lee la hoja de estilo (con las cuatro @Perfil delanterodirectivas y la pagestilo de etiqueta), mostraría la mayor parte del párrafo usando la fuente PTSansRegular. Sin embargo, la palabra “cualquier cosa” contenida dentro del <em>las etiquetas usarían la fuente PTSansItalic; la palabra no dentro del <fuerte>las etiquetas usarían la fuente PTSansBold; y "Mark Twain" dentro de ambos <fuerte>y las etiquetas <em> usarían la fuente PTSans-BoldItalic. Estas directivas incluso funcionan para los titulares. Si creó un estilo para dar formato a todosh1 etiquetas con PTSans, puede crear este estilo: h1 { familia de fuentes: PTSans; } Con este estilo en su lugar, un navegador web en realidad usaría la versión en negrita de PTSans, ya que los titulares normalmente se muestran en negrita. (Cuando usa esta técnica que involucra múltiples variaciones de una fuente, no debe agregarpeso de fuente: normal;, como se describe en la página 140.) Desafortunadamente, Internet Explorer 8 y versiones anteriores no entienden este método y usarán la fuente PTSansRegular para todo el texto. IE creará cursiva falsa y negrita falsa para el <em>y < fuerte>etiquetas; es decir, inclinará la fuente PTSansRegular en pantalla para cursiva y hará que la fuente PTSansRegular sea más gruesa para negrita. Las negritas y cursivas resultantes generadas por computadora generalmente se ven bastante mal. NotaLos archivos del tutorial de este capítulo incluyen ejemplos de ambas técnicas para incluir versiones de fuentes en negrita y cursiva. Mira dentro de lawebfonts-democarpeta. El archivowebfonts.htmlutiliza la técnica descrita en la página 140, mientras que elwebfonts-ie-safe.htmlfile utiliza la técnica que se describe a continuación. Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 143 UTILIZANDO LA WEB FUENTES AGREGAR NEGRITA Y CURSIVA Y SOPORTAR INTERNET EXPLORER 8 Si todavía es compatible con Internet Explorer 8 (o anterior), la solución anterior para negrita y cursiva no funcionará tan bien. Puede hacer que las variantes de fuentes funcionen en IE 8, pero requiere un poco más de trabajo. Para empezar, sigues creando cuatro @Perfil delanterodirectivas, una para cada variante de la fuente. Sin embargo, en lugar de darles la mismaFamilia tipográfica nombre (PTSans, por ejemplo), le da a cada uno su nombre único (PTSansRegular, PTSansItalic, etc.). En otras palabras, reescribirías los cuatro @Perfil delanterodirectivas como esta: @Perfil delantero { familia de fuentes: 'PTSansRegular'; src: url('PTSansRegular.eot'); src: url('PTSansRegular.eot?#iefix') format('embedded-opentype'), url('PTSansRegular.woof') format('woff'), url('PTSansRegular.ttf') format('truetype'), url('PTSansRegular.svg') format('svg'); } @Perfil delantero { familia de fuentes: 'PTSansItalic'; src: url('PTSansItalic.eot'); src: url('PTSansItalic.eot?#iefix') format('embedded-opentype'), url('PTSansItalic.woof') format('woff'), url('PTSansItalic.ttf') format('truetype'), url('PTSansItalic.svg') format('svg'); } @Perfil delantero { familia de fuentes: 'PTSansBold'; src: url('PTSansBold.eot'); src: url('PTSansBold.eot?#iefix') format('embedded-opentype'), url('PTSansBold.woof') format('woff'), url('PTSansBold.ttf') format('truetype'), url('PTSansBold.svg') format('svg'); } @Perfil delantero { familia de fuentes: 'PTSansBoldItalic'; src: url('PTSansBoldItalic.eot'); src: url('PTSansBoldItalic.eot?#iefix') format('embedded-opentype'), url('PTSansBoldItalic.woof') format('woff'), url('PTSansBoldItalic.ttf') format('truetype'), url('PTSansBoldItalic.svg') format('svg'); } Observe que cada @Perfil delanteroLa directiva tiene su único nombre de familia, uno que coincide con la variante de fuente: PTSansRegular, PTSansItalic, PTSansBold y PTSansBoldItalic. 144 Css3: el manual perdido www.it-ebooks.info Además, observe que elpeso de fuenteyEstilo de fuentelas propiedades utilizadas en los ejemplos de las páginas 140–143 han desaparecido. No los necesitas aquí. UTILIZANDO LA WEB FUENTES La parte difícil viene cuando llega el momento de aplicar la fuente. En el ejemplo de la página 143, simplemente aplicó elFamilia tipográficaal estilo así: pag { familia de fuentes: PTSans; } Ahora, desafortunadamente, debe aplicar los diferentes nombres de fuente a las distintas etiquetas: pag para regular,ellospara cursiva,fuertepara negrita y un selector descendente para manejar el caso de negrita y cursiva. Entonces, para que las diferentes variantes de la fuente PTSans funcionen, debe crear cuatro estilos, que involucran muchas líneas de código, como este: pag { familia de fuentes: PTSansRegular; tamaño de fuente: 48px; estilo de fuente: normal; peso de fuente: normal; } pag { familia de fuentes: PTSansItalic; estilo de fuente: normal; peso de fuente: normal; } p fuerte { familia de fuentes: PTSansBold; estilo de fuente: normal; peso de fuente: normal; } p em fuerte, p em fuerte { familia de fuentes: PTSansBoldItalic; peso de fuente: normal; estilo de fuente: normal; } Primero, observe que hay cuatro estilos: elpagel estilo aplica la fuente PTSansRegular;por favores un selector descendiente que se aplica a un <em>etiqueta que está dentro de un <p>etiqueta: ese estilo aplica PTSansItalicfuente; p fuertees otro selector descendiente, que aplica la fuente PTSansBold al < fuerte>etiquetar cuando aparece dentro de un párrafo; finalmente, hay un selector de grupo compuesto por dos selectores descendientes. El selector de primer descendiente se aplica a un <em> etiqueta que está dentro de un <fuerte>etiqueta que está dentro de un <p>etiqueta; mientras que el segundo se aplica a un <fuerte>etiqueta dentro y <em>eso está dentro de un <p>.Necesitas ambos porque puedes anidar <em>etiquetas dentro de <fuerte>etiquetas y viceversa. Podrías terminar con HTML como este: Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 145 DESCUBRIENDO WEB DE GOOGLE FUENTES <p> <em><strong>¡Oye!</strong></em> , estoy hablando con <strong><em>tú</em></strong> </ p> El solterop fuerte emel selector no funcionará para el mensaje "¡Oye!" arriba, ya que es un <fuerte> etiqueta dentro de un <em>etiqueta. NotaEn HTML5, el <b> (para negrita) y <yo> (para cursiva) las etiquetas están de vuelta. Debe usarlos simplemente con fines de presentación, cuando desee que el texto esté en cursiva, pero sin agregar ningún énfasis real al significado del texto. Por ejemplo, los títulos de los libros a menudo están en cursiva, por lo que usar el <yo>Se recomienda la etiqueta: <i>CSS3: El manual perdido</i> Usando <em>enfatizaría el texto y haría que los lectores de pantalla leyeran el texto en voz alta de una manera diferente al resto del texto. En cualquier caso, si tenía la intención de utilizar <segundo>y <yo>,asegúrese de crear estilos que usen las variantes en cursiva y negrita de la fuente (nuevamente, solo necesita preocuparse por eso si está usando IE 8, una forma segura de especificar cursiva, no si está usando el método discutido en la página 141). Otra cosa a tener en cuenta es que tienes que configurar elpeso de fuenteyEstilo de fuentea normal para todos estos estilos. Si no lo hace, muchos navegadores (no solo Internet Explorer) intentarán poner en negrita la fuente ya en negrita y poner en cursiva la versión ya en cursiva de la fuente (Firefox crea texto en negrita falso particularmente malo). Esta segunda técnica para admitir variantes en negrita y cursiva obviamente requiere mucho trabajo. Se vuelve aún más trabajo si usa más de una fuente con versiones en negrita y cursiva en el mismo sitio. La técnica que utilice realmente depende de la importancia que tenga para usted la compatibilidad con Internet Explorer 8. En el momento de escribir este artículo, IE 8 sigue siendo bastante popular, con un rango del 13% (http://gs.statcounter.com/#browser_versionww- monthly-201108-201208) al 25% (http://www.netmarketshare.com/browsermarket-share.aspx? qprid=2&qpcustomd=0&qptimeframe=M) de los navegadores web en uso. NotaAquí hay otro enfoque para el problema de admitir negrita y cursiva para IE 8. Pruebe el primer método (página 141) y vea cómo se ve en IE 8. Algunas fuentes, generalmente fuentes sans-serif, no siempre se ven tan mal cuando IE hace su cursiva falsa y negrita para ellos. Puede encontrar que la diferencia no es tan notable, y puede usar el primer método sin mucho problema. Además, recuerde que la participación de mercado de IE 8 seguirá disminuyendo a medida que las personas compren computadoras nuevas, cambien a Chrome u otro navegador, o actualicen sus sistemas operativos. Descubriendo las fuentes web de Google Si las instrucciones para usar las fuentes web discutidas en la sección anterior le parecen demasiado abrumadoras, hay una manera más fácil, aunque con menos opciones de fuente. Además de búsqueda, mapas, correo electrónico y todos los muchos servicios que ofrece, Google proporciona un servicio de fuentes web fácil de usar. En lugar de descargar fuentes, convertirlas a 146 Css3: el manual perdido www.it-ebooks.info DESCUBRIENDO formatos apropiados, y luego colocándolos en su servidor web, simplemente incluya un único enlace WEB DE GOOGLE de hoja de estilo externo a Google que indique qué fuentes le gustaría usar. El servidor de Google FUENTES envía las fuentes adecuadas al navegador web del visitante. Sin despeinarse sin problemas. Sus únicas responsabilidades son encontrar las fuentes que desea usar en el sitio de Google Web Fonts, copiar el código necesario (que proporciona Google) y agregarlo a su página web, y crear estilos CSS usando esas fuentes. Comience visitando el sitio de Google Web Fonts enwww.google.com/webfonts(ver Figura 6-6). Figura 6-6 El sitio de Google Web Fonts enumera las fuentes que ofrece Google. Algunas fuentes tienen varios estilos, como negrita, cursiva, fina, ultrafina, etc. Para ver todas las variantes de una fuente en particular, haga clic en el enlace Mostrar todos los estilos en la barra lateral izquierda (encerrado en un círculo). Cada fuente también tiene tres enlaces: el primero, "Uso rápido" (#1) carga el panel Usar descrito en la página 150 y le permite agregar rápidamente el código necesario para usar esa fuente; el enlace "Emergente" (#2) abre una nueva ventana con más información sobre la fuente, así como una hoja de muestra que muestra cada letra de la fuente (es una buena manera de ver cómo se ve el alfabeto completo y también para hacer Asegúrese de que tenga todos los caracteres que necesita, como símbolos inusuales o signos de puntuación. marcas); por último, el enlace "Agregar a la colección" (#3) agrega la fuente a su colección. (Si desea usar más de una fuente, agréguelas todas a la colección). Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 147 DESCUBRIENDO WEB DE GOOGLE FUENTES Búsqueda y selección de fuentes Usted selecciona las fuentes que desea usar creando unrecopilación. Es tan fácil como encontrar una fuente que le guste y hacer clic en el botón "Agregar a la colección" (vea la Figura 6-6). Para encontrar una fuente, puede desplazarse hacia abajo en la página principal de fuentes web y ver ejemplos de las fuentes disponibles, pero con más de 500 fuentes para elegir, puede llevarle un tiempo encontrar una que le guste. Si ya tiene en mente una apariencia específica, como una fuente sans-serif en negrita para los titulares, use una de las opciones de filtrado en el lado izquierdo de la página (consulte la Figura 6-7). • Buscar por nombre.Si sabe el nombre de la fuente que le interesa, simplemente escriba el nombre (o parte del nombre) en el campo de búsqueda (#1 en la Figura 6-7). Luego, la página filtra la lista de fuentes para mostrarle las que coinciden. • Filtrar por categoría.El menú de categorías (#2 en la Figura 6-7) le permite mostrar fuentes que coinciden con una, dos, tres o cuatro categorías: Serif, Sans Serif, Display y Handwriting. Simplemente desmarque una casilla para ocultar ese tipo de fuente, o active la casilla para mostrarla. Las fuentes de visualización son generalmente audaces y con estilo; no son realmente buenos para pasajes largos de texto, pero pueden hacer que los titulares cortos realmente salten de la página. Las fuentes de escritura a mano, o fuentes de script, se ven como si alguien hubiera escrito el texto con un bolígrafo. Varían desde guiones elegantes, similares a invitaciones de boda, hasta una nota de rescate garabateada a mano que dice "Dame el dinero si quieres recuperar a tu gato". • Estilo físico.Tres controles deslizantes le permiten identificar las características físicas de las fuentes (#3 en la Figura 6-7). El control deslizante de grosor le permite encontrar fuentes hechas de líneas muy delgadas (líneas delicadas que a menudo son difíciles de leer a menos que se muestren en un tamaño de fuente grande) a líneas muy gruesas (negritas y gruesas). El control deslizante Slant identifica las fuentes con una "inclinación": generalmente esto significa versiones en cursiva de las fuentes, pero también es relevante para las fuentes escritas a mano, que generalmente tienen una pronunciada inclinación hacia la derecha. Finalmente, use el control deslizante Ancho para encontrar fuentes que sean más estrechas o más dispersas. Con fuentes más anchas, caben menos letras en una sola línea, pero a menudo hace una declaración en negrita en un título. • Alfabeto.Por último, el menú Script (#4 en la Figura 6-7) le permite especificar fuentes para usar con otros idiomas. El inglés y muchos idiomas europeos usan el alfabeto latino, pero si necesita una fuente para el texto en ruso, por ejemplo, elegiría el cirílico. Elija el que coincida con el idioma en el que aparecerá su texto. 148 Css3: el manual perdido www.it-ebooks.info DESCUBRIENDO WEB DE GOOGLE FUENTES Figura 6-7 Para ayudar a encontrar las fuentes que coincidan con su diseño, puede buscar en el directorio de fuentes de Google o filtrar la lista de fuentes especificando varios criterios. Si intenta usar todos estos filtros, lo más probable es que termine sin resultados. Si es así, haga clic en el enlace "Restablecer todos los filtros/búsqueda" (marcado con un círculo) para volver a la lista completa de fuentes web de Google. CONSEJOPara ver una muestra de algunas de las mejores fuentes disponibles de Google, consultehttp://hellohappy.org/ hermosa-web-type/. Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 149 DESCUBRIENDO WEB DE GOOGLE FUENTES A medida que encuentre las fuentes que le gustaría usar, puede hacer clic en el botón "Agregar a la colección" (#1 en la Figura 6-8). La colección es como un carrito de compras, por lo que puede agregarle fuentes y eliminarlas. Figura 6-8 Para ver las fuentes que ha agregado a su colección, haga clic en las flechas desplegables (#2). Puede eliminar una fuente de la colección haciendo clic en el botón X (eliminar) a la derecha del nombre de la fuente (#3). El botón Revisar (encerrado en un círculo) le permite comparar las fuentes en su colección y recuperar más en profundidad información. Por ejemplo, puede ver el juego de caracteres completo para cada fuente (es decir, cada letra y símbolo), probar una fuente agregando su propio texto y cambiando el tamaño de la fuente, e incluso crear una comparación superpuesta de todas las fuentes en su colección (si realmente estás obsesionado con el tipo). Uso de fuentes de Google Una vez que haya creado una colección de fuentes, estará listo para recuperar el código necesario para usarlas. 1.En la parte inferior derecha de la pantalla de Google Web Fonts (#1 en la Figura 6-9), haga clic en el botón Usar. Se abre una página con varias opciones, así como el código que necesita copiar. 2.Elija el estilo que desea usar (#2 en la Figura 6-9). Algunas fuentes incluyen cursiva, negrita y otras variantes de la fuente normal. Para el cuerpo del texto, normalmente querrá al menos regular, cursiva y negrita. En el caso de un título, generalmente puede salirse con la suya con una sola fuente. También notará que hay un "marcado rápido" a la derecha de esta página. A medida que agrega más estilos y fuentes, la marcación rápida gira en el sentido de las agujas del reloj, lo que indica que llevará más tiempo descargar las fuentes. 150 Css3: el manual perdido www.it-ebooks.info DESCUBRIENDO Ese es un inconveniente de las fuentes web. Dado que los visitantes de su sitio necesitan descargarlos (así como la página web, las hojas de estilo externas, los gráficos y otros WEB DE GOOGLE FUENTES elementos que componen su página), tenga cuidado de no volverse loco y usar demasiadas fuentes. De lo contrario, las personas tendrán que esperar mucho tiempo para que aparezcan las fuentes. El número en el dial indica la cantidad de milisegundos (en promedio) que tomará descargar los archivos de fuentes. 3.opcionalmente, elija los conjuntos de caracteres que desee. Este paso no es obligatorio y es posible que no esté disponible para todas las fuentes. Además, si seleccionó un juego de caracteres que no sea latino (vea el último punto en la página 148), es posible que vea otras opciones además de Latin y Latin Extended. Latin Extended es una buena opción si su texto contiene palabras en un idioma que utiliza caracteres de acento particulares como turco, galés y húngaro. Para la mayoría de los idiomas basados en el latín, como el francés y el español, todo lo que necesita es el alfabeto latino normal. Es mejor que no uses el latín extendido si no lo necesitas, ya que usarlo agrega tamaño de archivo y tiempo de descarga a la fuente. NotaPara ver una lista de los caracteres adicionales disponibles en Latin Extended visitehttp://en.wikipedia.org/wiki/ Latin_Extended-A. 4.Copie el código en el cuadro "Agregue este código a su sitio web" (#3 en la Figura 6-9). Tienes tres opciones aquí. • Estándarproporciona un <enlace>etiqueta que apunta a una hoja de estilo externa (esto es lo mismo que vincular a cualquier hoja de estilo externa, como se describe en la página 48). Sin embargo, este es en realidad un enlace especial que apunta al servidor web de Google y proporciona la información que Google necesita para entregar las fuentes adecuadas. Por ejemplo: <link href='http://fonts.googleapis.com/css?family=Codystar:300,400|Gent ium+Book+Basic:400,400italic' rel='stylesheet' type='text/css'> Note que al final de lahrefatributo, se enumeran las fuentes y sus estilos. En este ejemplo, las fuentes son Codystar y Gentium. Y Google cargará varios estilos: 300 y 400 para Codystar y 400 y 400italic para Gentium. Esos números son una forma de indicar el peso (o grosor) de la fuente y se analizan en el Paso 6 en la página 152. NotaSi está utilizando HTML5, puede omitir el "tipo = 'texto/css'"parte de la etiqueta <link>. No es necesario en HTML5. • Otra opción es@importar. Haga clic en la pestaña @importar en el paso 3 de la página web (consulte la Figura 6-9) para ver el código necesario para usar @importardiscutida en la página 42. El beneficio de este enfoque es que puede agregar @importaral comienzo de otra hoja de estilo. Por ejemplo, digamos que tienes Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 151 DESCUBRIENDO WEB DE GOOGLE una sola hoja de estilo externa para su sitio, y ha vinculado todas las páginas de su sitio a ella. El estándar <enlace>El método requiere que agregue ese código a cada página de su sitio. Sin embargo, con el @importarmétodo, puede agregar el código a su única hoja de estilo externa y listo. FUENTES • Finalmente, puede elegir unJavaScriptacercarse. Este libro no cubre este método, ya que requiere mucho código y, a menos que conozca muy bien JavaScript, es fácil cometer un error. Además, no ofrece mucho beneficio sobre las otras opciones. 5.Pegue el código en las páginas web de su sitio. En el caso de <enlace>método descrito en el paso anterior, debe pegar el código en cada página en la que desee utilizar las fuentes. Si recién está comenzando el proceso de creación de su sitio, esto no es un gran problema, pero si ya tiene muchas páginas, esto puede terminar siendo un poco de trabajo. En ese caso, considere el @importarmétodo: puedes colocar la @importarcódigo en la parte superior de la hoja de estilo externa de su sitio, y luego todas las páginas que se vinculan a esa hoja de estilo también descargarán las fuentes adecuadas. NotaEl @importarEl método puede tener un ligero efecto en el rendimiento de su sitio web (es decir, la velocidad). 6.Crea estilos usando las fuentes. Ahora que las fuentes se están cargando, puede usarlas como cualquier otra fuente. Solo crea un estilo, agrega elFamilia tipográficapropiedad, y enumere la fuente. La página Fuentes web de Google muestra el nombre de la fuente en la parte inferior de la página Usar (#4 en la Figura 6-9). Si está utilizando varios estilos de una fuente, también debe agregar elpeso de fuentey Estilo de fuentepropiedades al estilo. Google no usa el regular normaloatrevidopalabras clave para indicar el peso de una fuente. En su lugar, utiliza una escala numérica de 100 a 900. Un valor de 700 está en negrita, 400 es normal y los otros números indican variaciones en el grosor. Por ejemplo, supongamos que desea aplicar la versión en cursiva regular de la fuente Gentium Book Basic al <em>etiqueta. Puedes escribir este estilo: ellos { familia de fuentes: "Gentium Book Basic", serif; peso de fuente: 400; estilo de fuente: cursiva;} 152 Css3: el manual perdido www.it-ebooks.info DESCUBRIENDO WEB DE GOOGLE FUENTES Figura 6-9 Cuando esté listo para usar las fuentes de Google que ha agregado a su colección, haga clic en el botón Usar en la parte inferior derecha (#1), los estilos que desee (#2) y el método que le gustaría usar. para adjuntar esas fuentes a una página. La forma más común es simplemente vincular a una hoja de estilo que carga las fuentes de los servidores de Google. Hasta la velocidad TypeKit, una alternativa a Google Debido a los requisitos técnicos y legales para el uso de fuentes web, Adobe (que fabrica fuentes además de todo el otro software que han surgido varias empresas que se encargan de todo el trabajo pesado crean), tiene acceso a una amplia gama de fuentes creadas por usted. Google Web Fonts es un ejemplo, pero hay otros. Estos profesionalmente. Con TypeKit, puede crearequipos, o colecciones servicios de fuentesle permite seleccionar entre una gran colección de de fuentes, y asignarlas a un sitio web. Luego agrega un fuentes alojadas en sus propios servidores web. En otras palabras, no fragmento de código JavaScript a cada página de su sitio. Este coloca las fuentes en su servidor, simplemente hace referencia a sus código se conecta con los servidores de TypeKit y entrega las servidores utilizando un fragmento de código CSS o JavaScript. Estos fuentes que solicitó a los visitantes de su sitio. TypeKit es un servicios se encargan de enviar el formato de fuente adecuado (EOT a IE servicio comercial, aunque ofrece una versión de prueba limitada 8 y versiones anteriores, por ejemplo) a los navegadores de sus y gratuita. Según la cantidad de fuentes a las que desee acceder y visitantes. la cantidad de personas que visitan su sitio web cada mes, puede Un servicio comercial de Adobe, llamado TypeKit, también ofrece una terminar gastando entre $ 24 y $ 99 al año. amplia selección de fuentes, pero por una tarifa. porque es parte de Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 153 AGREGAR COLOR Textear Agregar color al texto El blanco y negro es ideal paracasablancay las películas de Woody Allen, pero cuando se trata de texto, un bonito horizonte azul se ve mucho más nítido y elegante que el negro monótono. Colorear tu texto con CSS es fácil. De hecho, has usado elcolorpropiedad en algunos tutoriales ya. Tiene varias formas diferentes de definir el color exacto que desea, pero todas siguen la misma estructura básica. tu escribescolor:seguido de un valor de color: color: #3E8988; En este ejemplo, el valor del color es un número hexadecimal que indica un tono apagado de verde azulado (más información en un momento sobre lo que es hexadecimal). Cada programa de gráficos, desde Fireworks hasta Photoshop y GIMP, le permite seleccionar un color utilizando valores hexadecimales o RGB. Además, los selectores de color integrados en Windows y Mac le permiten usar una rueda o paleta de colores para seleccionar el color perfecto y traducirlo a un valor hexadecimal o RGB. NotaSi su sentido del diseño de color necesita ayuda, puede encontrar muchas colecciones de colores atractivas y coordinadas, así como excelentes recursos relacionados con el color enwww.colorlovers.com. Notación de color hexadecimal El sistema de color más antiguo utilizado por los diseñadores web es la notación hexadecimal. Un valor de color, como #6600FF, en realidad contiene tres números hexadecimales (en este ejemplo, 66, 00, FF), cada uno de los cuales especifica una cantidad de rojo, verde y azul, respectivamente. Como en el sistema de color RGB que se describe a continuación, el valor de color final es una combinación de las cantidades de rojo, verde y azul especificadas por estos números. CONSEJOPuede acortar los números hexadecimales a solo tres caracteres si cada conjunto contiene los mismos dos números. Por ejemplo, acorte #6600FF a #60F o #FFFFFF a #FFF. RGB También puede usar el método RGB (rojo, verde, azul) familiar en los programas de gráficos por computadora. El valor del color consta de tres números que representan porcentajes (0 a 100 por ciento) o números entre 0 y 255 para cada tono (rojo, verde y azul). Entonces, cuando desee establecer el color del texto en blanco (tal vez para diferenciarlo de un fondo de página oscuro y siniestro), puede usar esto: color: rgb (100%, 100%, 100%); o color: rgb (255,255,255); 154 Css3: el manual perdido www.it-ebooks.info NotaSi todos estos números y dígitos le dan vueltas en la cabeza, entonces siempre puede recurrir a las palabras clave de color HTML clásicas. (Simplemente no espere que su sitio gane ningún premio por su originalidad). Hay 17 colores: aguamarina, AGREGAR COLOR Textear negro, azul, fucsia, gris, verde, lima, granate, azul marino, verde oliva, naranja, morado, rojo, plateado, verde azulado. , blanco y amarillo. En CSS, los agregas a tu estilo así:color: fucsia;.Además, la mayoría de los navegadores admiten 147 colores SVG (también llamados colores X11), por lo que si realmente quiere presumir, comience a usar colores como lino, chocolate, caqui y humo blanco. Puede encontrar estos colores listados enhttps://developer.mozilla.org/en-US/docs/CSS/color_value. RGBA Para agregar profundidad a una página, considere uno de los métodos de color más nuevos. RGBA significa rojo, verde, azul, alfa y funciona igual que los colores RGB con la adición de un alfacanal. Es decir, puede especificar un nivel de opacidad para que el color no sea sólido, sino transparente (vea la Figura 6-10). A los colores RGB se les suma un último número, un valor entre0y1.un valor de0hace que el color sea invisible, mientras que1hace que el color sea totalmente opaco (es decir, no se puede ver a través de él): color: rgba(255, 100, 50, .5); Puede crear efectos visuales interesantes colocando texto en color RGBA sobre imágenes de fondo. Por ejemplo, puede hacer que las imágenes se filtren un poco a través del color del texto (usando un valor alto como .9)o mucho (usando un valor bajo como .1). CONSEJORGBA funciona particularmente bien con elsombra de textopropiedad discutida en la página 166 y la sombra de la cajapropiedad discutida en la página 210. Con RGBA, puede crear efectos de sombra aún más sutiles al dejar que se vea más parte del fondo a través de la sombra. ¿La baja? Internet Explorer 8 y versiones anteriores no entienden el color RGBA. Una solución es declarar un color sólido primero usando notación hexadecimal y luego una segunda propiedad de color con color RGBA, como esta: color: rgb (255,100,50); /* para IE8 */ color: rgba(255,100,50,.5); /* para navegadores más nuevos */ Todos los navegadores interpretan la primera línea; la segunda línea anula la primera línea, pero solo para navegadores que entienden el color RGBA. En otras palabras, IE 8 aplica la primera declaración de color e ignora la segunda, mientras que IE 9 y otros navegadores aplican el color RGBA. Simplemente no obtendrá el efecto de transparencia en IE 8. Además, esta técnica no funciona en IE 7, que simplemente ignora ambas líneas y aplica un color negro. Afortunadamente, el uso de IE 7 tiende a cero, por lo que probablemente no deba preocuparse por eso. (Para hacer que la transparencia alfa funcione en IE 7 y 8, consulte la nota en la página 156). Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 155 AGREGAR COLOR Textear Figura 6-10 Los colores RGBA no son solo para texto. Puede usar el color RGBA con cualquier propiedad CSS que acepte un valor de color, como el color de fondo del cuadro de búsqueda en la parte superior derecha de esta imagen, o el color de los botones de navegación: Inicio, Archivos, Autores, etc. NotaSi desea conservar el efecto de transparencia para IE 7 y 8, puede hacerlo. Solo requiere un poco de magia solo de IE. Teniendo en cuenta que IE 7 está a punto de desaparecer, es posible que no quiera molestarse, pero puede aprender cómo hacerlo enhttp://css-trucos. com/rgba-navegador-soporte. HSL Y HSLA HSL significa tono, saturación y luminosidad (a veces también etiquetados comoluminancia). Es otra forma de especificar el color. No es compatible con Internet Explorer 8 o anterior, pero funciona en todos los demás navegadores. Si está acostumbrado a los colores RGB o hexadecimales, puede encontrar la sintaxis HSL un poco inusual. Aquí hay un ejemplo de un color rojo brillante: color: hsl(0, 100%, 50%); Usted proporciona tres valores dentrohsl( ).El primero es un valor de grado de0a360,que se asigna a un círculo de matices. Si recuerdas el orden de los colores en un arco iris—rojo, naranja, amarillo, verde, azul, índigo,yVioleta (ROYGBIV), entonces tiene una idea básica de los valores que necesitará para especificar un color. rojo es0 (es también360,ya que es una rotación completa alrededor de un círculo), el amarillo es alrededor50,naranja alrededor100,verde alrededor 150,etcétera. Cada color está separado por alrededor de 51 grados. El segundo es la saturación, o qué tan puro es el color. Usted especifica la saturación en un porcentaje de0%a100%.un valor de0%no hay saturación en absoluto, o es un gris opaco. De hecho, no importa el tono que especifique,0%producirá el mismo tono gris. Un valor 156 Css3: el manual perdido www.it-ebooks.info de100%es el color puro, brillante y vibrante. El tercer valor es el valor de luminosidad, especificado en un porcentaje de0% (completamente negro) a100% (completamente blanco). Si desea tener un color puro, utilice un valor de50%. Cambiando Tamaño de fuente Se supone que HSL es más intuitivo que los valores de color RGB o hexadecimales, pero si no lo encuentra fácil de entender, no tiene que usarlo. En su lugar, utilice un programa como Fireworks o Photoshop o un selector de color en línea, cada uno de los cuales facilita la elección de un valor RGB o hexadecimal. NotaSi está interesado en usar HSL, encontrará un selector de color HSL fácil de usar enwww.trabajarconcolor . com/hsl-color-schemer-01.htm. Así como RGB tiene su formato complementario, RGBA, HSL admite la opacidad con el formato HSLA. Funciona de manera similar a RGB descrito en la página 155. Especifique un valor de opacidad de0 ( invisible) a1 (totalmente opaco) para establecer el valor de opacidad. Esto creará un color rojo brillante con50%opacidad: color: hsla(0, 100%, 50%, .5); La mayoría de los ejemplos en este libro se apegan a RGBA, pero si encuentra que HSL es más fácil de entender, ¡utilícelo! Cambiar el tamaño de fuente Variar el tamaño del texto en una página web es una excelente manera de crear interés visual y dirigir la atención de los visitantes a áreas importantes de una página. Los titulares en letra grande captan la atención, mientras que los avisos de derechos de autor que se muestran en letra pequeña pierden sutilmente protagonismo. Eltamaño de fuentepropiedad establece el tamaño del texto. Siempre va seguido de una unidad de medida, así: tamaño de fuente: 1em; El valor y la unidad que especifique para el tamaño de fuente (en este ejemplo, 1em) determinan el tamaño del texto. CSS ofrece una selección vertiginosa de unidades de tamaño: palabras clave, ems, exs, píxeles, porcentajes, picas, puntos e incluso pulgadas, centímetros y milímetros. Las unidades de medida comúnmente utilizadas con materiales impresos (picas, puntos, pulgadas, etc.) no funcionan bien en las páginas web porque no se puede predecir cómo se verán de un monitor a otro. Pero es posible que tenga la oportunidad de usar puntos al crear hojas de estilo para páginas fáciles de imprimir, como se describe en la página 523. Solo algunas de las unidades de medida (píxeles, palabras clave, ems y porcentajes) tienen sentido cuando está ajustando el tamaño del texto para un monitor de computadora El resto de esta sección explica cómo funcionan. Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 157 Cambiando Tamaño de fuente Uso de píxeles Los valores de píxel son los más fáciles de entender, ya que son completamente independientes de la configuración del navegador. Cuando especifica, por ejemplo, un tamaño de fuente de 36 píxeles para un < h1>etiqueta, el navegador web muestra un texto de 36 píxeles de alto, punto. Los diseñadores web aprecian los valores de píxeles porque proporcionan tamaños de texto consistentes en diferentes tipos de computadoras y navegadores. Para establecer un valor de píxel para eltamaño de fuentepropiedad, escriba un número seguido de la abreviaturapíxeles: tamaño de fuente: 36px; NotaNo incluya un espacio entre el número y el tipo de unidad. Por ejemplo,36pxes correcto, pero 36 píxelesno lo es Hasta la velocidad Píxeles y pantallas retina Cuando Apple presentó el iPhone con Retina Display, los propietarios de iPhone Cuando se trata de los píxeles mencionados anteriormente, los navegadores en se regocijaron por la claridad y nitidez de las imágenes. La pantalla Retina de dispositivos con pantallas Retina en realidad multiplican un valor de píxel por 2. Apple brinda su imagen clara al incluir más píxeles en una pulgada cuadrada. Es decir, si especifica que el texto sea de 16 píxeles, un navegador web Mientras que las pantallas de computadora normales varían de 72 a 100 píxeles habilitado para pantalla Retina en realidad usará 32 píxeles en el pantalla para por pulgada, las nuevas pantallas Retina cuentan con más de 224 píxeles por dibujar el texto. Ésto es una cosa buena. Si el navegador solo usara 16 de sus pulgada. diminutos píxeles para mostrar el texto, entonces nadie podría leer lo que Desde entonces, Apple ha agregado pantallas Retina a iPads y computadoras tienes que decir. portátiles. Otros fabricantes de tabletas como Amazon también se están En otras palabras, aunque las pantallas más densas están entrando en subiendo al carro, ofreciendo considerablemente más píxeles por pulgada que el mundo de la informática móvil y de escritorio, de repente no harán las pantallas más antiguas. ¿Qué significa esto para los diseñadores web? que el tipo basado en píxeles en sus páginas web parezca Bastante. Como leerá en el cuadro de la página 473, estas pantallas tienen un microscópicamente pequeño. efecto considerable en las imágenes, y tendrá que trabajar un poco para crear imágenes de gran apariencia para pantallas de píxeles densos. Uso de palabras clave, porcentajes y ems Las tres formas de cambiar el tamaño del texto con CSS (palabras clave, porcentajes y ems) funcionan sumando o restando del tamaño del texto que ya aparece en la pantalla del navegador del usuario. En otras palabras, si no especifica un tamaño de texto usando CSS, un navegador web recurre a su configuración preprogramada. En la mayoría de los navegadores, el texto dentro de una etiqueta que no es de encabezado se muestra con una altura de 16 píxeles, lo que se denominatamaño de texto base. Los internautas pueden ajustar sus navegadores aumentando o disminuyendo ese tamaño base; sin embargo, cambiar el tamaño de fuente base requiere jugar con la configuración de preferencias del navegador, un paso con el que la mayoría de la gente no se molestará. 158 Css3: el manual perdido www.it-ebooks.info NotaLa mayoría de los navegadores tienen unzoomfunción que hace que el texto, los gráficos y toda la página sean más pequeños o más grandes. Esta configuración realmente no cambia el tamaño del texto base tanto como amplía la página completa. Ctrl++ (c+)en la mayoría de Cambiando Tamaño de fuente los navegadores acerca una página, mientras que Ctrl+- (C--)se aleja. Presionar la tecla Ctrl (Control) y usar la rueda de desplazamiento de un mouse también le permite acercar y alejar una página. Cuando cambia el tamaño del texto con CSS, el navegador toma el tamaño del texto base (ya sean los 16 píxeles originales o algún otro tamaño que haya pedido el espectador) y lo ajusta hacia arriba o hacia abajo según su palabra clave, em o valor porcentual. PALABRAS CLAVE CSS proporciona siete palabras clave que le permiten asignar un tamaño relativo al tamaño del texto base:xx-pequeño, x-pequeño, pequeño, mediano, grande, extragrande,yxx-grande.El CSS se ve así: tamaño de fuente: grande; La opción mediana es la misma que el tamaño de fuente base del navegador. Cada una de las otras opciones disminuye o aumenta el tamaño por un factor diferente. En otras palabras, si bien se supone que cada cambio de tamaño es un aumento o disminución constante del tamaño anterior, no lo es. Básicamente,xx-pequeñoes el equivalente a 9 píxeles (suponiendo que no haya ajustado el tamaño de fuente base en su navegador);extra pequeñoes de 10 píxeles,pequeñoes de 13 píxeles, grandees de 18 píxeles;extragrandees de 24 píxeles, yxx-grandees de 32 píxeles. Las palabras clave son bastante limitadas: solo tiene siete opciones. Cuando desee tener más control sobre el tamaño de su texto, recurra a una de las otras opciones de tamaño de fuente que se analizan a continuación. PORCENTAJES Al igual que las palabras clave, los valores porcentuales ajustan el texto en relación con el tamaño de fuente definido por el navegador, pero le brindan un control mucho más preciso que sologrande,extragrande,etcétera. Cada navegador tiene un tamaño de texto base preprogramado, que en la mayoría de los navegadores es de 16 píxeles. Puede ajustar este tamaño base en las preferencias de su navegador. Cualquiera que sea la configuración que se haya elegido, el tamaño de texto base para un navegador en particular es equivalente a 100%.En otras palabras, para la mayoría de los navegadores, establecer el porcentaje de CSS en100%es lo mismo que establecerlo en 16 píxeles. Supongamos que desea que un título en particular aparezca dos veces el tamaño del texto promedio en una página. Simplemente establezca el tamaño de fuente en200%,al igual que: tamaño de fuente: 200%; O, cuando desee que el texto sea un poco más pequeño que el tamaño predeterminado, use un valor como 90%para reducir un poco el tamaño de la fuente. Los ejemplos anteriores son bastante sencillos, pero aquí es donde se complica un poco: el tamaño de fuente es una propiedad heredada (consulte el Capítulo 4), lo que significa que cualquier etiqueta dentro de una etiqueta que tenga un tamaño de fuente especificado hereda ese tamaño de fuente. Así que el tamaño exacto de100%puede cambiar si una etiqueta hereda untamaño de fuentevalor. Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 159 Cambiando Tamaño de fuente Por ejemplo, en la parte inferior izquierda de la Figura 6-11, hay un <div>etiqueta que tiene su tamaño de fuente establecido en200%.Eso es dos veces el tamaño del texto base del navegador, o 32 píxeles. Todas las etiquetas dentro de eso <div>heredar ese tamaño de texto y usarlo como base para calcular sus tamaños de texto. En otras palabras, para las etiquetas dentro de ese <división>, 100%es de 32 píxeles. Así que el <h1> etiqueta dentro del <div>que tiene un tamaño de fuente de100%muestra el doble del tamaño del texto base de la página, o 32 píxeles. Figura 6-11 Las tres unidades más comunes para el tamaño del texto: píxeles, ems y porcentajes. cuidado con tamaños de texto heredados al usar ems o porcentajes, como se explica en la página 159. Si nota que parte del texto en una página parece inusualmente grande o pequeño, luego verifique si el texto ofensivo no está dentro de una etiqueta que hereda un tamaño de fuente de otra etiqueta. ccsme Una vez que entiendes los porcentajes, sabes todo lo que necesitas para entender ems. Los dos funcionan exactamente de la misma manera, pero muchos diseñadores web usan ems debido a sus raíces en la tipografía. La palabraellosproviene del mundo de la tipografía impresa (como en papel), donde se refiere al tamaño de una letra M mayúscula para una fuente en particular. A medida que se abrió camino en el mundo web, un em en CSS ya no significa lo mismo que en tipografía. Piense en ello como una referencia al tamaño del texto base. Es decir, un valor de 1em significa lo mismo que un valor de 100 por ciento, como se describe en la sección anterior. Tu puedes incluso 160 Css3: el manual perdido www.it-ebooks.info dígalo de la manera opuesta: un valor porcentual es solo un em multiplicado por 100: .5em es 50 por ciento, .75em es 75 por ciento, 3em es 300 por ciento, y así sucesivamente. Cambiando Tamaño de fuente Por ejemplo, este CSS hace exactamente lo mismo quetamaño de fuente: 200%;: tamaño de fuente: 2em; NotaAl igual que con los valores de píxeles, no hay espacio entre el número y la palabraem.Además, incluso si especifica más de un em, nunca agrega unshasta el final:2,5 em,nunca2,5 ems. Cuando se trata de herencia, los ems también funcionan como valores porcentuales. Consulte la parte superior derecha de la Figura 6-11 para ver un ejemplo. El párrafo inferior se establece en . 75em, que, desde el <p>hereda la configuración de 2em (32 píxeles) de <div>etiqueta, funciona a 0,75 x 32 o 24 píxeles. Dentro del <p>tag son otras dos etiquetas que también tienen un tamaño de fuenteajuste de .75em.La etiqueta más interna, un <fuerte>etiqueta, se establece en .75emo, en esencia, el 75 por ciento de suheredadotamaño. Hay muchas matemáticas en este: 32 píxeles (heredados de <div>etiqueta) x .75 (heredada de <p>etiqueta) x .75 (heredada de <em>etiqueta) x .75 (el <fuerte>propio tamaño de fuente de la etiqueta). El resultado de este acertijo es un tamaño de texto de aproximadamente 14 píxeles. TALLER DE TRABAJO Desenredando el nido Los valores de tamaño de fuente heredados pueden causar problemas para las Este estilo hace que el tamaño de fuente sea .75 del tamaño de texto base, no el tamaño listas anidadas. (Vea el cuadrado inferior derecho de la Figura 6-11.) Si crea un de fuente actual (como es el caso con ems). El elemento raíz en HTML es en realidad el estilo comoul {tamaño de fuente: 75%},luego una lista anidada, que es un <ul> htmlelemento que se encuentra al principio de una página web. Cuando usas etiqueta dentro de otra <ul>etiqueta, se establece en el 75 por ciento del 75 por movimiento rápido del ojovalores, puede establecer el tamaño del texto base delhtml ciento, lo que hace que el texto de la lista anidada sea más pequeño que el elemento y luego usarmovimiento rápido del ojounidades para configurar el texto a un resto de la lista. tamaño relativo a eso. Por ejemplo, puede establecer el tamaño del texto base en 20 Para sortear este dilema, cree un estilo de selector descendiente píxeles de esta manera: adicional como este:ul ul {tamaño de fuente: 100%}.Este estilo establece html { cualquieruletiqueta dentro de unulal 100 por ciento: en otras palabras, tamaño de fuente: 20px; } el 100 por ciento de los alrededoresultamaño de fuente de la etiqueta. En este ejemplo, mantiene las listas anidadas en un 75 por ciento del Entonces usamovimiento rápido del ojounidades para crear fuentes en relación con ese tamaño de tamaño del texto base. texto base de 20 píxeles. Por ejemplo, para que todos los párrafos tengan un tamaño de 15 píxeles, Hay otra manera de evitar este efecto de texto de reducción de espejos. CSS3 agregue este estilo. incluye una nueva unidad de medida llamadamovimiento rápido del ojo. No, no pag { lleva el nombre de patrones de sueño o de una banda. Significa Root EM, lo que significa que su valor se basa en el tamaño del texto del elemento raíz. En la tamaño de fuente: .75rem; } mayoría de los casos, esto solo significa el tamaño del texto base, por lo que puede cambiar el .75em que se muestra en la Figura 6-11 a esto: Sin embargo, debe tener en cuenta que, si bien la mayoría de los navegadores ahora entienden el movimiento rápido del ojounidad, Internet Explorer 8 y versiones anteriores no. tamaño de fuente: .75rem; Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 161 FORMATO PALABRAS Y Letras CONSEJOPuede hacer que el texto se destaque en una página de muchas maneras diferentes. Hacer que ciertas palabras sean más grandes que otras o hacer que un texto sea más oscuro, más claro o más brillante las distingue visualmente del texto que las rodea. El contraste es uno de los principios más importantes del buen diseño gráfico; puede ayudar a resaltar mensajes importantes, guiar la vista del lector por una página y, en general, facilitar la comprensión de una página. Para obtener una descripción general rápida del contraste tipográfico, consulte esta página:www.creativepro.com/story/feature/19877.html. Dar formato a palabras y letras Aunque pasará mucho tiempo ajustando el color, el tamaño y las fuentes del texto en sus páginas web, CSS también le permite aplicar otras propiedades comunes de formato de texto (como negrita y cursiva), así como algunas menos comunes. (como versalitas y espaciado entre letras). NotaCSS le permite combinar múltiples propiedades de texto, pero no se deje llevar. Demasiado formato ocupado hace que su página sea más difícil de leer. Lo peor de todo es que su arduo trabajo pierde su impacto. Cursiva y negrita Los navegadores web muestran el tipo dentro de <em>y <yo>etiquetas enen cursivatipo y texto dentro del < fuerte>, <b>, <th> (encabezado de tabla) y etiquetas de encabezado (<h1>,y así sucesivamente) en atrevido tipo. Pero puede controlar estas configuraciones usted mismo, ya sea desactivar la negrita para un título o poner en cursiva el texto que normalmente no lo está, usando elEstilo de fuenteypeso de fuente propiedades. Para poner texto en cursiva, agregue esto a un estilo: estilo de fuente: cursiva; Alternativamente, puede asegurarse de que el textono esen cursiva, así: estilo de fuente: normal; NotaElEstilo de fuentela propiedad en realidad tiene una tercera opción:oblicuo-que funciona de forma idéntica a itálico. Elpeso de fuenteLa propiedad le permite poner el texto en negrita o no. De hecho, de acuerdo con las reglas de CSS, puede especificar nueve valores numéricos (100–900) para elegir gradaciones sutiles de negrita (desde súper extra pesado [900] hasta casi invisible ligero [100]). Por supuesto, las fuentes que utilice deben tener nueve pesos diferentes para que estos valores tengan un efecto visible para los visitantes de su sitio web. La única manera de usar los valores numéricos es con las fuentes web que se analizan en la página 132. De hecho, Google Web Fonts (página 146) usa los valores numéricos exclusivamente para especificar los pesos de las fuentes. NotaAl usar fuentes web, descubrirá que poner el texto en negrita y cursiva requiere algunos pasos más. Consulte la página 140 para conocer los detalles. 162 Css3: el manual perdido www.it-ebooks.info FORMATO PALABRAS Y Letras Para poner el texto en negrita: fuente-peso: negrita; Y para hacer que el texto no esté en negrita: peso de fuente: normal; NotaDado que los titulares ya se muestran en negrita, es posible que desee encontrar otra forma de resaltar una palabra o palabras que estén fuertemente enfatizadas o en negrita dentro de un título. Aquí hay una manera: h1 fuerte {color: #3399FF; } Este selector descendente cambia el color de cualquier <fuerte>etiquetas (generalmente mostradas en negrita) que aparecen dentro de un < h1>etiqueta. capitalizando Poner en mayúsculas el texto es bastante fácil: solo presione la tecla de bloqueo de mayúsculas y comience a escribir, ¿verdad? Pero, ¿qué sucede si desea poner en mayúsculas todos los encabezados de una página y el texto que ha copiado y pegado de un documento de Word está en minúsculas? En lugar de volver a escribir el título, recurra al CSStransformación de textopropiedad. Con él, puede escribir todo el texto en mayúsculas, minúsculas o incluso escribir en mayúsculas la primera letra de cada palabra (para títulos y titulares). Aquí hay un ejemplo: transformación de texto: mayúsculas; Para las otras dos opciones, simplemente useminúsculasocapitalizar. Debido a que esta propiedad se hereda, una etiqueta anidada dentro de una etiqueta con transformación de textoaplicado obtiene el mismo valor en mayúsculas, minúsculas o mayúsculas. Para decirle a CSSnopara cambiar el caso del texto, use elningunovalor: transformación de texto: ninguno; LETRAS MINÚSCULAS Para una mayor sofisticación tipográfica, también puede recurrir a lavariante de fuentepropiedad, que le permite establecer el tipo comoletras minúsculas.En el estilo de versalita, las letras minúsculas aparecen como letras mayúsculas ligeramente reducidas, así:PAGyCirCustancia. Si bien es difícil leer largas extensiones de texto, las versalitas le dan a su página una seriedad de libro del viejo mundo cuando se usan en títulos y subtítulos. Para crear texto en mayúsculas pequeñas: variante de fuente: versalitas; decoración CSS también proporciona ladecoración de textopropiedad para agregar varias mejoras al texto. Con él, puede agregar líneas sobre, debajo o a través del texto (vea la Figura 6-12), o para reírse de verdad, puede hacer que el texto parpadee como un letrero de No Vacancy. Utilizar eldecoración de textopropiedad agregando una o más de las siguientes palabras clave:subrayar, superposición,línea a través,oparpadear.Por ejemplo, para subrayar texto: Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 163 FORMATO PALABRAS Y Letras decoración de texto: subrayado; Figura 6-12 Eldecoración de textopropiedad en acción. Si esto es lo que la gente de la sede central de CSS llama "decoraciones", es mejor que no les pida ayuda con el diseño de la próxima remodelación de su casa. También puede combinar varias palabras clave para obtener múltiples efectos. Aquí se explica cómo agregar una línea encima y debajo de un texto: decoración de texto: subrayado sobrerayado; Pero solo porque tupoderagregar estas decoraciones no tan decorativas al texto no significa que debas hacerlo. Por un lado, cualquier persona que haya usado la Web durante un período de tiempo instintivo asocia cualquier texto subrayado con un enlace e intenta hacer clic en él. Por lo tanto, no es una buena idea subrayar las palabras que no forman parte de un enlace. Yparpadeares como un letrero de neón que destella “¡Amateur! ¡Aficionado! ¡Aficionado!" (Probablemente por eso la mayoría de los navegadores no hacen que el texto parpadee, incluso si lo solicita). NotaPuede obtener un efecto similar al subrayado y el sobrerayado agregando un borde en la parte inferior o superior de un elemento (consulte la página 298). La gran ventaja de los bordes es que puede controlar su ubicación, tamaño y color para crear un diseño más atractivo que no parezca un enlace. Elsuperposiciónsimplemente dibuja una línea sobre el texto, mientras quelínea directadibuja una línea a través del centro del texto. Algunos diseñadores usan este efecto de tachado para indicar una edición en una página donde se eliminó texto del manuscrito original. Finalmente, puede apagar todas las decoraciones usando elningunopalabra clave como esta: texto-decoración: ninguno; 164 Css3: el manual perdido www.it-ebooks.info ¿Por qué necesita una propiedad de decoración de texto que elimine las decoraciones? El ejemplo más común es eliminar la línea que aparece debajo de un enlace. (Consulte la página 297.) FORMATO PALABRAS Y Letras Espaciado entre letras y palabras Otra forma de hacer que el texto se destaque entre la multitud es ajustar el espacio que aparece entre letras o palabras (consulte la Figura 6-13). Reduciendo el espacio entre letras usando el CSS espaciado de letrasLa propiedad puede ajustar los titulares, haciéndolos parecer aún más audaces y pesados al mismo tiempo que se ajustan más letras en una sola línea. Por el contrario, aumentar el espacio puede dar a los titulares una calidad más tranquila y majestuosa. Para reducir el espacio entre letras, usa un valor negativo como este: espaciado entre letras: -1px; Un valor positivo agrega espacio entre letras: espaciado entre letras: 0,7 em; Del mismo modo, puede abrir espacio (o eliminar espacio) entre palabras usando elespacio entre palabraspropiedad. Esta propiedad hace que el espacio entre las palabras sea más ancho (o más estrecho) sin afectar realmente el espacio entre las letras dentro de una palabra: espacio entre palabras: 2px; Con cualquiera de estas propiedades, puede usar cualquier tipo de medida que usaría para el tamaño del texto (píxeles, ems, porcentajes) con valores positivos o negativos. Figura 6-13 Use juiciosamente el espacio entre palabras y letras. Demasiado o muy poco de cualquiera puede hacer que el texto sea difícil, si no imposible, de leer. Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 165 AÑADIR TEXTO Sombra A menos que busque un efecto de diseño realmente extremo, en otras palabras, texto totalmente ilegible, mantenga sus valores pequeños. Un valor negativo demasiado alto y las letras y las palabras se superponen. Para mantener el mensaje de su sitio claro y legible, utilice con cuidado el espacio entre letras y palabras. Agregar sombra de texto CSS3 incluye una propiedad que le permite agregar sombras paralelas al texto para agregar profundidad e interés a los títulos, listas y párrafos (vea la Figura 6-14). Figura 6-14 Las sombras de texto son una excelente manera de agregar profundidad sutil (o, si insiste, no tan sutil) a los títulos y otros textos. sin embargo, elsombra de textoLa propiedad no funciona en Internet Explorer 9 o anterior. Elsombra de textoLa propiedad requiere cuatro piezas de información: el desplazamiento horizontal (a qué distancia a la izquierda o a la derecha del texto debe aparecer la sombra), el desplazamiento vertical (a qué distancia por encima o por debajo del texto debe aparecer la sombra), la borrosidad de la sombra, y el color de la sombra. Por ejemplo, aquí está elsombra de texto propiedad que crea el efecto en la parte superior de la Figura 6-14: sombra de texto: -4px 4px 3px #999999; El primer valor—-4 píxeles—significa "colocar la sombra 4 píxeles a la izquierda del texto". (Un valor positivo aquí colocaría la sombra a la derecha del texto). El segundo valor:4 píxeles— coloca la sombra 4 píxeles por debajo del texto. (Un valor negativo colocaría la sombra sobre el texto).3 píxelesEl valor define qué tan borrosa debe ser la sombra. A0 píxelesvalor (sin desenfoque) da como resultado una sombra nítida; cuanto mayor sea el valor, más borrosa e indistinta será la sombra. Finalmente, el último valor es el color de la sombra paralela. Incluso puede agregar múltiples sombras paralelas para obtener efectos más complejos (vea la imagen inferior en la Figura 6-14): simplemente agregue una coma seguida de valores adicionales de sombra paralela, como este: sombra de texto: -4px 4px 3px #666, 1px -1px 2px #000; No hay límite (excepto el buen gusto) para la cantidad de sombras que puede agregar de esta manera. Lamentablemente, este efecto no funciona en Internet Explorer 9 o anterior. No obstante, funciona 166 Css3: el manual perdido www.it-ebooks.info FORMATO en todos los demás navegadores actuales (incluso IE 10). En otras palabras,noconfíe en este efecto para hacer que el texto sea legible. La imagen inferior de la Figura 6-14 le muestra lo Completo Párrafos que no debe hacer: el color del texto es blanco y solo se puede leer porque las sombras paralelas definen el contorno del texto. En Internet Explorer, el texto sería invisible: texto blanco sobre un fondo blanco. NotaPara ver algunos ejemplos de formas hermosas de usar sombras de texto, visitehttp://webexpedition18.com/articles/ css3-text-shadow-property/. Dar formato a párrafos enteros Algunas propiedades de CSS se aplican a fragmentos de texto en lugar de palabras individuales. Puede utilizar las propiedades de esta sección en párrafos completos, títulos, etc. Ajuste del espacio entre líneas Además de cambiar el espacio entre palabras y letras, CSS le permite ajustar el espacio entre líneas de texto usando elaltura de la líneapropiedad. Cuanto mayor sea la altura de la línea, más espacio aparecerá entre cada línea de texto (consulte la Figura 6-15). Figura 6-15 Elaltura de la líneale permite separar las líneas de un párrafo o acercarlas. La configuración normal es equivalente al 120 por ciento, por lo que un porcentaje menor aprieta las líneas (arriba), mientras que un porcentaje mayor las separa (abajo). Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 167 FORMATO Completo Párrafos ESPACIADO DE LÍNEA POR PÍXEL, EM O PORCENTAJE Al igual que con eltamaño de fuentepropiedad, puede usar píxeles, ems o porcentajes para establecer el tamaño de la altura de la línea: altura de línea: 150%; En general, los porcentajes o ems son mejores que los píxeles, porque cambian según y junto con el texto.tamaño de fuentepropiedad. Si establece la altura de la línea en 10 píxeles y luego ajusta el tamaño de la fuente a algo mucho más grande (como 36 píxeles), debido a que la altura de la línea permanece en 10 píxeles, sus líneas se superpondrán. Sin embargo, usando un porcentaje (150%por ciento, digamos) significa elaltura de la líneael espaciado se ajusta proporcionalmente cada vez que cambia eltamaño de fuentevalor. Lo normalaltura de la líneaconfiguración para un navegador es120%.Por lo tanto, cuando desee ajustar el espacio entre líneas, utilice un valor inferior a120%;y para separar las líneas, use un valor mayor que ese. NotaPara determinar la cantidad de espacio que aparece entre las líneas de texto, un navegador web resta el tamaño de fuente de la altura de la línea. El resultado, llamadoprincipal— es la cantidad de espacio entre líneas en un párrafo. Digamos que el tamaño de la fuente es de 12 píxeles y la altura de la línea (establecida en 150%) es de 18 píxeles. 18 - 12 = 6 píxeles, por lo que el navegador agrega 6 píxeles de espacio entre cada línea. ESPACIO DE LÍNEA POR NÚMERO CSS ofrece otro método de medición específico para la altura de la línea, que es simplemente un número. Lo escribes así: altura de línea: 1,5; No hay unidad (como em o px) después de este valor. El navegador multiplica este número por el tamaño de fuente para determinar la altura de la línea. Así que si el texto es 1em y elaltura de la línea el valor es 1.5, entonces la altura de la línea calculada es 1.5em. En la mayoría de los casos, el efecto no es diferente de especificar un valor de 1,5em o 150%. Pero a veces este factor de multiplicación resulta útil, especialmente porque las etiquetas anidadas heredan elaltura de la líneavalor de sus padres. Por ejemplo, supongamos que establece elaltura de la líneapropiedad del <cuerpo>etiquetar a150%.Todas las etiquetas dentro de la página heredarían ese valor. Sin embargo, no es el porcentaje lo que se hereda; es elcalculadoaltura de la línea. Entonces, supongamos que el tamaño de fuente de la página está configurado en 10 píxeles; El 150 por ciento de 10 son 15 píxeles. Cada etiqueta heredaría una altura de línea de 15 píxeles, no del 150 por ciento. Entonces, si tiene un párrafo con texto grande de 36 píxeles, entonces la altura de la línea (15 píxeles) sería mucho más pequeña que el texto, lo que haría que las líneas se juntaran en un lío difícil de leer. En este ejemplo, en lugar de usar unaltura de la líneade150%aplicado al <cuerpo>etiqueta, podría hacer que todas las etiquetas compartan la misma altura de línea proporcional básica configurando el altura de la línea a1.5.Cada etiqueta, en lugar de heredar un valor de píxel preciso para la altura de línea de lacuerpoestilo, simplemente multiplica su tamaño de letra por 1,5. Entonces, en el ejemplo anterior de un párrafo con texto de 36 píxeles, la altura de la línea sería de 1,5 x 36 o 54 píxeles. 168 Css3: el manual perdido www.it-ebooks.info FORMATO Completo Alinear texto Una de las formas más rápidas de cambiar el aspecto de una página web es con la alineación de párrafos. Párrafos Utilizando eltexto alineadopropiedad, puede centrar un párrafo en una página, alinear el texto a lo largo de su borde izquierdo o derecho, o justificar los bordes izquierdo y derecho (como los párrafos de este libro). Normalmente, el texto de una página se alinea a la izquierda, pero es posible que desee centrar los títulos para darles un aspecto formal. Los idiomas que se leen de derecha a izquierda, como el hebreo y el árabe, requieren alineación a la derecha. Para cambiar la alineación del texto, utilice cualquiera de las siguientes palabras clave:izquierda, derecha, justificar, centro: alineación de texto: centro; El texto justificado se ve muy bien en una página impresa, principalmente porque la resolución fina posible con la impresión permite pequeños ajustes en el espaciado y porque la mayoría de los programas que se usan para diseñar material impreso pueden separar palabras largas (intentando así distribuir equitativamente el número de caracteres por línea). ). Esto evita que grandes y antiestéticos huecos o ríos de espacios en blanco fluyan a través de los párrafos. Las páginas web están limitadas a espacios mucho más gruesos debido a la resolución generalmente baja de los monitores y porque los navegadores web no saben cómo separar palabras largas. Así que cuando usas eljustificaropción, el espacio entre las palabras puede variar significativamente de una línea a otra, lo que hace que el texto sea más difícil de leer. Cuando quieras usar eljustificaropción en sus páginas web, pruébela minuciosamente para asegurarse de que el texto sea atractivo y legible. Sangría de la primera línea y eliminación de márgenes En muchos libros, la primera línea de cada párrafo está sangrada. Esta sangría de primera línea marca el comienzo de un párrafo cuando no hay espacios que separen los párrafos. En la Web, sin embargo, los párrafos no tienen sangrías sino que están separados por un poco de espacio, como los párrafos de este libro. Si desea que sus páginas web se parezcan menos a otras páginas web y más a un libro bellamente impreso, aproveche el CSSguion de textoy margenpropiedades. Con ellos, puede agregar una sangría de primera línea y eliminar (o aumentar) los márgenes que aparecen al principio y al final de los párrafos. GUIÓN DE PRIMERA LÍNEA Puede usar valores de píxel y em para establecer la sangría de la primera línea de esta manera: sangría de texto: 25px; o sangría de texto: 5em; Un valor de píxel es una medida absoluta, un número preciso de píxeles, mientras que un valor em especifica el número de letras (basado en el tamaño de fuente actual) que desea sangrar. Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 169 FORMATO Completo CONSEJOPuedes Párrafos usar negativoguion de textovalores para crear lo que se llama unsangría francesa, donde la primera línea comienza más a la izquierda que las demás líneas del párrafo. (Piense en ello como "colgando" del borde izquierdo). Por lo general, usará una sangría de texto negativa junto con un valor de margen de posición, de modo que la sangría de texto negativa no sobresalga del lado izquierdo de una página, columna, o cuadro de diseño. También puede utilizar un valor porcentual, pero con elguion de textopropiedad, los porcentajes adquieren un significado diferente al que ha visto antes. En este caso, los porcentajes no están relacionados con el tamaño de fuente; están relacionados con el ancho del elemento que contiene el párrafo. Por ejemplo, si elguion de textose establece en50%,y un párrafo ocupa todo el ancho de la ventana del navegador web, luego la primera línea del párrafo comienza en la mitad de la pantalla. Si cambia el tamaño de la ventana, tanto el ancho del párrafo como su sangría cambian. (Aprenderá más sobre los porcentajes y cómo funcionan con el ancho de los elementos en la siguiente sección). CLÍNICA DE USUARIOS ELÉCTRICOS Un método abreviado para formatear texto Escribir una propiedad de texto tras otra es agotador, especialmente cuando desea usar varias propiedades de texto diferentes a la vez. Afortunadamente, CSS ofrece una propiedad abreviada llamadafuente, que le permite combinar las siguientes propiedades en una sola línea: Estilo de fuente (página 162),variante de fuente (página 163), peso de fuente (página 162),tamaño de fuente (página 37),altura de la línea ( página 167), yFamilia tipográfica (página 127). Por ejemplo, considere la siguiente declaración: 1,5 em/150 % o 24 px/37 px. Las dos últimas propiedades deben sertamaño de fuente (otamaño de fuente/altura de línea)seguido porFamilia tipográfica,en ese orden. Todas las demás propiedades se pueden escribir en cualquier orden. Por ejemplo, estas dos declaraciones son iguales: fuente: cursiva negrita minúsculas 1.5em Arial; fuente: negrita, minúsculas, cursiva, 1,5 em, Arial; Finalmente, omitir un valor de la lista es lo mismo que establecer ese valor en fuente: cursiva negrita minúsculas 18px/ normal. Digamos que creas un <p>estilo de etiqueta que da formato a todos 150% Arial, Helvetica, sans-serif; los párrafos en negrita, cursiva y versalitas con una altura de línea del 2000 por Crea tipografía negrita y cursiva en versalitas, utilizando Arial de 18 píxeles (o Helvetica o sans-serif) con una altura de línea del 150 por ciento. Tenga en cuenta estas reglas: ciento (no es que en realidadhacereso). A continuación, puede crear un estilo de clase denominado, por ejemplo, .párrafo especialcon la siguiente declaración de fuente: • No tiene que incluir cada una de estas propiedades, perodebe incluya el tamaño de fuente y la familia de fuentes: fuente: 1.5em Arial; Cuando aplica este estilo a un párrafo de la página, ese fuente: 1.5em Georgia, Times, serif;. párrafonohereda la cursiva, la negrita, las versalitas o la • Use un solo espacio entre cada valor de propiedad. Solo usa una altura de la línea. Omitiendo esos cuatro valores en el . coma para separar las fuentes en una lista como esta: Arial, párrafo especialEl estilo es lo mismo que escribir esto: Helvetica, sans-serif. fuente: normal normal normal 1.5em/normal • Al especificar la altura de la línea, agregue una barra después del Arial/; tamaño de fuente seguido del valor de la altura de la línea, así: 170 Css3: el manual perdido www.it-ebooks.info FORMATO Completo CONTROL DE MÁRGENES ENTRE PÁRRAFOS Muchos diseñadores odian el espacio que cada navegador arroja entre párrafos. Antes de CSS, Párrafos no había nada que pudieras hacer al respecto. Afortunadamente, ahora puede acceder al margen superiorymargen inferiorproperties para eliminar (o, si lo desea, expandir) esa brecha. Para eliminar totalmente un margen superior e inferior, escriba esto: margen superior: 0; margen inferior: 0; Para eliminar las brechas entretodopárrafos en una página, cree un estilo como este: pag { margen superior: 0; margen inferior: 0; } Al igual que conguion de texto,puede usar valores de píxeles o em para establecer el valor de los márgenes. También puede usar porcentajes, pero al igual que conguion de texto,el porcentaje está relacionado con elanchodel elemento contenedor del párrafo. Debido a que es confuso calcular el espacio por encima y por debajo de un párrafo en función de su ancho, es más fácil apegarse a los valores em o pixel. NotaDebido a que no todos los navegadores tratan el margen superior e inferior de los títulos y párrafos de manera consistente, a menudo es una buena idea simplementecero fuera(es decir, eliminar) todos los márgenes al principio de una hoja de estilo. Para ver cómo funciona esto, pase a la página 548. Para un efecto especial, puede asignar unnegativovalor a un margen superior o inferior. Por ejemplo un -10 píxelesel margen superior mueve el párrafo 10 píxeles hacia arriba, tal vez incluso superponiendo visualmente el elemento de la página que se encuentra arriba. (Consulte el paso 4 en la página 190 para ver un ejemplo). Dar formato a la primera letra o primera línea de un párrafo CSS también proporciona una forma de formatear solo una parte de un párrafo usando: primera letray :primera lineapseudo-elementos (ver Figura 6-16). Técnicamente, estas no son propiedades CSS, sino tipos de selectores que determinan a qué parte de un párrafo se deben aplicar las propiedades CSS. Con el :primera letrapseudoelemento, puede crear una letra mayúscula inicial para simular el aspecto de un manuscrito escrito a mano. Para poner la primera letra de cada párrafo en negrita y roja, podrías escribir este estilo: p:primera letra { fuente-peso: negrita; color rojo; } Para ser más selectivo y formatear solo la primera letra de un párrafo en particular, puede aplicar un estilo de clase al párrafo—.introducción,Por ejemplo: <p class="intro">El texto del párrafo introductorio va aquí...</p> Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 171 FORMATO Completo Párrafos Entonces podrías crear un estilo con un nombre como este: .intro:primera letra. El :primera lineapseudo-elemento da formato a la línea inicial de un párrafo. Puede aplicar esto a cualquier bloque de texto como un encabezado (h2: primera línea)o párrafo (p: primera línea).Al igual que con :primera letra,puede aplicar una clase a solo un párrafo y formatear solo la primera línea de ese párrafo. Digamos que desea poner en mayúscula cada letra en la primera línea del primer párrafo de una página. Aplicar una clase al HTML del primer párrafo —<p clase="introducción">—y luego crea un estilo como este: . intro:primera línea { transformación de texto: mayúsculas; } Figura 6-16 El:primera letrapseudoelement formatea la primera letra del elemento con estilo, como las mayúsculas iniciales a la izquierda. El:primera linea selector, por otro lado, da estilo a la primera línea de un párrafo. Incluso si su invitado cambia el tamaño de la ventana (abajo), el navegador aún aplica estilo a cada palabra que aparece en la primera línea de un párrafo. 172 Css3: el manual perdido www.it-ebooks.info NotaPor alguna extraña razón, ni Chrome ni el navegador web Safari entienden eltransformación de textoproperty (página 163) cuando se usa con :primera lineapseudo-elemento. En otras palabras, no puede usar CSS para poner en LISTAS DE ESTILO mayúscula las letras de la primera línea de un párrafo en Chrome o Safari. Listas de estilo El <ul>y <viejo>las etiquetas crean listas numeradas y con viñetas, como listas de elementos relacionados o pasos numerados. Pero no siempre desea conformarse con la forma en que los navegadores web dan formato automáticamente a esas listas. Es posible que desee intercambiar una viñeta más atractiva, usar letras en lugar de números o incluso eliminar por completo las viñetas o los números. Tipos de listas La mayoría de los navegadores web muestran listas desordenadas (<ul>tags) usando viñetas redondas y listas numeradas (<viejo>tags) usando…bueno…números. Con CSS, puede elegir entre tres tipos de viñetas:desct (una bala redonda sólida),círculo (una bala redonda hueca), o cuadrado (un cuadrado sólido). También hay seis esquemas de numeración diferentes:decimal , cero decimal,alfa superior,bajo-alfa,romano superior,obajo-romano (consulte la Figura 6-17). Seleccionas todas estas opciones usando eltipo-estilo-listapropiedad, así: tipo de estilo de lista: cuadrado; o tipo-estilo-lista: alfa-superior; Figura 6-17 CSS proporciona muchas formas diferentes de marcar listas numeradas y con viñetas, desde un puñado de formas geométricas hasta muchos sistemas de numeración diferentes. Si tiene ganas de apresurar una fraternidad o hermandad, también puede reemplazar los números con letras griegas (α, β, γ) usando elbajo griegoopción. De hecho, hay una serie de otros esquemas de numeración que incluyen armenio, georgiano, katakana y otras variaciones regionales. Puedes informarte sobre ellos en https:// developer.mozilla.org/en-US/ docs/CSS/ list-style-type. Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 173 LISTAS DE ESTILO La mayoría de las veces, usa esta propiedad en un estilo que está formateando un <viejo>o <ul> etiqueta. Los ejemplos típicos incluyen unviejooulestilo de etiqueta—ul { tipo de estilo de lista: cuadrado; }—o una clase que está aplicando a una de esas etiquetas. Sin embargo, también puede aplicar la propiedad a un elemento de lista individual (<li>etiqueta) también. Incluso puede aplicar diferentes tipos de estilos de viñetas a elementos dentro de la misma lista. Por ejemplo, puede crear un estilo para un <li>etiqueta que establece las viñetas encuadrado,pero luego crea una clase llamada .círculoque cambia el tipo de viñeta acírculo,como esto: li {tipo de estilo de lista: cuadrado; } . círculo { tipo de estilo de lista: círculo; } Luego puede aplicar la clase a todos los demás elementos de la lista para crear un patrón alternativo de viñetas cuadradas y circulares: <ul> <li>Artículo 1</li> <li class="circle">Artículo 2</li> <li>Artículo 3</li> <li class="circle">Punto 4</li> </ ul> O bien, utilizando el selector de enésimo tipo (página 78), podría omitir el nombre de la clase por completo: li {tipo de estilo de lista: cuadrado; } li:nth-of-type(odd) { list-style-type: circle; } A veces querrá ocultar completamente las viñetas, como cuando prefiera usar sus propias viñetas gráficas (consulte la página 176). Además, cuando la barra de navegación de un sitio es una lista de enlaces, puede usar un <ul>lista, pero oculta sus viñetas (ver el ejemplo en la página 286). Para apagar las viñetas, use la palabra claveninguno: tipo-estilo-lista: ninguno; Posicionamiento de viñetas y números Los navegadores web generalmente muestran viñetas o números que cuelgan a la izquierda del texto del elemento de la lista (Figura 6-18, izquierda). Con CSS, puedes controlar la posición de la viñeta (algo) usando elposición de estilo de listapropiedad. Puede hacer que aparezca la viñetaafuera del texto (la forma en que los navegadores normalmente muestran viñetas) oadentro el propio bloque de texto (Figura 6-18, derecha): posición-estilo-lista: fuera; o posición-estilo-lista: dentro; 174 Css3: el manual perdido www.it-ebooks.info CONSEJOPuede ajustar el espacio entre la viñeta y su texto (aumentar o disminuir ese espacio) usando el LISTAS DE ESTILO relleno-izquierdapropiedad. Para usarlo, crea un estilo que se aplica al <li>etiquetas Esta técnica funciona sólo si configura elposición de estilo de listapropiedad a laafueraopción (o no usarposición de estilo de lista en absoluto). Figura 6-18 Utilizando ellista- posición de estilo propiedad, puede controlar la posición de viñetas y números en una lista. La opción exterior (izquierda) enfatiza el "listness" de su lista. Utilizar el adentroopción (derecha) si necesita maximizar el ancho de su lista. Además, si no le gusta cómo los navegadores web sangran una lista desde el borde izquierdo, puede eliminar ese espacio configurando tanto elmargen izquierdoyrelleno-izquierda propiedades a0para la lista. Para eliminar la sangría de todas las listas, puede crear este selector de grupo: ul, viejo { relleno-izquierda: 0; margen izquierdo: 0; } Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 175 LISTAS DE ESTILO O bien, puede crear un estilo de clase con esas propiedades y aplicarlo a un < particularul> o < viejo>etiqueta. La razón por la que necesita configurar las propiedades de relleno y margen es que algunos navegadores usan relleno (Firefox, Mozilla, Safari) y algunos usan margen (Internet Explorer) para controlar la sangría. (Aprenderá más sobre las propiedades de margen y relleno en el próximo capítulo). Los navegadores normalmente muestran un elemento con viñetas directamente encima de otro, pero puede agregar espacio entre los elementos de la lista usando elmargen superioromargen inferiorpropiedades en los elementos de la lista en particular. Estas propiedades funcionan para los elementos de la lista de espaciado exactamente de la misma manera que funcionan para los párrafos de espaciado, como se explica en la página 171. Solo debe asegurarse de que el estilo se aplique a <li>etiquetas creando un estilo de clase y aplicándolo individualmente a cada <li>etiqueta. O, mejor aún, crea un <li>estilo de etiqueta o selector de descendientes. El estilo debenoaplicar a la <ul>o <viejo>etiqueta. Agregar márgenes en la parte superior o inferior de esas etiquetas simplemente aumenta el espacio entre la lista completa y los párrafos arriba o debajo de ella, no el espacio entre cada elemento de la lista. Viñetas gráficas Si no está satisfecho con los cuadrados y círculos para sus viñetas, cree las suyas propias. Usando un programa de edición de imágenes como Photoshop o Fireworks, puede crear rápidamente viñetas coloridas e interesantes. Las colecciones de imágenes prediseñadas y la mayoría de las fuentes de símbolos (como Webdings) brindan una gran inspiración. CONSEJOPara obtener una lista de un montón de sitios con íconos y viñetas gratuitos, consulte esta página:www.cssjuice.com/38-freeicon- puntos de control/. el cssimagen de estilo de listale permite especificar una ruta a un gráfico en su sitio, de la misma manera que especifica un archivo cuando agrega una imagen a una página usando el origen atributo del HTML <imagen>etiqueta. Usas la propiedad así: imagen-estilo-lista: url(images/bullet.gif); El términoURLy los paréntesis son obligatorios. La parte dentro de los paréntesis— imágenes/bullet.gifen este ejemplo, es la ruta al gráfico. Tenga en cuenta que, a diferencia de HTML, no usa comillas alrededor de la ruta. 176 Css3: el manual perdido www.it-ebooks.info LISTAS DE ESTILO Preguntas frecuentes Personalización de números y viñetas de lista Me gustaría que los números en mis listas numeradas fueran en negrita ellos mismos. No escribes viñetas cuando creas una lista; el navegador y rojos en lugar del viejo y aburrido negro. ¿Cómo personalizo viñetas y los agrega por usted. Con CSS, puede hacer que un navegador agregue números? contenido e incluso diseñe ese contenido antes de cada <li>etiqueta. Aprenderá sobre el contenido generado en la página 595, pero solo CSS le brinda algunas formas de personalizar los marcadores que aparecen para tener el código a mano si desea hacer que las viñetas regulares antes de los elementos de la lista. Para las viñetas, puede usar sus propios junto a los elementos de la lista sean rojas, agregue este CSS a su hoja gráficos, como se describió anteriormente. Tiene otras dos técnicas de estilo: disponibles: una que requiere mucha mano de obra, pero funciona en la tu li { mayoría de los navegadores, y otra que es súper geek, vanguardista y no tipo-estilo-lista: ninguno; funciona en Internet Explorer 7 o anterior. En primer lugar, la forma intensiva en mano de obra. Supongamos que desea que los números en una lista ordenada sean rojos y en negrita, } ul li: antes { contenido: contador (elemento, disco) " pero el texto sea negro, sin negritas. Cree un estilo que se aplique a la lista, como un estilo de clase que se aplica al <viejo>o <li>etiquetas: con un color de texto rojo y el peso de la fuente en negrita. En este punto, todo en la lista, incluido el texto, está en rojo y en negrita. "; color rojo; } Y, si desea que los elementos de una lista numerada sean rojos, puede agregar este CSS: A continuación, cree un estilo de clase—.lista regular,por ejemplo, que viejo li { establece el color de la fuente en negro y el grosor de la fuente en normal (es tipo-estilo-lista: ninguno; decir, no en negrita). Luego (y esta es la parte tediosa), envuelva un <lapso> contra-incremento: artículo; marque el texto en cada elemento de la lista y aplíquele el estilo de clase. Por } ejemplo: ol li: antes { <li><span class="regularList">Elemento 1</ contenido: contador(elemento) ". span></li> "; color rojo; Ahora las viñetas están en negrita y rojas y el texto es negro y normal. Desafortunadamente, tienes que agregar que <lapso>a cadaartículo de } Para obtener una explicación más detallada sobre el estilo de las listas la lista! La forma genial, "soy tan experto en CSS" es usar lo que se llama contenido generado. Básicamente, el contenido generado es simplemente material que numeradas, visite www.456bereastreet.com/archive/201105/styling_ordered_ list_numbers/. en realidad no se escribe en la página, pero que el navegador web agrega cuando muestra la página. Un buen ejemplo son las balas. NotaAl especificar un gráfico en unexternohoja de estilo, la ruta a la imagen es relativa al archivo de la hoja de estilo, no a la página web. Aprenderá más sobre cómo funciona esto en el cuadro de la página 244, a medida que comience a usar imágenes con CSS. Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 177 Tutorial: TEXTO FORMATO en acción Mientras que laimagen de estilo de listale permite usar un gráfico para una viñeta, no proporciona ningún control sobre su ubicación. La viñeta puede aparecer demasiado por encima o por debajo de la línea, lo que requiere que modifique el gráfico de la viñeta hasta que quede bien. Un mejor enfoque, uno que aprenderá en el Capítulo 8, es usar elimagen de fondopropiedad. Esa propiedad le permite colocar con mucha precisión un gráfico para sus listas con viñetas. NotaAl igual que con elfuentepropiedad (consulte el cuadro en la página 170), hay un método abreviado para especificar las propiedades de la lista. Elestilo de listaLa propiedad puede incluir un valor para cada una de las otras propiedades de la lista:imagen de estilo de lista,posición de estilo de lista,ytipo-estilo-lista.Por ejemplo,ul { estilo de lista: círculo dentro; }da formato a listas desordenadas con la viñeta circular hueca en la posición interior. Cuando incluye un tipo de estilo y una imagen de estilo:estilo de lista: círculo url (images/bullet.gif) dentro;—los navegadores web usan el tipo de estilocírculoen este ejemplo, si no se puede encontrar el gráfico. Tutorial: formato de texto en acción En este tutorial, mejorará los títulos, las listas y los párrafos de texto utilizando las potentes opciones de formato de CSS. Para comenzar, debe ubicar los archivos del tutorial en el sitio web complementario de este libro en www.sawmac.com/css3/. Haga clic en el enlace del tutorial y descargue los archivos. Todos los archivos están incluidos en un archivo zip, por lo que primero deberá descomprimirlos. (Visite el sitio web para obtener instrucciones detalladas sobre cómo descomprimir los archivos). Los archivos de este tutorial se encuentran dentro de la carpeta denominada06. Configuración de la página Primero, comenzará su hoja de estilo, agregue la @Perfil delanterodirectiva para cargar algunas fuentes web y agregar estilos para formatear el texto del cuerpo. 1.Inicie su navegador web y abra el archivo06→texto.html(ver Figura 6-19). No es mucho para mirar, solo una colección de titulares, párrafos y una lista con viñetas solitaria, pero lo convertirá en algo mucho mejor. 2.abre el archivotexto.htmlen tu editor de texto favorito. Comience agregando una hoja de estilo interna a este archivo. (Sí, las hojas de estilo externas son mejores, pero está perfectamente bien comenzar su diseño con una hoja interna. Consulte la página 39). 178 Css3: el manual perdido www.it-ebooks.info Tutorial: TEXTO FORMATO en acción Figura 6-19 La página comienza con nada más que HTML básico y monótono. 3.en el <cabeza>de la página web, haga clic directamente después del cierre </título>etiqueta. Presiona Enter (Return) y luego escribe: <estilo> </estilo> Ahora que las etiquetas de estilo básicas están en su lugar, agregará el restablecimiento de CSS que se describe en la página 115. En lugar de escribirlo todo, simplemente copiará y pegará el CSS de una hoja de estilo externa. Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 179 Tutorial: TEXTO FORMATO en acción 4.abre el archivorestablecer.css.Copie todo el código de ese archivo y péguelo entre la apertura y el cierre <estilo>etiquetas que agregó en el Paso 3. Si obtiene una vista previa de latexto.htmlahora en un navegador web, verá que todo el texto de la página (títulos, párrafos, etc.) se ve casi igual; en otras palabras, se eliminó todo el formato HTML básico que aplicó el navegador, por lo que puede comenzar con una pizarra limpia. A continuación, agregará la @ necesariaPerfil delanterodirectivas para cargar cuatro fuentes web. En realidad, todos tienen la misma fuente, PTSans, pero incluyen las variantes en negrita, cursiva y negrita-cursiva. 5.Agregue el siguiente código a la página: @Perfil delantero { familia de fuentes: 'PTSans'; src: url('fuentes/PTSansRegular.eot'); src: url('fuentes/PTSansRegular.eot?#iefix') format('embedded-opentype'), url('fuentes/PTSansRegular.woof') format('woff'), url('fonts/PTSansRegular.ttf') format('truetype'), url('fonts/PTSansRegular.svg') format('svg') ; peso de fuente: normal; estilo de fuente: normal; } @Perfil delantero { familia de fuentes: 'PTSans'; src: url('fuentes/PTSansItalic.eot'); src: url('fuentes/PTSansItalic.eot?#iefix') format('embedded-opentype'), url('fuentes/PTSansItalic.woof') format('woff'), url('fonts/ PTSansItalic.ttf') format('truetype'), url('fonts/ PTSansItalic.svg') format('svg') ; peso de fuente: normal; estilo de fuente: cursiva; } @Perfil delantero { familia de fuentes: 'PTSans'; src: url('fuentes/PTSansBold.eot'); src: url('fuentes/PTSansBold.eot?#iefix') format('embedded-opentype'), url('fuentes/PTSansBold.woof') formato('woff'), url('fuentes/PTSansBold.ttf') formato('truetype'), url('fuentes/PTSansBold.svg') formato('svg') ; fuentepeso: negrita; estilo de fuente: normal; } @Perfil delantero { familia de fuentes: 'PTSans'; 180 Css3: el manual perdido www.it-ebooks.info Tutorial: TEXTO src: url('fuentes/PTSansBoldItalic.eot'); src: url('fuentes/PTSansBoldItalic.eot?#iefix') format('embedded-opentype'), FORMATO en acción url('fuentes/PTSansBoldItalic.woof') format('woff'), url('fonts/ PTSansBoldItalic.ttf') format('truetype'), url('fonts/ PTSansBoldItalic.svg') format('svg') ; fuente-peso: negrita; estilo de fuente: cursiva; } NotaSí, eso es mucho código. Si prefiere no escribir todo eso, los ejemplos de este capítulo incluyen un archivo llamadoat-font-face.css. Puede abrirlo, copiar el código desde allí y pegarlo en su hoja de estilo. Ir a www.sawmac.com/css3. En pocas palabras, ha creado una nueva familia de fuentes llamada PTSans. Podrás usarlo en cualquier nuevo estilo que crees. Está utilizando el método descrito en la página 141 para agregar las variantes en negrita y cursiva de la fuente. Este método significa que siempre que aplique una etiqueta en negrita normal al texto (como un título o el <fuerte>etiqueta), el navegador cambiará automáticamente la versión en negrita de la fuente. (Este método no funciona en IE 8, que pone el texto en negrita y cursiva artificialmente en lugar de cambiar las versiones en negrita o cursiva de la fuente). A continuación, creará un estilo que defina algunas propiedades generales para todo el texto de la página. 6.Después de los cuatro @Perfil delanterodirectivas, presione Entrar y escribahtml {. Este es un selector de etiquetas básico que se aplica a <html>etiqueta. Como se discutió en el Capítulo 4, otras etiquetas heredan las propiedades de esta etiqueta. Puede configurar algunas características básicas del texto, como la fuente, el color y el tamaño de la fuente, para que las etiquetas posteriores las utilicen como punto de partida. 7.Vuelva a pulsar Intro y, a continuación, agregue las dos propiedades siguientes: familia de fuentes: PTSans, Arial, sans-serif; tamaño de fuente: 62,5%; Estas dos instrucciones establecen la fuente en PTSans (o Arial si el navegador no puede descargar PTSans) y el tamaño de fuente en 62,5 por ciento. Nota¿Por qué establecer la fuente base de la página en 62,5 por ciento? Da la casualidad de que el 62,5 por ciento multiplicado por 16 píxeles (el tamaño normal del texto en la mayoría de los navegadores web) es igual a 10 píxeles. Con 10 píxeles como punto de partida, es fácil calcular cómo se verán otros tamaños de texto en la pantalla. Por ejemplo, 1,5 em sería 1,5 x 10 o 15 píxeles. 2em son 20 píxeles, y así sucesivamente, múltiplos fáciles de diez. Para obtener más información sobre este interesante descubrimiento y más estrategias de tamaño de fuente, visitehttp://clagnut.com/blog/348/. Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 181 Tutorial: TEXTO FORMATO en acción 8.Complete este estilo presionando Intro y escribiendo un corchete de cierre para marcar el final del estilo. En este punto, su estilo completo debería verse así: html { familia de fuentes: PTSans, Arial, sans-serif; tamaño de fuente: 62,5%; } Su hoja de estilo está completa. 9.Guarde la página y ábrala en un navegador web para obtener una vista previa de su trabajo. El texto de la página cambia de fuente... también se vuelve muy pequeño. No se preocupe, ese es el tamaño de fuente del 62,5 por ciento que configuró en el Paso 7. Ese es solo el punto de partida para todo el texto, y aumentará fácilmente el tamaño del texto definiendo tamaños em para las otras etiquetas. Dar formato a los encabezados y párrafos Ahora que se ha realizado el formato básico del texto, es hora de refinar la presentación de los títulos y párrafos. 1.Regrese a su editor de texto y eltexto.htmlarchivo.Haga clic al final de la llave de cierre del selector de etiquetas del cuerpo en la hoja de estilo interna, presione Entrar (Retorno) para crear una nueva línea y luego escriba .principal h1 {. Esto es unselector de descendientes(página 88). Proporciona una dirección más específica que un selector de etiquetas HTML básico. En este caso, el selector le dice al navegador web “aplica el siguiente formato a cualquier <h1>etiqueta dentro de otra etiqueta con el nombre de la clase principal."Si observa el HTML de la página, verá que hay un <div>etiqueta con una clase de principal (<clase div="principal">).Como aprenderá más adelante, es muy común en los diseños basados en CSS agrupar etiquetas HTML dentro de etiquetas <div>. A continuación, puede posicionar < individualesdiv>etiquetas para crear columnas y otros diseños de página complejos. También es común usar selectores descendientes como este para identificar sus opciones de formato al afectar solo las etiquetas en ciertas áreas de la página. 2.Presiona Enter y luego escribe estas tres propiedades CSS: color: rgb(252,102,0); familia de fuentes: "Arial Black", Arial, Helvetica, sans-serif; tamaño de fuente: 4em; Acabas de cambiar el color de la etiqueta <h1> así como la fuente. Esta vez, en lugar de usar una fuente web, está especificando una fuente que el visitante debe tener instalada en su computadora. Muchas computadoras tienen Arial Black, pero si la que visita esta página no la tiene, recurrirá a Arial o Helvetica o simplemente a un sans serif genérico. También ha establecido el tamaño de fuente en4em,que para la mayoría de los navegadores (a menos que el visitante haya modificado la configuración de fuente de su navegador) tiene una altura de 40 píxeles. Eso es todo gracias a la62,5%que configuró para el cuerpo en el Paso 7. Ese movimiento suave hizo que el tamaño de fuente base tuviera 10 píxeles de alto, por lo que 4 x 10 resulta en 40 píxeles. A continuación, agregará una sombra de texto al título. 182 Css3: el manual perdido www.it-ebooks.info Tutorial: TEXTO 3.Complete este estilo presionando Enter, agregando el codificado en negrita a continuación (no olvide la llave de cierre): FORMATO en acción . principal h1 { color: rgb(252,102,0); familia de fuentes: "Arial Black", Arial, Helvetica, sans-serif; tamaño de fuente: 4em; sombra de texto: 4px 3px 6px rgba(0,0,0,.5); } Aquí, ha agregado una sombra de texto (página 166), que está desplazada 4 píxeles hacia la derecha, 3 píxeles hacia abajo y está difuminada 6 píxeles. Además, está utilizando el color RGBA (página 155) para establecer la sombra en negro con un 50 por ciento de transparencia. 4.Guarde el archivo y obtenga una vista previa en un navegador web. A continuación, arregla la apariencia de los demás títulos y párrafos. 5.Regrese a su editor de texto y eltexto.htmlarchivo.Haga clic después de la llave de cierre del . principal h1etiqueta, presiona Enter y agrega los siguientes dos estilos: . principal h2 { fuente: negrita 3,5em "Hoefler Text", Garamond, Times, serif; borde inferior: 1px rgb sólido (200,200,200); margen superior: 25px; } Aquí tienes otro selector de descendientes que solo se aplica a <h2>etiquetas dentro de otra etiqueta con la clase principal (probablemente ya te estés acostumbrando). La propiedad de la fuente que se usa aquí es una abreviatura que combina el estilo más extenso peso de fuente, tamaño de fuente,yFamilia tipográfica (véase el recuadro de la página 170). En otras palabras, esta única línea pone el título en negrita, mide 3,5 ems de alto y especifica una fuente. Además, este estilo agrega un borde decorativo debajo del título y un poco de espacio entre el título y la etiqueta encima (en otras palabras, agrega un poco de espacio entre los títulos "CSS The Missing Manual" y "Exploring Typographic Possibilities" ). Leerá más sobre bordes y márgenes en el próximo capítulo. Es hora de abordar más titulares. 6.Agregue otro estilo debajo del que agregó en el último paso: . principal h3 { color: rgb(255,102,0); tamaño de fuente: 1,9 em; fuente-peso: negrita; transformación de texto: mayúsculas; margen superior: 25px; margen inferior: 10px; } Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 183 Tutorial: TEXTO FORMATO en acción Este estilo ofrece algunos de los formatos habituales (color, tamaño, negrita) y también utiliza eltransformación de textopropiedad (página 163) para hacer que todo el texto en el <h3>titulares en mayúsculas. Finalmente, agrega un poco de espacio arriba y debajo de los titulares usando elmargenpropiedades. A continuación, mejorará el aspecto de los párrafos. 7.Agregue un estilo más a la página: . p principal { tamaño de fuente: 1,5 em; altura de línea: 150%; margen izquierdo: 150px; margen derecho: 50px; margen inferior: 10px; } Este estilo introduce laaltura de la líneapropiedad, que establece el espaciado entre líneas. Un porcentaje de 150 agrega un poco más de espacio entre líneas en un párrafo de lo que normalmente vería en un navegador web. Este respiro adicional le da al texto una calidad más ligera y aireada y hace que las oraciones sean un poco más fáciles de leer (pero solo si hablas latín). El estilo también aumenta el tamaño de la fuente para1,5 em (15 píxeles para la mayoría de los navegadores) y sangra el párrafo desde los bordes izquierdo y derecho de la página. Notará que hay mucho que escribir para las propiedades de margen; afortunadamente, como leerá en la página 184 en el próximo capítulo, hay una propiedad de atajo de margen que requiere mucho menos tipeo para controlar los cuatro márgenes de un elemento. . Es hora de probar un tipo de selector más avanzado. 8.Agregue el siguiente estilo a su hoja de estilo: . principal p:primera línea { font-weight: bold; color: rgb (153,153,153); } El :primera lineapseudo-elemento (página 172) afecta sólo a la primera línea de un párrafo. En este caso, solo la primera línea de texto de cada uno de los párrafos dentro del div principal estará en negrita y gris. 9.Guarde la página y ábrala en un navegador web para obtener una vista previa de su trabajo. En este punto, la página debería parecerse a la Figura 6-20. 184 Css3: el manual perdido www.it-ebooks.info Tutorial: TEXTO FORMATO en acción Figura 6-20 La página está empezando a juntarse. Los títulos, párrafos y configuraciones básicas de texto están en su lugar. Dependiendo de las fuentes que tenga en su computadora, puede notar ligeras diferencias entre su diseño y el que se muestra aquí. Específicamente, si está en Windows, la opción "Exploring Typographic El titular de Posibilidades utilizará Garamond o Arial. Esta imagen, tomada en una Mac, usa la familia de fuentes Hoefler Text especificada en el Paso 5 en la página 183. Formateo de listas Esta página tiene una sola lista con viñetas. El plan es mover la lista al borde derecho de la página y hacer que el texto que la sigue la envuelva. CSS hace que este pequeño truco sea fácil. 1.Regrese a su editor de texto y eltexto.htmlarchivo.Agregue el siguiente estilo al final de la hoja de estilo interna de la página: . principal ul { margen: 50px 0 25px 50px; ancho: 170px; flotar derecho; } Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 185 Tutorial: TEXTO FORMATO en acción Al dar formato a las listas, normalmente creará estilos para dos elementos diferentes: la lista en sí (ya sea el <ul>etiqueta para listas con viñetas o <viejo>etiqueta para listas numeradas) y los elementos de lista individuales (el <li>etiqueta). Este estilo controla toda la lista. Hay algunas cosas que suceden en este estilo. Primero elmargenpropiedad utiliza el método abreviado. Esta línea establece los cuatro márgenes alrededor de la lista, reemplazando las cuatro propiedades de margen individuales (margen superior,margen derecho,etcétera). Los cuatro valores están ordenados así: arriba, derecha, abajo, izquierda. Entonces, para este estilo, se agregan 50 píxeles de espacio arriba de la lista, 0 espacio a la derecha, 25 píxeles en la parte inferior y 50 píxeles a la izquierda. Elancho(discutida en detalle en la página 212) hace que la lista completa tenga 150 píxeles de ancho. Si algún elemento de la lista en particular tiene más texto del que cabe en ese espacio, se ajusta a otra línea. Elflotarla propiedad es la verdadera magia—en este caso,flotar derecho significa mover la lista al borde derecho de la página. Esta propiedad también hace que el texto que sigue a la lista se ajuste al lado izquierdo de la lista. Es un truco genial y aprenderás mucho más sobre los flotadores en la página 220. A continuación, controlará el aspecto de los elementos individuales de la lista. 2.Agregue un estilo más a la hoja de estilo interna en eltexto.htmlarchivo: . li principal { color: rgb (32,126,191); tamaño de fuente: 1,5 em; margen inferior: 7px; } Nada nuevo aquí: simplemente cambiando el color y el tamaño y agregando espacio debajo de cada elemento de la lista. Es hora de comprobar tu progreso. NotaSi desea agregar espacio entre los elementos de la lista, debe agregar márgenes superior o inferior al <li> etiqueta. Agregando márgenes al <ul>o <viejo>las etiquetas simplemente agregan espacio alrededor de toda la lista. 3.Guarde la página y obtenga una vista previa en un navegador web. La página ahora debería verse como la Figura 6-21. 186 Css3: el manual perdido www.it-ebooks.info Tutorial: TEXTO FORMATO en acción Figura 6-21 Elflotarla propiedad te da algo interesante opciones de diseño En este caso, la lista con viñetas flota en el borde derecho de la página. De hecho, el flotarLa propiedad es tan útil que verá que es el ingrediente principal de los diseños basados en CSS, como los que aprenderá en el Capítulo 12. Ajuste fino con clases A veces desea tener aún más control sobre cómo se aplica un estilo. Por ejemplo, si bien es posible que desee que la mayoría de los párrafos en una sección de la página tengan el mismo aspecto, también puede desear que uno o dos párrafos tengan su propia apariencia única. En este tutorial, el párrafo de texto cerca de la parte superior de la página, "30 de noviembre, Rod Dibble", contiene información única: la fecha de publicación y el autor. Desea que se destaque de los demás párrafos, por lo que agregará una clase al HTML y creará un estilo de clase. Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 187 Tutorial: TEXTO FORMATO en acción 1.Busque el código HTML de ese párrafo—<p>30 de noviembre <strong>Rod Dibble</ strong></p>—y añadirclase = "línea de autor"a la apertura <p>etiqueta.El HTML debería verse así: <p class="byline">30 de noviembre <strong>Rod Dibble</strong></p> Ahora se trata simplemente de crear un estilo de clase que invalide el formato genérico de los demás párrafos de la página. 2.En la hoja de estilo interna cerca de la parte superior de la página, agregue un estilo para ese párrafo: . principal .byline { tamaño de fuente: 1.6em; margen: 5px 0 25px 50px; } Este estilo ajusta el tamaño y la ubicación de solo ese párrafo. Tenga en cuenta que si acaba de nombrar ese estilo.línea de autor—un selector de clase básico: no funcionaría. Gracias a las reglas de la cascada descritas en el último capítulo, .línea de autores menos específico (menos poderoso) que el .p principalestilo que creó en el Paso 7 en la página 184, por lo que no podría anular el tamaño y los márgenes especificados por .página principal Sin embargo, . principal .bylinees más específico. Ese párrafo todavía necesita algo de trabajo. Sería genial que el nombre destacara más. El HTML en este caso proporciona justo el gancho que necesita. 3.Agregue otro estilo a la hoja de estilo: . . principal .byline strong { color: rgb(32,126,191); transformación de texto: mayúsculas; margen izquierdo: 11px; } Si observa el HTML en el Paso 1 anterior, verá que el nombre, Rod Dibble, está dentro de un <fuerte> etiqueta. El <fuerte>La etiqueta se utiliza para enfatizar el texto y marcarlo como importante. Pero eso no significa que deba dejar que esté en negrita, de la forma en que los navegadores web normalmente muestran esa etiqueta. En su lugar, este selector descendente tiene como objetivo el <fuerte>etiqueta pero solo cuando aparece dentro de otra etiqueta con la clase . línea de autor,y solo si todo eso está dentro de otra etiqueta con la claseprincipal- Vaya, eso es bastante específico. Este estilo convierte el texto en azul, lo pone en mayúsculas y agrega un poco de espacio en el lado izquierdo (empujando el nombre un poco sobre el texto "30 de noviembre"). Agregar los toques finales Para la última parte del diseño, incorporará algunos toques de diseño que dan formato a la página y ese div principal para que ambos se vean mejor. Luego terminará con un poco de formateo de texto. 188 Css3: el manual perdido www.it-ebooks.info Traducido del inglés al español - www.onlinedoctranslator.com Tutorial: TEXTO FORMATO en acción 1.Busque el código HTML de ese párrafo—<p>30 de noviembre <strong>Rod Dibble</ strong></p>—y añadirclase = "línea de autor"a la apertura <p>etiqueta.El HTML debería verse así: <p class="byline">30 de noviembre <strong>Rod Dibble</strong></p> Ahora se trata simplemente de crear un estilo de clase que invalide el formato genérico de los demás párrafos de la página. 2.En la hoja de estilo interna cerca de la parte superior de la página, agregue un estilo para ese párrafo: . principal .byline { tamaño de fuente: 1.6em; margen: 5px 0 25px 50px; } Este estilo ajusta el tamaño y la ubicación de solo ese párrafo. Tenga en cuenta que si acaba de nombrar ese estilo.línea de autor—un selector de clase básico: no funcionaría. Gracias a las reglas de la cascada descritas en el último capítulo, .línea de autores menos específico (menos poderoso) que el .p principalestilo que creó en el Paso 7 en la página 184, por lo que no podría anular el tamaño y los márgenes especificados por .página principal Sin embargo, . principal .bylinees más específico. Ese párrafo todavía necesita algo de trabajo. Sería genial que el nombre destacara más. El HTML en este caso proporciona justo el gancho que necesita. 3.Agregue otro estilo a la hoja de estilo: . . principal .byline strong { color: rgb(32,126,191); transformación de texto: mayúsculas; margen izquierdo: 11px; } Si observa el HTML en el Paso 1 anterior, verá que el nombre, Rod Dibble, está dentro de un <fuerte> etiqueta. El <fuerte>La etiqueta se utiliza para enfatizar el texto y marcarlo como importante. Pero eso no significa que deba dejar que esté en negrita, de la forma en que los navegadores web normalmente muestran esa etiqueta. En su lugar, este selector descendente tiene como objetivo el <fuerte>etiqueta pero solo cuando aparece dentro de otra etiqueta con la clase . línea de autor,y solo si todo eso está dentro de otra etiqueta con la claseprincipal- Vaya, eso es bastante específico. Este estilo convierte el texto en azul, lo pone en mayúsculas y agrega un poco de espacio en el lado izquierdo (empujando el nombre un poco sobre el texto "30 de noviembre"). Agregar los toques finales Para la última parte del diseño, incorporará algunos toques de diseño que dan formato a la página y ese div principal para que ambos se vean mejor. Luego terminará con un poco de formateo de texto. 188 Css3: el manual perdido www.it-ebooks.info Tutorial: TEXTO 1.Regrese a su editor de texto y eltexto.htmlarchivo. Primero, agregará un color de fondo y una imagen a la página. FORMATO en acción 2.Localiza elhtmlestilo cerca de la parte superior de la hoja de estilo interna y agregue una nueva propiedad para que se vea así (los cambios están en negrita): html { tamaño de fuente: 62,5%; familia tipográfica: Arial, Helvetica, sans-serif; fondo: rgb(225,238,253) url(images/bg_body.png) repetir-x; } Elfondoproperty es una herramienta poderosa para cualquier diseñador web. Ya lo ha usado un par de veces en tutoriales anteriores; le permite agregar color e insertar y controlar la ubicación de una imagen en el fondo de cualquier etiqueta. Aprenderá los entresijos de esta propiedad en la página 255, pero por ahora esta línea cambia el color de fondo de la página a azul claro y agrega una franja azul oscuro en la parte superior de la página. A continuación, arreglará el div principal. 3.Agregue otro estilo entre loshtmlestilo y el.principal h1estilo: . principal { ancho: 740px; margen: 0 automático; relleno: 0 10px; borde: 4px blanco sólido; fondo: url transparente (images/bg_banner.jpg) sin repetición; } En otras palabras, haga clic después del cierre } para elhtmlestilo, presione Entrar y escriba el código de arriba. No necesariamente tiene que poner el estilo en ese lugar para que funcione, pero por motivos de organización, tiene sentido poner el estilo que controla el div antes que los otros estilos que dan formato a las etiquetas dentro de ese div. ElanchoLa propiedad establece un ancho general para este div (y el contenido dentro de él), esencialmente convirtiendo esta página en un documento de 740 píxeles de ancho. Elmargen valores de propiedad-0 automático—coloque 0 píxeles de espacio encima y debajo del div y establezca los márgenes izquierdo y derecho enauto,que centra el div en el medio de la ventana del navegador. ElrellenoLa propiedad agrega espacio dentro del cuadro, empujando el contenido dentro del div lejos de la línea del borde. Finalmente, ha colocado una imagen en el fondo del div. Esos dos últimos estilos no tienen nada que ver con el formato del texto, pero si obtienes una vista previa de la página, verás que hacen que se vea mucho mejor... excepto por esos dos titulares principales. El primer título no es lo suficientemente audaz y el segundo debe estar debajo del gráfico recién agregado. Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 189 Tutorial: TEXTO FORMATO en acción 4.Agrega un último estilo justo después del .principal h1estilo: . principal h1 fuerte { tamaño de fuente: 150px; color blanco; altura de línea: 1em; margen derecho: -1,25em; } El HTML para el título se ve así: <h1><strong>CSS</strong> El Manual Perdido</h1> El "CSS" está encerrado dentro de <fuerte>etiquetas, por lo que este selector descendiente formatea solo ese texto (en ese sentido, es como el estilo que agregó en el Paso 3 en la página 188 que aprovechó un <fuerte>etiqueta incrustada dentro de un párrafo). El tamaño del texto aumenta, su color cambia y la altura de la línea se ajusta para que quepa dentro de la parte superior de la página. Notará que la altura de la línea se establece en 1 em (como leyó en la página 160, un em se basa en el tamaño de fuente actual del elemento), por lo que en este caso, la altura de la línea se traducirá en 150 píxeles, esa es la tamaño de fuente de este estilo. El único truco genial es elmargen derechopropiedad, que se establece en un valor negativo: – 1,25 em.Dado que un margen positivo aleja los elementos, un margen negativo en realidad los coloca uno encima del otro. En este caso, el resto del texto del título, "El manual perdido", se desplaza sobre 1,25 em, que es 1,25 veces el tamaño de la fuente (150 píxeles), encima del texto "CSS". NotaLos márgenes negativos son CSS perfectamente legales (aunque engañosos). Incluso se usan para algunos diseños CSS bastante avanzados, como se describe en la página 199. 5.Guarde el archivo y obtenga una vista previa en un navegador web. Debería parecerse a la Figura 6-22. Puedes comparar tu trabajo con el acabado. texto.htmlpágina ubicada en el06_terminadocarpeta. ¡Felicidades! Ha explorado muchas de las propiedades de formato de texto que ofrece CSS y ha convertido HTML aburrido en un diseño atractivo que llama la atención. En el próximo capítulo, explorará gráficos, bordes, márgenes y otras potentes opciones de diseño CSS que ofrece CSS. 190 Css3: el manual perdido www.it-ebooks.info Tutorial: TEXTO FORMATO en acción Figura 6-22 Con un poco de CSS, puede convertir texto sin formato en una poderosa declaración de diseño que ayude guiar a los lectores a través de la información de su sitio. Capítulo 6:FORMATO DE TEXTO www.it-ebooks.info 191 www.it-ebooks.info Capítulo 7 7 márgenes, relleno, y Fronteras mi Cada etiqueta HTML está rodeada por un mundo de propiedades que afectan cómo aparece la etiqueta en un navegador web. Algunas propiedades, como los bordes y los colores de fondo, son inmediatamente evidentes a simple vista. Otros, sin embargo, son invisibles, como el relleno y el margen. Proporcionan un poco de espacio vacío en uno o más lados de una etiqueta. Al comprender cómo funcionan estas propiedades, puede crear columnas atractivas y barras laterales decorativas y controlar el espacio que las rodea (lo que los diseñadores llamanespacio en blanco) para que sus páginas se vean menos abarrotadas, más claras y más profesionales. En conjunto, las propiedades de CSS discutidas en este capítulo conforman uno de los conceptos más importantes en CSS: elmodelo de caja. Comprender el modelo de caja Probablemente pienses en letras, palabras y oraciones cuando piensas en un párrafo o titular. Probablemente también pienses en una foto, logotipo u otra imagen cuando piensas en el <imagen> etiqueta. Pero un navegador web trata estas (y todas las demás) etiquetas como poco cajas. Para un navegador, cualquier etiqueta es un cuadro con algo dentro: texto, una imagen o incluso otras etiquetas que contienen otras cosas, como se ilustra en la Figura 7-1. Rodeando el contenido se encuentran diferentes propiedades que componen la caja: • rellenoes el espacio entre el contenido y el borde del contenido. El relleno es lo que separa una foto del borde que la enmarca. • bordees la línea que se dibuja alrededor de cada borde de la caja. Puede tener un borde alrededor de los cuatro lados, en un solo lado o en cualquier combinación de lados. 193 www.it-ebooks.info comprensión EL MODELO DE CAJA • color de fondollena el espacio dentro del borde, incluyendo el área de relleno. • margenes lo que separa una etiqueta de otra. El espacio que suele aparecer entre la parte superior e inferior de los párrafos de texto en una página web, por ejemplo, es el margen. Para una etiqueta dada, puede usar cualquiera o todas estas propiedades en combinación. Puede establecer solo un margen para una etiqueta o agregar un borde, márgenes,yrelleno. O puede tener un borde y un margen pero sin relleno, y así sucesivamente. Si no ajusta ninguna de estas propiedades, terminará con la configuración del navegador, que puede gustarle o no. Por ejemplo, aunque los navegadores normalmente no aplican relleno ni bordes a las etiquetas de una página, algunas etiquetas, como los encabezados y los párrafos, tienen un margen superior e inferior preestablecido. Figura 7-1 El modelo de caja CSS incluye el contenido dentro de una etiqueta (por ejemplo, varias oraciones de texto) más relleno, bordes y márgenes. El área dentro del borde, que incluye el contenido y el relleno, también puede tener un color de fondo. En realidad, el color de fondo se dibuja debajo del borde, por lo que cuando asigna un borde discontinuo o punteado, el color de fondo aparece en los espacios entre los puntos o guiones. 194 Css3: el manual perdido www.it-ebooks.info NotaComo se discutió en la página 548, debido a que diferentes navegadores aplican diferentes cantidades de relleno y margen a las mismas etiquetas, es mejor "poner a cero" los valores de relleno y margen para todas las etiquetas. En otras Controlador ESPACIO CON márgenes y relleno palabras, use un conjunto de estilos simples, llamado reinicio de CSS, para eliminar el relleno y el margen de las etiquetas HTML. Luego, cuando cree estilos adicionales que agreguen margen y relleno, puede estar seguro de que tendrá una presentación uniforme entre navegadores. Controlando el espacio con márgenes y relleno Tanto los márgenes como el relleno agregan espacio alrededor del contenido. Utilice estas propiedades para separar un elemento de otro, por ejemplo, para agregar espacio entre un menú de navegación a la izquierda y el contenido de la página principal a la derecha, o para inyectar un espacio en blanco entre el contenido y un borde. Es posible que desee alejar el borde del borde de una foto (consulte la Figura 7-2). Figura 7-2 Cada foto de esta página tiene un margen de 10 píxeles, por lo que el espacio que separa dos fotos es de 20 píxeles. El relleno separa las imágenes de sus bordes y expone un color de fondo gris. Puede establecer el borde, el margen y el relleno de forma independiente para cada borde. Observe el relleno más grande aplicado al borde inferior de cada foto. El relleno y el margen funcionan de manera similar y, a menos que aplique un borde o un color de fondo, realmente no puede saber si el espacio entre dos etiquetas es causado por el relleno o por un margen. Pero si tiene un borde alrededor de un elemento o un fondo detrás, la diferencia visual entre las dos propiedades es significativa. El relleno agrega espacio entre el contenido y el borde y evita que el contenido aparezca apretado dentro del cuadro; también incluye el área de fondo, por lo que el espacio ocupado por el relleno puede estar vacío de contenido (como texto o una foto), pero aún se llenará con una imagen o un color de fondo. Los márgenes, por otro lado, agregan espacios en blanco (a menudo llamadoscanal) entre elementos, dando al aspecto general de la página una apariencia más clara. Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 195 Controlador ESPACIO CON márgenes y relleno Puede controlar cada lado del margen o relleno de un elemento de forma independiente. Cuatro propiedades controlan los bordes del margen:margen superior, margen derecho, margen inferior, y margen izquierdo.Del mismo modo, cuatro propiedades controlan el relleno:acolchado superior, acolchado derecho, acolchado inferior,yrelleno-izquierda.Puede usar cualquier medida de CSS válida para definir el tamaño de un margen o relleno, así: margen derecho: 20px; acolchado superior: 3em; margen izquierdo: 10%; Los píxeles y ems se usan comúnmente y actúan como lo hacen con el texto (consulte la página 160). Un margen de 20 píxeles agrega 20 píxeles de espacio, y 3 ems de relleno agregan un espacio equivalente a 3 veces el tamaño de fuente del elemento con estilo. También puede usar valores porcentuales, pero son complicados. (Consulte el cuadro a continuación para obtener más detalles). NotaPara eliminar todo el espacio para un margen o relleno, use 0 (margen superior: 0oparte inferior del relleno: 0,Por ejemplo). Para eliminar el espacio alrededor de los cuatro bordes de la ventana del navegador, para permitir que un banner, un logotipo u otro elemento de la página llegue hasta el borde sin dejar espacios, asigne a la etiqueta del cuerpo un margen de 0 y un relleno de 0: margen: 0; relleno 0;. CLÍNICA DE USUARIOS ELÉCTRICOS Márgenes, relleno y porcentajes Cuando utiliza porcentajes, los navegadores web calculan la cantidad de Es posible que desee agregar un <div>etiqueta a una página para agrupar el espacio en función de laancho del elemento contenedor. En una página contenido relacionado en un área de la barra lateral. (Verá un ejemplo de esto web simple, el elemento contenedor es el cuerpo de la página y llena la en el tutorial en la página 225). Esa barra lateral puede tener un ancho ventana del navegador. En este caso, el valor del porcentaje se basa en específico de 300 píxeles. Las etiquetas dentro de la barra lateral consideran el el ancho de la ventana del navegador en un momento dado. Digamos <div>etiquetar su elemento contenedor. Entonces, una etiqueta en la barra que la ventana tiene 760 píxeles de ancho. En ese caso, un margen lateral con un margen derecho del 10 % tendrá 30 píxeles de espacio vacío a su izquierdo del 10 % agrega 76 píxeles de espacio al borde izquierdo del derecha. elemento con estilo. Pero si cambia el tamaño de la ventana del navegador, ese valor cambia. Reducir la ventana del navegador a 600 píxeles cambia el margen a 60 píxeles (10 por ciento de 600). Para hacer las cosas más confusas, los valores porcentuales superior e inferior se calculan en función del ancho del elemento contenedor, no de su altura. Entonces, un margen superior del 20 % es el 20 % del Sin embargo, el elemento contenedor no siempre tiene el ancho de la ancho del contenedor de la etiqueta con estilo. ventana del navegador. Como verá en capítulos posteriores, cuando crea diseños más sofisticados, puede introducir nuevos elementos que ayuden a organizar su página. Taquigrafía de margen y relleno Con frecuencia querrá configurar los cuatro lados del margen o relleno de un estilo. Pero escribiendo las cuatro propiedades (margen derecho, margen izquierdo,y así sucesivamente) para cada estilo se vuelve tedioso. No temas: puedes usar las propiedades de acceso directo llamadasmargenyrelleno para establecer las cuatro propiedades rápidamente: 196 Css3: el manual perdido www.it-ebooks.info Controlador ESPACIO CON márgenes y relleno margen: 0 10px 10px 20px; relleno: 10px 5px 5px 10px; NotaSi el valor utilizado en una propiedad CSS es 0, entonces no necesita agregar una unidad de medida. Por ejemplo, simplemente escribamargen: 0;en lugar demargen: 0px;. El orden en que especifica los cuatro valores es importante. debe serarriba, derecha, abajo,y izquierda.Si te equivocas, estarás en problemas. De hecho, la manera más fácil de mantener el orden en orden es recordar mantenerse al margen.TRUNEDlicenciado en Derechoe—arriba, derecha, abajo e izquierda. Si desea usar el mismo valor para los cuatro lados, es aún más fácil: solo use un valor único. Si desea eliminar los márgenes de todos los <h1>etiquetas, puede escribir este estilo: h1 { margen: 0; } Del mismo modo, use la abreviatura para agregar la misma cantidad de espacio entre algún contenido y su borde: relleno: 10px; NotaCuando usa el mismo valor para la parte superior e inferior y otro valor para la izquierda y la derecha, puede usar dos valores.margen: 0 2em;establece la parte superiorymárgenes inferiores a 0 y a la izquierdaymárgenes derechos a 2 ems. Del mismo modo, si los márgenes superior e inferior (o relleno) difieren, pero el izquierdo y el derecho siguen siendo los mismos, puede utilizar tres valores. Por ejemplo,margen: 0 2em 1em;establece el margen superior en 0, los márgenes izquierdo y derecho en 2 ems y el margen inferior en 1 em. Márgenes en conflicto Cuando se trata de CSS, dos más dos no siempre son cuatro. Podría encontrarse con algunas matemáticas extrañas cuando el margen inferior de un elemento toca el margen superior de otro. En lugar de sumar los dos márgenes, un navegador web aplica el mayor de los dos márgenes (Figura 7-3, arriba). Digamos que el margen inferior de una lista desordenada se establece en 30 píxeles y el margen superior de un párrafo que sigue a la lista es de 20 píxeles. En lugar de sumar los dos valores para crear 50 píxeles de espacio entre la lista y el párrafo, un navegador web usa elmás grandemargen, en este caso 30 píxeles. Si no desea que esto suceda, utilice en su lugar el relleno superior o inferior (Figura 7-3, parte inferior). Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 197 Controlador ESPACIO CON márgenes y relleno Figura 7-3 Cuando dos márgenes verticales se encuentran, el más pequeño colapsa. Aunque el título superior tiene un margen inferior de 20 píxeles y el párrafo tiene un margen superior de 15 píxeles, un navegador web agrega solo 20 píxeles de espacio entre los dos elementos. Para obtener el espacio completo de 35 píxeles que desea, use relleno en lugar de márgenes, como se muestra en el título inferior. Aquí, el encabezado tiene 20 píxeles de relleno inferior. Esos 20 píxeles se agregan al margen superior de 15 píxeles del párrafo para formar un espacio de 35 píxeles. Las cosas se vuelven aún más extrañas cuando un elemento esadentrootro elemento Esta situación puede conducir a un comportamiento de rascarse la cabeza. Por ejemplo, supongamos que agrega un cuadro de "advertencia" a una página (como un <div>etiqueta para contener un mensaje de advertencia en su interior). Agrega un margen superior e inferior de 20 píxeles para separar el cuadro de advertencia del encabezado que se encuentra arriba y el párrafo de texto que se encuentra debajo. Hasta ahora, todo bien. Pero supongamos que inserta un encabezado dentro del cuadro de advertencia, y para dejar un pequeño espacio entre él y la parte superior e inferior del div, establece el margen del encabezado en 10 píxeles. Puede pensar que está agregando 10 píxeles de espacio entre el encabezado y la parte superior e inferior del div, pero estaría equivocado (Figura 7-4, arriba). En su lugar, el margen aparece arribael div. En este caso, no importa qué tan grande sea el margen que aplique al título: el margen seguirá apareciendoarribael div. NotaEn la jerga de CSS, este fenómeno se conoce comomárgenes colapsados, lo que significa que dos márgenes en realidad se convierten en uno. Tiene dos formas de solucionar este problema: agregue una pequeña cantidad de relleno alrededor de la etiqueta <div> o agregue un borde. Dado que el borde y el relleno se sientan entre los dos márgenes, los márgenes ya no se tocan, y el titular tiene un pequeño respiro (Figura 7-4, abajo). NotaLos márgenes horizontales (izquierdo y derecho) y los márgenes entre elementos flotantes no se colapsan de esta manera. Los elementos posicionados de forma absoluta y relativa, sobre los que aprenderá en el Capítulo 15, tampoco colapsan. 198 Css3: el manual perdido www.it-ebooks.info Eliminación de espacios con márgenes negativos La mayoría de las medidas en CSS tienen que ser un valor positivo; después de todo, ¿qué Controlador ESPACIO CON márgenes y relleno texto sería eso?20 píxeles negativosalto (o bajo) parece? El relleno también tiene que ser un valor positivo. Pero CSS permite muchas técnicas creativas usando márgenes negativos. Figura 7-4 ¡Santos márgenes cada vez más reducidos, Batman! Arriba: siempre que los márgenes verticales se toquen, incluso cuando un elemento está dentro de otro elemento (como el<h2>etiqueta dentro de este div), los márgenes colapsan. Inferior: para resolver este dilema, agregue un pequeño relleno o un borde alrededor del elemento contenedor (1 píxel de relleno superior e inferior en el<div>, en este caso). En lugar de agregar espacio entre una etiqueta y los elementos que la rodean, un margen negativo eliminaespacio. Por lo tanto, puede hacer que un párrafo de texto se superponga a un título, sobresalga del elemento que lo contiene (una barra lateral u otro diseño <división>),o incluso desaparecer de un borde de la ventana del navegador. Y, oye, incluso puedes hacer algo útil con márgenes negativos. Incluso cuando establece los márgenes entre dos titulares en 0, todavía hay un pequeño espacio entre el texto de los titulares (gracias a la altura de la línea del texto, como se describe en la página 168). Eso suele ser algo bueno, ya que es difícil leer oraciones que se juntan y se tocan. Pero, si se usa con moderación, reducir el espacio entre dos titulares puede producir algunos efectos interesantes. El segundo título de la Figura 7-5 (el que comienza con "Criar atún") tiene un margen superior de –10px aplicado. Esto mueve el título hacia arriba 10 píxeles para que se superponga ligeramente al espacio ocupado por el título que se encuentra arriba. Además, los bordes izquierdo y derecho de la ventana “¡Extra! ¡Extra!" titular en realidad toca las letras del titular más grande. También puede utilizar un margen negativo para simular un relleno negativo. En el tercer titular de la figura 7-5, el que comienza con “La técnica extraordinaria”, aparece una línea directamente debajo del texto. Esta línea es en realidad laarribaborde para el párrafo que sigue. (Aprenderá cómo agregar bordes en la página 202). Pero debido a que ese párrafo tiene un margen superior negativo, el borde se mueve hacia arriba y debajo del título. Date cuenta cómo Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 199 Controlador ESPACIO CON márgenes y relleno la cola descendente de la letra Q en el titular en realidad cuelgaabajola frontera. Dado que el relleno, el espacio entre el contenido (como esa letra Q) y un borde, no puede ser negativo, no puede mover un borde inferior hacia arriba sobre el texto o cualquier otro contenido. Pero obtienes el mismo efecto aplicando un borde al siguiente elemento y usando un margen negativo para moverlo hacia arriba. Figura 7-5 En este ejemplo, para hacer que el borde superior del último párrafo parezca que en realidad es el borde inferior del título que está encima, agregue un poco de relleno al párrafo. Alrededor de 5 píxeles de relleno superior mueven el párrafo hacia abajo desde el borde, mientras que 4 ems de relleno izquierdo sangran el texto del párrafo, permitiendo que el borde superior se extienda hasta el borde izquierdo. CONSEJODe hecho, puede usar un margen superior negativo en el párrafo o un margen inferior negativo en el título. Ambos tienen el mismo efecto de acercar el párrafo al título. En línea, en bloque y otras configuraciones de visualización Aunque los navegadores web tratan cada etiqueta como una especie de cuadro, no todos los cuadros son iguales. CSS tiene dos tipos diferentes de cajas:cajas de bloquesycajas en línea—que corresponden a los dos tipos de etiquetas—etiquetas a nivel de bloque y en línea. Anivel de bloquela etiqueta crea un descanso antes y después. El <p>La etiqueta, por ejemplo, crea un bloque que está separado de las etiquetas de arriba y de abajo. Titulares, <div>etiquetas, tablas, listas y elementos de lista son otros ejemplos de etiquetas a nivel de bloque. En línealas etiquetas no crean una ruptura antes o después de ellas. Aparecen en la misma línea que el contenido y las etiquetas junto a ellos. El <fuerte>etiqueta es una etiqueta en línea. Una palabra formateada con esta etiqueta felizmente se sienta junto a otro texto, incluso texto envuelto en otras etiquetas en línea como <em>.De hecho, se vería bastante extraño si enfatizaras una sola palabra en medio de un párrafo con el <fuerte>etiqueta y esa palabra apareció de repente en su propia línea por sí misma. Otras etiquetas en línea son <imagen>para agregar imágenes, <un> para crear enlaces y las diversas etiquetas utilizadas para crear campos de formulario. En la mayoría de los casos, CSS funciona igual para cajas en línea y cajas de bloques. Puede diseñar la fuente, el color y el fondo y agregar bordes a ambos tipos de cuadros. Sin embargo, 200 Css3: el manual perdido www.it-ebooks.info cuando se trata de márgenes y relleno, los navegadores tratan los cuadros en línea de manera diferente. Aunque puede agregar espacio a la izquierda o a la derecha de un elemento en línea Controlador ESPACIO CON márgenes y relleno usando el relleno izquierdo o derecho o los márgenes izquierdo o derecho, no puede aumentar la altura del elemento en línea con relleno o márgenes superior o inferior. En el párrafo superior de la Figura 7-6, el elemento en línea tiene un estilo con bordes, un color de fondo y 20 píxeles de margen en los cuatro lados. Pero el navegador solo agrega espacio a los lados izquierdo y derecho del elemento en línea. Figura 7-6 Agregar márgenes superior o inferior y relleno no hace que un elemento en línea sea más alto, por lo que puede encontrarse con un formato extraño. En el párrafo central, el fondo y los bordes de un enlace se superponen al texto de arriba y de abajo. El fondo aparece en la parte superior de la línea. antes del texto en línea con estilo, pero debajo de la línea que le sigue porque el navegador trata cada línea como si estuviera apilada encima de la línea anterior. Normalmente, eso no es un problema ya que las líneas de texto no suelen superponerse. Si desea que los márgenes superior e inferior y el relleno funcionen para un elemento en línea, puede usar el pantalla: bloque en línea instrucciones (abajo). Esto deja el elemento en línea, pero lo trata como un cuadro, por lo que se aplican (y obedecen) el relleno, los márgenes, los bordes y el ancho y el alto. Esto incluso funciona en Internet Explorer 7, pero solo para elementos normalmente en línea como enlaces,<fuerte>, <em>, y< lapso>etiquetas; también deberías agregaralineación vertical: medio para que IE 7 muestre el bloque en línea igual que otros navegadores. NotaUna excepción a la regla de que los elementos en línea no se hacen más altos cuando se agregan rellenos o márgenes es el <imagen> etiqueta (aunque es una etiqueta en línea). Los navegadores web expanden correctamente la altura del cuadro de la imagen para acomodar cualquier relleno y márgenes que agregue. Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 201 agregando FRONTERAS En ocasiones, es posible que desee que un elemento en línea se comporte más como un elemento a nivel de bloque y viceversa. Las listas con viñetas presentan cada elemento como su propio bloque: cada elemento de la lista se apila sobre el siguiente. Es posible que desee cambiar ese comportamiento para que los elementos de la lista aparezcan uno al lado del otro, todos en una sola línea, como en una barra de navegación (puede ver un ejemplo de uno en el cuadro de la página 307). Finalmente, es posible que desee tratar un elemento en línea como un elemento a nivel de bloque. Tal vez desee que una imagen incrustada en un párrafo esté en su propia línea, con un espacio arriba y abajo. Afortunadamente, CSS incluye una propiedad que le permite hacer exactamente eso: elmostrarpropiedad. Con él, puede hacer que un elemento a nivel de bloque actúe como un elemento en línea: pantalla: en línea; O puede hacer que un elemento en línea, como una imagen o un enlace, se comporte como un elemento a nivel de bloque: bloqueo de pantalla; NotaElmostrarproperty tiene un sinfín de opciones posibles, algunas de las cuales no funcionan en todos los navegadores. Elbloque en línea value funciona en los navegadores actuales (vea la Figura 7-6). Otro valor,ninguno,funciona en la mayoría de los navegadores y tiene muchos usos. Hace una cosa simple: oculta completamente el elemento con estilo para que no aparezca en un navegador web. Con un poco de programación JavaScript, puede hacer que un elemento oculto de esta manera se vuelva visible instantáneamente, simplemente cambiando su visualización de nuevo a cualquieraen líneaobloquear.Incluso puede hacer un elemento con una pantalla deningunoaparecer de repente usando CSS; verá un ejemplo de eso en la página 583. Adición de bordes Un borde es simplemente una línea que corre alrededor de un elemento. Como se muestra en la Figura 7-1, se encuentra entre cualquier relleno y márgenes que establezca. Un borde alrededor de cada borde puede enmarcar una imagen o marcar los límites de un banner u otro elemento de la página. Pero los bordes no necesariamente tienen que crear un cuadro completo alrededor de su contenido. Si bien puede agregar un borde a los cuatro bordes, puede agregar fácilmente un borde solo en la parte inferior o en cualquier combinación de lados. Esta flexibilidad le permite agregar elementos de diseño que no necesariamente se sienten como un borde. Por ejemplo, agregue un borde a la izquierda de un elemento, hágalo de alrededor de 1 em de grosor y se verá como una viñeta cuadrada. Un solo borde debajo de un párrafo puede funcionar como el <h> (regla horizontal) proporcionando un separador visual entre las secciones de una página. Usted controla tres propiedades diferentes de cada borde:color, ancho,yestilo.El color puede ser cualquiera de los valores de color CSS discutidos a partir de la página 154, como un número hexadecimal, una palabra clave o un valor RGB (o RGBA). El ancho de un borde es el grosor de la línea utilizada para dibujar el borde. Puede utilizar cualquier tipo de medida de CSS (excepto porcentajes) o las palabras clavedelgado, mediano,ygrueso.El método más común y fácil de entender es el de los píxeles. Finalmente, el estilo controla el tipo de línea dibujada. Hay muchos estilos diferentes y algunos se ven muy diferentes de un navegador a otro, como puede ver en la Figura 7-7. Tú 202 Css3: el manual perdido www.it-ebooks.info agregando especifique el estilo con una palabra clave. Por ejemplo,sólidodibuja una línea continua y FRONTERAS punteado crea una línea formada por guiones. CSS ofrece estos estilos:sólido, punteado, discontinuo, doble, surco, cresta, inserción, salida, ninguno,yoculto. (Ningunoyoculto funcionan de la misma manera: eliminan el borde por completo. ElningunoEl valor es útil para desactivar un solo borde. Vea el ejemplo en la página 205.) Figura 7-7 La apariencia de los estilos de borde puede variar mucho de un navegador a otro. Los navegadores de la imagen aquí están Internet Explorer 9 (arriba a la izquierda), Chrome para Windows (arriba a la derecha), Firefox para Mac (abajo a la izquierda) y Safari para Mac (abajo a la derecha). Taquigrafía de propiedad de borde Si alguna vez ha visto una lista de las diferentes propiedades de borde disponibles en CSS, puede pensar que los bordes son realmente complejos. Después de todo, hay 20 propiedades de borde diferentes, que encontrará en las siguientes secciones, además de un par que se aplican a las tablas. Pero todas estas propiedades son simplemente variaciones de un tema que brindan diferentes formas de controlar las mismas tres propiedades (color, ancho y estilo) para cada uno de los cuatro bordes. La propiedad más básica y directa esborde, que simplemente agrega cuatro bordes: borde: 4px sólido #FF0000; El estilo anterior crea un borde rojo sólido de 4 píxeles. Puede usar esta propiedad para crear un marco básico alrededor de una imagen, una barra de navegación u otro elemento que desee que aparezca como un cuadro independiente. NotaEl orden en que escribes las propiedades no importa:borde: 4px sólido #FF0000; funciona tan bien comoborde: #FF0000 sólido 4px;. Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 203 agregando FRONTERAS Dar formato a bordes individuales Puede controlar cada borde individualmente usando la propiedad apropiada:borde superior, borde inferior, borde izquierdo,oborde derecho.Estas propiedades funcionan igual que las normales.bordepropiedad, pero controlan sólo un lado. La siguiente declaración de propiedad agrega una línea discontinua roja de 2 píxeles debajo del estilo: borde inferior: 2px rojo discontinuo; Puedes combinar elbordepropiedad con una de las propiedades específicas de borde como borde izquierdopara definir el cuadro básico para todo el estilo pero personalizar un solo borde. Supongamos que desea que los lados superior, izquierdo y derecho de un párrafo tengan el mismo tipo de borde, pero desea que el borde inferior se vea ligeramente diferente. Puedes escribir cuatro líneas de CSS, así: borde superior: 2px negro sólido; borde izquierdo: 2px negro sólido; borde derecho: 2px negro sólido; borde inferior: 4px punteado #333; O bien, puede lograr el mismo efecto que las cuatro líneas anteriores de CSS con solo dos líneas: borde: 2px negro sólido; borde inferior: 4px punteado #333; La primera línea de código define el aspecto básico de los cuatro bordes y la segunda línea redefine solo el aspecto del borde inferior. No solo es más fácil escribir dos líneas de CSS en lugar de cuatro, sino que también facilita el cambio de estilo. Si desea cambiar el color de los bordes superior, izquierdo y derecho a rojo, solo tiene que editar una sola línea, en lugar de tres: borde: 2px sólidorojo; borde inferior: 4px punteado #333; Cuando utiliza este método abreviado, que define el aspecto básico de los cuatro bordes con elborde propiedad y luego reemplazando el aspecto de un solo borde con una de las propiedades específicas del borde comoborde izquierdo—es crucial que escriba el código en un orden específico. La configuración de borde global más general debe ir primero, y la configuración específica de borde en segundo lugar, así: borde: 2px negro sólido; borde inferior: 4px punteado #333; Porque elborde inferiorpropiedad aparece en segundo lugar, anula la configuración de la bordepropiedad. Si elborde inferiorlínea vino antes de labordepropiedad, entonces sería cancelada por elbordepropiedad, y los cuatro bordes serían idénticos. La última propiedad listada puede anular cualquier propiedad relacionada listada arriba. Este comportamiento es un ejemplo de la cascada de CSS sobre la que leyó en el Capítulo 5. 204 Css3: el manual perdido www.it-ebooks.info También puede utilizar este método abreviado para desactivar la visualización de un solo borde con el ningunopalabra clave. Supongamos que desea poner un borde alrededor de tres lados de un estilo (superior, agregando FRONTERAS izquierdo e inferior) pero ningún borde en el último lado (derecho). Solo dos líneas de código te dan el aspecto que buscas: borde: 2px recuadro #FFCC33; borde derecho: ninguno; La capacidad de modificar sutilmente los diferentes lados de cada borde es la razón por la que existen tantas propiedades de borde diferentes. Las 15 propiedades restantes le permiten definir colores, estilos y anchos individuales para el borde y para cada lado del borde. Por ejemplo, podrías reescribirborde: 2px doble #FFCC33;como esto: ancho del borde: 2px; estilo de borde: doble; color del borde: #FFCC33; Dado que está utilizando tres líneas de código en lugar de una, probablemente desee evitar este método. Sin embargo, cada borde de borde tiene su propio conjunto de tres propiedades, que son útiles para anular solo una propiedad de borde para un solo borde de borde. El borde derecho tiene estas tres propiedades:borde-derecho-ancho, borde-derecho-estilo, ybordederecho-color.Los bordes izquierdo, superior e inferior tienen propiedades con nombres similares:borde-izquierdo-ancho, borde-izquierdo-estilo,etcétera. Puede cambiar el ancho de un solo borde como este:borde-derecho-ancho: 4px;. Una cosa buena de este enfoque es que si luego decide que el borde debe ser sólido, necesita editar solo el genéricobordepropiedad cambiandopunteadoasólido. Además, puede especificar valores individuales para cada lado del borde utilizando el ancho de borde, estilo de borde,ycolor del bordepropiedades. Por ejemplo, ancho del borde: 10px 5px 15px 13px;aplica cuatro anchos diferentes a cada lado (superior, derecho, inferior e izquierdo). Imagine que desea tener un borde discontinuo de 2 píxeles alrededor de los cuatro bordes de un estilo, pero desea que cada borde sea de un color diferente. (Tal vez esté creando un sitio web para niños). Esta es una forma rápida de hacerlo: borde: 2px punteado; borde-color: verde amarillo rojo azul; Este conjunto de reglas crea un borde discontinuo de 2 píxeles alrededor de los cuatro bordes, mientras que el borde superior se vuelve verde, el borde derecho amarillo, el borde inferior rojo y el borde izquierdo azul. NotaPor lo general, agrega relleno cada vez que usa bordes. El relleno proporciona espacio entre el borde y cualquier contenido, como texto, imágenes u otras etiquetas. A menos que desee colocar un borde alrededor de una imagen, los bordes generalmente se colocan demasiado cerca del contenido sin relleno. Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 205 COLOREANDO EL Fondo Colorear el fondo Es muy fácil agregar un fondo a una página completa, un título individual o cualquier otro elemento de la página. Utilizar elcolor de fondopropiedad seguida de cualquiera de las opciones de color válidas que se describen a partir de la página 154. Si lo desea, agregue un verde sorprendentemente brillante al fondo de una página con esta línea de código: cuerpo {color de fondo: rgb(109,218,63); } Alternativamente, puede crear un estilo de clase llamado, por ejemplo, .revisarcon elcolor de fondopropiedad definida, y luego aplique la clase a la etiqueta del cuerpo en el HTML, así: < clase de cuerpo="revisión">. NotaTambién puede colocar una imagen en el fondo de una página y controlar la ubicación de esa imagen de muchas maneras diferentes. Explorará eso en el próximo capítulo. Además, puede agregar un degradado de color al fondo de cualquier elemento. Los colores de fondo son útiles para crear muchos efectos visuales diferentes. Puede crear un título llamativo configurando su fondo en un color oscuro y su texto en un color claro. Los colores de fondo también son una excelente manera de destacar parte de una página, como una barra de navegación, un banner o una barra lateral. Y no se olvide del método de color RGBA descrito en la página 155. Con él, puede hacer que el fondo sea parcialmente transparente, dejando que se vean los colores, las texturas o las imágenes subyacentes de otros objetos. Por ejemplo, puede establecer el color de fondo de la página en un color tostado. Luego, di que quieres un <div>etiqueta adentro para que sea un tono más claro de ese bronceado. En lugar de colocar un color sólido en el fondo de ese div, puede agregar el color blanco y luego controlar la opacidad de ese color, de modo que se muestren varios grados del color bronceado: cuerpo { color de fondo: rgb (247,226,155); } . especial-div { color de fondo: rgba(255.255.255,75); } NotaCuando utilice bordes y colores de fondo, tenga en cuenta lo siguiente: si el estilo del borde es punteado o discontinuo (vea la Figura 7-7), el color de fondo se muestra en los espacios vacíos entre los puntos o guiones. En otras palabras, los navegadores web en realidad pintan el color de fondobajola frontera 206 Css3: el manual perdido www.it-ebooks.info CREANDO redondeado Crear esquinas redondeadas rincones Como se mencionó anteriormente, los navegadores web tratan todos los elementos como cajas rectangulares rígidas. Eso se vuelve obvio cuando pones un borde alrededor de un párrafo o div. Afortunadamente, puede suavizar los bordes duros de esos cuadros agregando una esquina redondeada a sus estilos (vea la Figura 7-8). CSS3 introduce elborde-radiopropiedad para permitir que los diseñadores agreguen curvas a una o más esquinas de un elemento. En su forma más simple, elborde-radio La propiedad acepta un solo valor, que luego aplica a las cuatro esquinas de un elemento: . caja especial { color de fondo: rojo; borde-radio: 20px; } El navegador utiliza el valor del radio suministrado para dibujar un círculo en cada esquina del elemento. El valor es igual a la distancia desde el centro del círculo hasta su borde, su radio, como se muestra en la Figura 7-9. Los píxeles y ems son las medidas más comunes que usará, pero también puede usar porcentajes (aunque se comportan un poco diferente de lo que podría esperar, como se explica en la Figura 7-9). Figura 7-8 CSS3 te permite aplicar esquinas redondeadas a cualquier elemento. Asegúrese de tener un color de fondo o un borde en el elemento, o de lo contrario no podrá ver nada de esa impresionante redondez. Con un solo valor, el navegador dibuja el mismo radio para cada esquina del elemento. Por ejemplo, la imagen superior izquierda de la Figura 7-8 usa la siguiente declaración: borde-radio: 30px; Sin embargo, no está limitado al mismo valor para cada esquina. Puede proporcionar valores separados para cada esquina proporcionando cuatro valores. Por ejemplo, el cuadro superior derecho de la figura 7-8 tiene cuatro esquinas diferentes. La declaración es: borde-radio: 0 30px 10px 5px; Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 207 CREANDO redondeado rincones Los números comienzan en la parte superior izquierda del cuadro y avanzan en el sentido de las agujas del reloj. En otras palabras, el primer valor (0 en el ejemplo de la Figura 7-8) se aplica a la parte superior izquierda, el segundo (30 px) a la parte superior derecha, el tercero (10 px) a la parte inferior derecha y el cuarto (5 px ) en la esquina inferior izquierda. También puede proporcionar solo dos valores, en cuyo caso, el primer número se aplica a las esquinas superior izquierda e inferior derecha, mientras que el segundo número se aplica a las esquinas superior derecha e inferior izquierda. Figura 7-9 Puede crear esquinas circulares (arriba) o esquinas elípticas (abajo) proporcionando un solo valor:borde-radio: 20px—o una combinación de dos valores separados por/ --radio del borde: 40px/20px;. Si usa un solo valor porcentual, lo más probable es que termine con una esquina elíptica. Esto se debe a que el navegador calcula el radio horizontal usando un porcentaje del ancho del elemento y el radio vertical usando un porcentaje de la altura del elemento. Entonces, si escribes algo como borde-radio: 20%, a menos que el elemento sea un cuadrado perfecto, el navegador calculará una esquina elíptica más parecida a esta:borderadio: 20px/40px;. Además de las esquinas perfectamente redondas (es decir, circulares) que ha visto hasta ahora, también es posible aplicar una esquina elíptica, como las de los dos ejemplos inferiores de la Figura 7-8. Una ruta elíptica requiere dos valores de radio: el primero es el radio desde el centro de la ruta hasta uno de los bordes izquierdo o derecho, mientras que el segundo número es la distancia desde el centro de la ruta hasta uno de los bordes superior o inferior. Por ejemplo, para agregar esquinas como la que se muestra en la esquina inferior izquierda de la Figura 7-8, crearía esta declaración: borde-radio: 40px/20px; El40pxel valor es el radio horizontal; el20pxel valor es el radio vertical. La barra inclinada entre ellos le permite al navegador saber que está creando una ruta elíptica. Puede hacer que las cuatro esquinas tengan diferentes formas oblongas al proporcionar cuatro conjuntos de estos valores, como este: borde-radio: 40px/20px 10px/30px 20px/40px 10px/20px; Incluso puede mezclar y combinar esquinas elípticas y circulares si lo desea: borde-radio: 10px 10px/30px 20px/40px 10px; Finalmente, si desea seguir la ruta manual, puede usar propiedades separadas para definir la apariencia de cada esquina. Por ejemplo: borde-radio: 1em 2em 1.5em .75em; 208 Css3: el manual perdido www.it-ebooks.info CREANDO redondeado también se puede escribir como: rincones borde-superior-izquierda-radio: 1em; bordesuperior-derecho-radio: 2em; borde-inferiorderecho-radio: 1.5em; borde-inferiorizquierda-radio: .75em; NotaInternet Explorer 8 y versiones anteriores no entienden elborde-radiopropiedad, por lo que mostrarán esquinas cuadradas en su lugar. Además, la versión 3.2 de Safari para iOS y la versión 2.1 del navegador de Android requieren:webkitprefijo de proveedor como este: -webkit-border-radio: 20px;.Consulte el cuadro a continuación para obtener más información. Hasta la velocidad Prefijos de proveedores CSS es un conjunto de reglas en constante evolución. Incluso mientras crea propiedad fue propuesta por primera vez, Firefox apoyó un -radio páginas web hoy en día, hay personas inteligentes en el W3C (World Wide Web de mozborderpropiedad, mientras que Safari apoyó la Consortium) que trabajan en nuevas propiedades CSS y otras personas - webkit-border-radiopropiedad. inteligentes que agregan soporte para nuevas propiedades CSS en los Cuando una propiedad requiere un prefijo de proveedor, generalmente navegadores web que crean. De hecho, a veces los propios fabricantes de escribe varias líneas de código para crear el mismo efecto: una para navegadores crean una nueva propiedad CSS que creen que sería genial y la cada proveedor y, finalmente, una con la versión sin prefijo como esta: agregan a su navegador. Otras veces, el W3C piensa en nuevas propiedades CSS que los proveedores de navegadores intentan agregar lentamente a sus navegadores. - tamaño de caja de webkit: cuadro de borde; tamaño de caja: cuadro de borde; Durante este período, cuando se están desarrollando nuevas propiedades y estándares CSS, los fabricantes de navegadores se mueven con cautela. No quieren comprometerse por completo con las propiedades de CSS que pueden cambiar. Del mismo modo, mientras experimentan con las propiedades CSS de su propio diseño, los fabricantes de navegadores dudan en afirmar que han llegado a un estándar acordado. Para marcar una propiedad CSS como experimental o aún no completamente acordada, el fabricante de un navegador usa un prefijo antes del nombre de la propiedad. Cada uno de los principales fabricantes de navegadores tiene su propio prefijo: •- - tamaño de cuadro de moz: cuadro de borde; Por lo general, si el grupo de trabajo de CSS del W3C adopta una propiedad y finaliza suficientes detalles, los proveedores descartan la extensión. Por ejemplo, ahora todos los principales navegadores simplemente admiten el borde-radiopropiedad sin prefijo de proveedor requerido. Como leerá a lo largo de este libro, los detalles finales de algunas propiedades de CSS3 aún se están resolviendo, por lo que es posible que deba usar un prefijo de proveedor con ellos. Este libro le permitirá saber cuándo necesita estos prefijos y cómo usarlos con una propiedad en particular. webkit-es utilizado por Chrome, Safari y otros navegadores basados en WebKit •- moz-es utilizado por Mozilla Firefox •- o-es utilizado por la ópera •- EM-es utilizado por Microsoft Internet Explorer Cuando una propiedad está cambiando, un navegador puede admitir una versión prefijada por el proveedor. Por ejemplo, cuando elborde-radio Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 209 agregando gota Oscuridad Adición de sombras paralelas Como lee en la página 166, puede crear sombras paralelas sutiles (o no tan sutiles) en el texto para que se destaque de la página. CSS3 incluye elsombra de la cajapropiedad para agregar sombras paralelas al cuadro delimitador de un elemento para que pueda, por ejemplo, hacer un <div> parecen flotar sobre la página (consulte la Figura 7-10). Hay algunas opciones más que con elsombra de textopropiedad. Por ejemplo, puede hacer que aparezca una sombra dentro del cuadro como en la parte inferior de la Figura 7-10. Figura 7-10 El CSS3sombra de la cajale permite agregar sombras a sus elementos para que parezcan flotar sobre la página. Esta propiedad funciona en la mayoría de los navegadores actuales, incluido Internet Explorer 9. Desafortunadamente, IE 9 dibuja las sombras notablemente más finas que otros navegadores. Además, IE 8 y versiones anteriores simplemente ignoran la propiedad y no dibujan sombras en los elementos. 210 Css3: el manual perdido www.it-ebooks.info La sintaxis básica para elsombra de la cajaLa propiedad se muestra en la figura 7-11. El primer valor es un desplazamiento horizontal; es decir, este valor mueve la sombra a la derecha oa la izquierda agregando gota Oscuridad del elemento. Un número positivo mueve la sombra hacia la derecha (Figura 7-10, arriba) y un número negativo mueve la sombra hacia la izquierda. El segundo valor es el desplazamiento vertical: la posición de la sombra por encima o por debajo del elemento. Un elemento positivo coloca la sombra por debajo del borde inferior del cuadro (Figura 7-10, arriba), mientras que un valor negativo mueve la sombra por encima del borde superior del cuadro. NotaDebe usar píxeles o ems para los valores de sombra paralela. Los porcentajes no funcionarán. El tercer valor es el radio de la sombra. Determina qué tan borrosa y ancha es la sombra. un valor de 0no crea desenfoque, por lo que los bordes de la sombra son nítidos. Un valor grande crea más desenfoque y una sombra más espesa. Finalmente, el último valor es el color de la sombra paralela. Puede usar cualquier valor de color CSS, pero los valores RGBA se ven particularmente bien ya que puede controlar la opacidad del color para que parezca más translúcido y como una sombra. Figura 7-11 La sombra paralela más básica coloca una sombra coloreada a la izquierda (usando un valor negativo como se muestra aquí) o a la derecha (valor positivo) y encima de la parte superior (valor negativo) o debajo de la parte inferior (valor positivo) del elemento, y difumina la sombra con un radio de desenfoque especificado. Elsombra de la cajaLa propiedad incluye dos valores opcionales:recuadroy un valor diferencial. ElrecuadroLa palabra clave le dice a un navegador que dibuje la sombra dentro del cuadro (Figura 7-10, abajo). Simplemente agreguerecuadrocomo el primer valor de lasombra de la cajapropiedad para crear una sombra insertada: box-shadow: inserción 4px 4px 8px rgba(0,0,0,.75); También puede agregar undesparramarcomo cuarto valor (entre el radio de la sombra y el color de la sombra). La extensión expande la sombra en la cantidad especificada. En otras palabras, si agrega un valor diferencial de10 píxeles,un navegador expande la sombra 10 píxeles en cada dirección (básicamente haciéndola 20 píxeles más ancha y 20 píxeles más alta). El valor también Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 211 Determinando ALTURA Y ancho determina cuándo se aplica el radio de desenfoque. En otras palabras, cuando agrega un valor de dispersión, el desenfoque de la sombra no comienza hasta que se aplica el valor de dispersión. Esto es particularmente útil cuando desea agregar una sombra alrededor de todo el elemento, lo que muchos programas de edición de imágenes llamanbrillo. NotaEl navegador de Android y las versiones anteriores de Safari para iPhone requieren la versión con el prefijo del proveedor desombra de la cajatrabajar; consulte el cuadro en la página 209 para obtener más información sobre los prefijos de proveedores. En otras palabras, para hacer que una sombra de cuadro funcione en esos navegadores, así como en todos los navegadores nuevos, debe agregar dos declaraciones a un estilo: - webkit-caja-sombra: 2px 2px 10px #000000; sombra de caja: 2px 2px 10px #000000; Por ejemplo, en el segundo cuadro desde arriba en la Figura 7-10, los desplazamientos horizontal y vertical se establecen en0;el radio de la sombra es8 píxeles;y la propagación es2 píxeles.El valor de dispersión empuja la sombra hacia afuera 2 píxeles en los cuatro lados del cuadro; y luego los 8 píxeles del radio de la sombra extienden el desenfoque otros 8 píxeles. Incluso puede usar el valor de extensión para crear un segundo borde de diferente color alrededor de un borde existente. Aquí hay un ejemplo de eso: borde: 10px rgb sólido (100,255,30); sombra de cuadro: 0 0 0 10px rgb (0,33,255); Finalmente, puede incluso aplicar múltiples sombras a un estilo (Figura 7-10, segunda desde abajo). Simplemente agregue una coma después del primer conjunto de configuraciones de sombra y luego agregue otra sombra: sombra de cuadro: 10px 5px 8px #FF00FF, - 5px -10px 20px 5px rgb(0,33,255); Puede agregar tantas sombras como desee (y según lo permita el sentido común del diseño). NotaDesafortunadamente, hay mucha variación en la forma en que los navegadores dibujan una sombra de caja. IE 9, por ejemplo, crea una sombra notablemente más delgada que otros navegadores. Para una buena comparación visual de cómo los navegadores dibujan las sombras de los cuadros, visitehttp://thany.nl/apps/boxshadows/. Determinación de la altura y el ancho Otras dos propiedades de CSS que forman parte del modelo de cuadro de CSS son útiles para asignar dimensiones a un objeto, como una tabla, columna, banner o barra lateral. Elaltura y anchopropiedades asignan una altura y un ancho al área de contenido de un estilo. Usará estas propiedades a menudo cuando cree los tipos de diseños CSS descritos en la Parte tres de este libro, pero también son útiles para tareas de diseño más básicas, como asignar el ancho a una tabla, crear una barra lateral simple o crear una galería. de imágenes en miniatura (como la que se describe en los pasos de la página 278). 212 Css3: el manual perdido www.it-ebooks.info Agregar estas propiedades a un estilo es muy fácil. Simplemente escriba la propiedad seguida de cualquiera de los sistemas de medición de CSS que ya haya encontrado. Por ejemplo: Determinando ALTURA Y ancho ancho: 300px; ancho: 30%; altura: 20em; Los píxeles son, bueno, píxeles. Son fáciles de entender y fáciles de usar. También crean un ancho o alto exacto que no cambia. Unelloses el mismo que el tamaño del texto para el elemento con estilo. Digamos que establece el tamaño del texto en 24px; un em para ese estilo es 24px, por lo que si establece el ancho en 2em, entonces sería 2 x 24 o 48 píxeles. Si no establece un tamaño de texto en el estilo, el em se basa en el tamaño de texto heredado (consulte la página 104). NotaCSS3 introduce otra medida: lamovimiento rápido del ojo-que se basa en latamaño de fuentedelhtml elemento. Funciona en todos los principales navegadores, excepto Internet Explorer 8 y versiones anteriores. Consulte la página 161 para obtener más información sobremovimiento rápido del ojo unidad. Para elanchopropiedad, los valores porcentuales se basan en el porcentaje del ancho del elemento contenedor del estilo. Si configura el ancho de un título al 75% y ese título no está dentro de ningún otro elemento con un ancho establecido, entonces el título tendrá el 75 por ciento del ancho de la ventana del navegador. Si el visitante ajusta el tamaño de su navegador, el ancho del título cambiará. Sin embargo, si el título está contenido dentro de un <división> ( tal vez para crear una columna) que tenga 200 píxeles de ancho, el ancho de ese título será de 150 píxeles. Valores porcentuales para elalturaLas propiedades funcionan de manera similar, pero se basan en la altura del elemento contenedor, en lugar del ancho. Cálculo del ancho y la altura reales de una caja Mientras que laanchoyalturaLas propiedades parecen bastante sencillas, hay algunos matices que pueden hacerte perder el control. En primer lugar, hay una diferencia entre el valor que establece para el ancho y el alto de un estilo y la cantidad de espacio que un navegador web realmente usa para mostrar el cuadro del estilo. Elanchoyalturapropiedades establecen el ancho y la altura de la área de contenidodel estilo: el lugar donde se ubican el texto, las imágenes u otras etiquetas anidadas. (Consulte la Figura 7-1 para repasar dónde se encuentra el área de contenido dentro del modelo de cuadro general). El ancho real, es decir, la cantidad de espacio en pantalla proporcionado por el navegador web, es el total de los anchos de los márgenes , bordes, relleno y propiedades de ancho, como se ilustra en la Figura 7-12. Digamos que ha establecido las siguientes propiedades: ancho: 100px; relleno: 15px; ancho del borde: 5px; margen: 10px; Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 213 Determinando ALTURA Y ancho Cuando elanchoestá establecida, siempre sabe cuánto espacio se asigna solo para su contenido, las palabras y las imágenes que llenan el espacio, independientemente de cualquier otra propiedad que pueda establecer. No necesita hacer ningún cálculo porque el valor de la anchoproperty es el espacio para su contenido (en el ejemplo anterior, 100 píxeles). Por supuesto túhacertiene que realizar un poco de matemática cuando intenta averiguar exactamente cuánto espacio ocupará un elemento en una página web. En el ejemplo anterior, el ancho que un navegador web asigna para el cuadro del estilo es de 160 píxeles: 20 píxeles para los márgenes izquierdo y derecho, 10 píxeles para los bordes izquierdo y derecho, 30 píxeles para el relleno izquierdo y derecho y 100 píxeles por el ancho. Figura 7-12 Calcule el ancho real del cuadro de un elemento con estilo sumando susmargen, borde,relleno, yanchopropiedades. La altura ocupada en la pantalla por el elemento se calcula de la misma manera, el total de laaltura propiedad, los márgenes superior e inferior, los bordes superior e inferior y el relleno superior e inferior. La regla general para establecer alturas en los elementos de la página es¡no!Muchos diseñadores de CSS en ciernes intentan establecer alturas en todo en un intento de obtener un control perfecto de píxeles. Pero a menos que esté totalmente seguro de las dimensiones exactas del contenido dentro de una etiqueta, puede encontrarse con algunos resultados no deseados (vea la Figura 7-13). En este ejemplo, un cuadro de comillas extraídas que se usa para resaltar un comentario interesante de un artículo tiene un ancho y una altura establecidos de 100 píxeles. Cuando se agrega al cuadro más texto del que cabe en la altura de 100 píxeles, su contenido se derrama por la parte inferior. Incluso si te aseguras de que el texto que colocas dentro de un cuadro con una altura fija se ajuste, si un visitante aumenta el tamaño de fuente en su navegador, el texto podría cambiar de tamaño a una altura mayor que el cuadro. En otras palabras, elalturaLa propiedad es útil para controlar la altura de un div que contiene imágenes, por ejemplo, porque puede determinar correctamente la altura de las imágenes; sin embargo, si usa la altura para elementos que tienen texto, asegúrese de no solo probar sus páginas en los principales navegadores, sino también probar la página con diferentes tamaños de fuente aumentando el tamaño de fuente en el navegador web. 214 Css3: el manual perdido www.it-ebooks.info CONSEJOEl área del banner de una página es otro buen candidato para una altura determinada. Por lo general, el banner tiene contenido limitado: un logotipo, un cuadro de búsqueda, tal vez algunos botones de navegación. Con frecuencia, los banners tienen una buena cantidad Determinando ALTURA Y ancho de espacio en blanco (áreas vacías que ayudan a llamar la atención del visitante sobre los elementos clave del banner, como la barra de navegación), por lo que especificar una altura para un banner no suele causar problemas. Figura 7-13 Cuando establece la altura de un elemento (como el div de la barra lateral derecha aquí), pero el contenido interior es más alto que el elemento, los navegadores simplemente dejan que el contenido se derrame en la parte inferior del elemento debajo de sus bordes. Redefinición del ancho de caja con tamaño de caja Como se mencionó en la página 213, los navegadores web tradicionalmente calculan el ancho de un elemento sumando losborde, relleno,yanchopropiedades. Esto no solo lo obliga a (Dios no lo quiera) hacer cálculos matemáticos para calcular el ancho de visualización real de un elemento, sino que también puede causar otros problemas. Esto es especialmente cierto cuando crea diseños basados en flotantes usando porcentajes. Aprenderá los detalles de los diseños flotantes más adelante en este libro, pero en pocas palabras, CSS le permite colocar elementos uno al lado del otro usando el flotarpropiedad, que le permite crear varios diseños de columna. Al usar porcentajes con varias columnas, puede encontrarse con algunos problemas extraños. Digamos que tiene dos columnas (en realidad, dos etiquetas, como <div>tags), y desea que cada uno sea el 50 por ciento del ancho de la ventana. Entonces estableces las dos columnas a un ancho de50%;sin embargo, en el momento en que agrega relleno o un borde a una de las columnas, aumentará su ancho a más de50% (para ser exactos, será50%más la cantidad de relleno izquierdo y derecho y el ancho de los bordes izquierdo y derecho). En la mayoría de los casos, esto obligará a la segunda columna a caerabajola primera. Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 215 Determinando ALTURA Y ancho Afortunadamente, CSS3 ofrece una propiedad que le permite cambiar la forma en que un navegador calcula el ancho (y el alto) de la pantalla de un elemento. Eltamaño de cajapropiedad ofrece tres opciones: • Elcuadro de contenidoLa opción es la forma en que los navegadores siempre han definido el ancho y el alto de la pantalla de un elemento, como se describe en la página 213. Es decir, el navegador agrega los anchos de borde y los grosores de relleno a los valores establecidos para las propiedades de ancho y alto para determinar la etiqueta en pantalla. anchura y altura. Dado que este es el comportamiento predeterminado, no necesita especificar nada paracuadro de contenido. • Elcaja de rellenoopción le dice a un navegador que cuando configura un estiloanchoo alturapropiedad, debe incluir el relleno como parte de ese valor. Por ejemplo, supongamos que le da a un elemento 20 píxeles de relleno izquierdo y derecho y establece el ancho del elemento en 100 píxeles. El navegador considerará la parte de relleno de ese valor de 100 píxeles. En otras palabras, el área de contenido tendrá solo 60 píxeles de ancho (100 – 20 [relleno izquierdo] – 20 [relleno derecho]). • Elcuadro de bordeEl valor incluye tanto el relleno como el grosor del borde como parte del anchoyalturavalores. Esta configuración resuelve el problema de usar valores porcentuales para anchos discutidos anteriormente. En otras palabras, con eltamaño de cajapropiedad establecida encuadro de borde,cuando establece el ancho de un elemento en50%, por ejemplo, ese elemento ocupará el 50 por ciento del espacio, incluso si agrega relleno y bordes a ese elemento. Si no le gusta la forma estándar en que los navegadores calculan el ancho y la altura de los elementos, vaya con elcuadro de bordevalor. (A menos, por supuesto, que tenga alguna razón inusual por la que quiera incluir el relleno pero no el borde como parte del cálculo). Para usar eltamaño de cajapropiedad, simplemente proporcione uno de los tres valores de la lista. Por ejemplo: tamaño de caja: cuadro de borde; Además, Firefox todavía (en el momento de escribir este artículo) no admite el nombre de propiedad estándar, por lo que debe usar la versión con el prefijo del proveedor (consulte el cuadro en la página 209); lo mismo ocurre con las versiones anteriores de Safari para iOS y Android (versión 3 y anteriores). para asegurarse de quetamaño de cajaLa configuración también funciona en todos esos navegadores, debe escribir tres declaraciones como esta: - tamaño de cuadro de moz: cuadro de borde; - tamaño de caja de webkit: cuadro de borde; tamaño de caja: cuadro de borde; De hecho, muchos diseñadores web están encontrando lacuadro de bordeconfiguración tan útil que crean un estilo de selector universal (página 63) para aplicarlo a cada elemento en una página: 216 Css3: el manual perdido www.it-ebooks.info Determinando ALTURA Y ancho *{ - tamaño de cuadro de moz: cuadro de borde; - tamaño de caja de webkit: cuadro de borde; tamaño de caja: cuadro de borde; } Como leerá en la página 467, usandocuadro de bordees extremadamente útil al crear diseños web receptivos de CSS3 que cambian de tamaño para adaptarse a diferentes tamaños de dispositivos (como un iPhone, una tableta y un monitor de escritorio). NotaEltamaño de cajaproperty incluso funciona en Internet Explorer 8 y versiones anteriores, por lo que es compatible con más del 95 por ciento de los navegadores en uso. Desafortunadamente, IE 7 no comprende esta propiedad, por lo que si usa el cuadro de bordeconfiguración, IE 7 lo ignorará y dibujará elementos mucho más anchos (y más altos) que en otros navegadores. Si aún necesita admitir IE 7, omita esta propiedad. Controlando el grifo con la propiedad de desbordamiento Cuando el contenido dentro de una etiqueta con estilo es más grande que el ancho y la altura definidos por el estilo, suceden algunas cosas raras. Como se muestra en la Figura 7-13, los navegadores permiten que el contenido se derrame fuera de la caja (más allá de los bordes y, a menudo, sobre otro contenido). Afortunadamente, puede controlar lo que debe hacer un navegador en esta situación con el Desbordamientopropiedad. Overflow acepta cuatro palabras clave que controlan cómo se debe mostrar el contenido que desborda los bordes de un cuadro: • visible.Esta opción es lo que hacen normalmente los navegadores. Es lo mismo que no establecer la propiedad en absoluto (Figura 7-14, arriba). • Desplazarse.Le permite agregar barras de desplazamiento (Figura 7-14, centro). Crea una especie de ventana de mininavegador en su página y se parece a los marcos HTML de la vieja escuela, o al HTML <iframe>etiqueta. Puedes usarDesplazarsepara proporcionar una gran cantidad de contenido en una pequeña cantidad de espacio. Desafortunadamente, las barras de desplazamientosiempreaparecerá cuando utilice esta opción, incluso si el contenido cabe dentro del cuadro. • auto.Para hacer que las barras de desplazamiento sean opcionales, use elautoopción. Hace lo mismo queDesplazarse pero agrega barras de desplazamiento solo cuando es necesario. • oculto.Oculta cualquier contenido que se extienda fuera del cuadro (Figura 7-14, parte inferior). Esta opción es un poco peligrosa, puede hacer que parte del contenido desaparezca de la página, pero es un truco útil para los diseños basados en elementos flotantes (página 222). Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 217 Determinando ALTURA Y ancho Figura 7-14 ElDesbordamientoLa propiedad le brinda tres formas básicas de manejar el texto que no cabe dentro de un cuadro: visible muestra el contenido de todos modos (arriba);Desplazarseyautoagregar barras de desplazamiento (centro); y oculto simplemente no muestra nada que no encaje (abajo). 218 Css3: el manual perdido www.it-ebooks.info Altos y anchos máximos y mínimos En caso de que aún no te hayas dado cuenta, CSS ofrece mucha flexibilidad. Además del estándaranchoyalturapropiedades, encontrará cuatro variaciones: Determinando ALTURA Y ancho • Elanchura máximaLa propiedad, como era de esperar, establece el ancho máximo para un elemento. Ese elemento puede ser más delgado que la configuración, pero no puede ser más ancho que esa configuración. Esta opción es útil cuando desea que su página cambie de tamaño para adaptarse a diferentes anchos de pantalla, pero no desea que la página sea tan ancha que sea demasiado difícil de leer en un monitor realmente grande. Por ejemplo, supongamos que agrega este estilo a una página: cuerpo { ancho máximo: 1200px; } Este estilo permite que la página se adapte al ancho de pantallas más pequeñas, como teléfonos inteligentes y tabletas. Pero en un monitor de escritorio realmente grande, la página no se ampliará más de 1200 píxeles, por lo que la página no puede crecer de manera ilegible. • ElAltura máximala propiedad funciona de manera muy similaranchura máxima,excepto que es para la altura del elemento. Sin embargo, como se mencionó en la página 214, normalmente es mejor no meterse con la altura de un elemento. • Elancho mínimoLa propiedad establece el ancho mínimo de un elemento. El elemento puede estirarse más allá del valor de ancho mínimo, pero nunca puede volverse más delgado. Si, por ejemplo, nota que cuando cambia el tamaño de la ventana de su navegador, el elemento es tan delgado que el diseño se desmorona, puede establecer un ancho mínimo como este: cuerpo { ancho mínimo: 760px; } Si un visitante reduce la ventana de su navegador para que solo tenga 500 píxeles de ancho, entonces el navegador agregará una barra de desplazamiento en lugar de dejar que los elementos de la página se estrechen demasiado. • Elmin-alturala propiedad funciona comoancho mínimo,excepto la altura. Esta propiedad puede resolver el problema representado en la figura 7-13. Con una altura mínima, le estás diciendo a un navegador web que haga que el elemento tenga al menos una cierta altura. Si el contenido dentro del elemento es más alto, entonces el navegador también hará que todo el elemento sea más alto. También puede usar las propiedades mínimas y máximas juntas. Por ejemplo, si desea asegurarse de que una página tenga al menos 760 píxeles de ancho, pero nunca se expanda a más de 1200 píxeles, puede usar este estilo: cuerpo { ancho mínimo: 760px; ancho máximo: 1200px; } Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 219 envase Contenido con Flotante Elementos Envolviendo contenido con elementos flotantes HTML normalmente fluye desde la parte superior de la ventana del navegador hasta la parte inferior, un título, párrafo o elemento de nivel de bloque encima de otro. Esta pantalla similar a un procesador de texto es visualmente aburrida (Figura 7-15, arriba), pero con CSS, está lejos de atascarse con él. Aprenderá muchos métodos nuevos para organizar elementos en una página web en la Parte 3, pero puede darle vida a sus páginas con una pequeña propiedad de CSS:flotar. ElflotarLa propiedad mueve un elemento a la izquierda o a la derecha. En el proceso, el contenido debajo del elemento flotante se mueve hacia arriba y envuelve el flotador (Figura 7-15, abajo). Los elementos flotantes son ideales para mover información complementaria fuera del camino del texto principal de la página. Las imágenes se pueden mover a cualquier borde, lo que permite que el texto las envuelva con elegancia. Del mismo modo, puede desplazar una barra lateral de información relacionada y enlaces a un lado. Figura 7-15 El flujo normal de HTML es de izquierda a derecha, de arriba a abajo, con un elemento de nivel de bloque (título, párrafo, div, etc.) apilado encima del siguiente. Permitiéndote romper esta uniformidad, elflotar property es una de las herramientas más poderosas de CSS. Sus usos van desde simplemente mover una imagen a un lado de un párrafo hasta proporcionar un control de diseño completo sobre banners, barras laterales, barras de navegación y otros elementos de la página. 220 Css3: el manual perdido www.it-ebooks.info Aunque puede usar flotantes de formas complejas (y confusas), como verá en el Capítulo 13, la propiedad básica es muy simple. Se necesita una de tres palabras clave:izquierda derechao envase Contenido con Flotante Elementos ninguno-al igual que: flotador izquierdo; • izquierda.Desliza el elemento con estilo hacia la izquierda mientras que el contenido debajo se envuelve alrededor del lado derecho del elemento. • bien.Desliza el elemento a la derecha. • ninguno.Apaga el flotador y devuelve el objeto a su posición normal. Los elementos flotantes se mueven al borde izquierdo o derecho de suelemento contenedor. En algunos casos, esto solo significa que el elemento se mueve al borde izquierdo o derecho de la ventana del navegador. Sin embargo, si hace flotar un elemento que está dentro de otra etiqueta con un ancho o una posición establecidos en una página web, el flotador irá al borde izquierdo o derecho de esa etiqueta, el "contenedor" del elemento flotante. Por ejemplo, puede tener un cuadro en la página que tiene 300 píxeles de ancho y flota en el borde derecho de la ventana del navegador. Dentro de ese cuadro, tienes una imagen que flota hacia la izquierda. Esa imagen se desliza hacia el borde izquierdo de ese cuadro de 300 píxeles de ancho, no hacia el borde izquierdo de la ventana del navegador. Incluso puedes usar elflotarpropiedad con un elemento en línea, como <imagen>etiqueta. De hecho, hacer flotar una foto a la izquierda o a la derecha usando CSS es un uso muy común de la flotar propiedad. Un navegador web trata un elemento en línea flotante como un elemento a nivel de bloque, por lo que no se encuentra con los problemas de relleno y margen que normalmente afectan a los elementos en línea (consulte la página 200). También puede hacer flotar un elemento a nivel de bloque como un título o un párrafo. Una técnica común es hacer flotar una etiqueta <div> (o uno de los nuevos elementos de HTML5 como <artículo>, <sección>,o <aparte>)que contiene otras etiquetas HTML y contenido de la página para crear una especie de caja contenedora. De esta forma, puede crear barras laterales, comillas y otros elementos de página independientes. (Verá un ejemplo de esto en el tutorial de este capítulo). Cuando flote elementos a nivel de bloque, también debe configurar elanchopropiedad para ese elemento (de hecho, las reglas de CSS requieren establecer el ancho de los elementos flotantes para todas las etiquetas, excepto las imágenes). De esta manera, puede controlar cuánto espacio horizontal ocupa el bloque y cuánto espacio está disponible para que el contenido debajo de él se mueva hacia arriba y se envuelva alrededor del bloque. NotaElorden de origen—el orden en el que escribe su HTML— tiene un gran impacto en la visualización de elementos flotantes. Debe aparecer el HTML de la etiqueta flotante.antesel HTML de cualquier contenido que envuelva el elemento flotante. Digamos que ha creado una página web compuesta por un <h1>etiqueta seguida de un <p>etiqueta. Hacia el final de eso <p>etiqueta, también ha insertado una foto usando el <imagen>etiqueta. Si haces flotar esa foto a la derecha, digamos, entonces el <h1>etiqueta y la mayor parte del contenido dentro de ese <p>la etiqueta seguirá apareciendo encima de la foto; solo contenido que sigue al <imagen>la etiqueta se envolverá alrededor del lado izquierdo de la imagen. Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 221 envase Contenido con Flotante Elementos Fondos, bordes y flotantes Para consternación de muchos diseñadores web, los fondos y los bordes no reaccionan a los elementos flotantes de la misma manera que lo hace el contenido. Digamos que haces flotar un elemento (una barra lateral, por ejemplo) hacia la derecha. El contenido debajo de la barra lateral se mueve hacia arriba y lo envuelve, como debería. Pero si ese contenido tiene un fondo o borde, entonces ese fondo o borde realmente aparecedebajola barra lateral flotante (Figura 7-16, izquierda). En esencia, un navegador web envuelve el texto alrededor del flotante, pero no el borde ni el fondo. Lo creas o no, esto es absolutamente kosher y (de acuerdo con las reglas) cómo se supone que debe funcionar. Por supuesto, es posible que no desee seguir estas reglas; es posible que desee que el borde o el fondo se detengan cuando alcance el elemento flotante (Figura 7-16, derecha). Con un poco de magia CSS, puedes hacerlo. Primero, debe agregar una regla al estilo que tenga un fondo o bordes debajo del flotador. Una vez que localice el estilo, agregue esta línea:desbordamiento: oculto;. El Desbordamiento(página 217) hace que desaparezca cualquier fondo o borde que se extienda por debajo del flotador. Otro enfoque es agregar un borde alrededor del elemento flotante; cuando hace que el borde sea lo suficientemente grueso y haga coincidir su color con el color de fondo de la página, el borde parece un espacio vacío, aunque cubre y oculta el color de fondo y los bordes que se extienden debajo de él. Figura 7-16 En este ejemplo, hay un<h1> etiqueta con un color de fondo y un<h2> etiqueta con un borde (izquierda). agregandoDesbordamiento: oculto;al estilo para el<h1> La etiqueta (derecha) evita que el título aparezca debajo del elemento flotante (barra lateral). Detener el flotador A veces necesitas una forma de decirle a una etiqueta que ignore un elemento flotante. Es posible que tenga un aviso de derechos de autor que siempre debe aparecer en la parte inferior de la ventana del navegador. Si tiene una barra lateral particularmente alta que flota en el lado izquierdo de la página, el aviso de derechos de autor en realidad podría estar redactado en la página y envuelto alrededor del flotador. En lugar de aparecer en la parte inferior de la página, los derechos de autor se encuentran más arriba en la página, al lado de la barra lateral. Desea que la parte del aviso de derechos de autor de su página se niegue a envolver el elemento flotante y, en su lugar, se coloque debajo de él. 222 Css3: el manual perdido www.it-ebooks.info Otros problemas ocurren cuando tiene varios elementos flotantes juntos. Si los elementos flotantes no son muy anchos, flotan hacia arriba y uno al lado del otro, y si tienen diferentes envase Contenido con Flotante Elementos alturas, pueden entrar en un atasco poco atractivo (vea la Figura 7-17, arriba). En este caso, los elementos flotantesno deberíaflotar uno al lado del otro. CSS proporciona la claropropiedad solo para este tipo de problemas. Elclaropropiedad instruye a un elemento ano envolveralrededor de un elemento flotante. Al borrar un elemento, esencialmente lo fuerza a desplegarse debajo del elemento flotante. Además, puede controlar qué tipo de flotador (izquierdo o derecho) se borra o forzar un estilo para que simplemente ignore ambos tipos de flotadores. Elclaropropiedad acepta las siguientes opciones: • izquierda.El estilo se colocará debajo de los elementos que flotan a la izquierda, pero aún se envolverá alrededor de los objetos que flotan a la derecha. • bien.Fuerza una caída debajo de los objetos flotantes a la derecha, pero aún envuelve los objetos flotantes a la izquierda. • ambos.Fuerza una caída debajo de los elementos flotantes a la izquierda y a la derecha. • ninguno.Desactiva la limpieza por completo. En otras palabras, hace que un elemento envuelva objetos flotantes tanto a la izquierda como a la derecha, que es como funcionan normalmente los navegadores web. En el caso de un aviso de derechos de autor que debe aparecer en la parte inferior de la página, querrá que borre tanto los objetos flotantes a la izquierda como a la derecha; siempre debe estar debajo de otro contenido y nunca debe ajustarse a la izquierda o a la derecha. de cualquier otro artículo. Aquí hay un estilo de clase que haría precisamente eso: . derechos de autor { Limpia los dos; } La figura 7-17 muestra cómo elclaroLa propiedad puede evitar que los elementos flotantes de diferentes alturas se agrupen. Las tres fotos en esa figura tienen un flotante derecho aplicado a ellas. En la figura superior, la foto de los tomates (1) es la primera imagen de la página y aparece en el extremo derecho. La segunda imagen (2) obedece al flotante establecido en la primera imagen y se envuelve a la izquierda de la misma. La última foto (3) es demasiado ancha para colocarse al lado de la segunda foto (2), pero aun así intenta envolver tanto (1) como (2). Se atasca en el proceso. Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 223 envase Contenido con Flotante Elementos Figura 7-17 Arriba: a veces no desea que un elemento se envuelva alrededor de un objeto flotante. Abajo: Aplicando elclaropropiedad (en este casoclaro: correcto;) a cada imagen les impide sentarse uno al lado del otro. Elclaroaplicado a la foto (2) evita que se envuelva junto a la imagen (1). Aplicarclaro: correctoa la foto (3) obliga a que aparezca debajo de la foto (2). Usandoclaro: correcto;en las imágenes evita que las fotos se coloquen una al lado de la otra (Figura 7-17, abajo). Elclaroaplicado a la segunda foto evita que se envuelva junto a la primera imagen, mientras que la última imagen está a la derechaclaroLa propiedad obliga a que aparezca debajo de la segunda imagen. 224 Css3: el manual perdido www.it-ebooks.info NotaEste asunto de los flotantes izquierdos, flotantes derechos y cómo eliminarlos suena complicado, y lo es. Esta sección le ofrece una introducción básica. Volverá a ver el tema en el Capítulo 13 y eventualmente aprenderá a usar los flotadores de Tutorial: márgenes, Antecedentes, Y FRONTERAS formas más sofisticadas. Tutorial: márgenes, fondos y bordes En este tutorial, explorará elementos del modelo de caja CSS, ajustará el espaciado alrededor de los objetos en una página, agregará bordes coloridos a los elementos de una página y controlará el tamaño y el flujo de los elementos de la página. 1.Para comenzar, debe descargar los archivos del tutorial que se encuentran en el sitio web complementario de este libro enwww.sawmac.com/css3/.Haga clic en el enlace del tutorial y descargue los archivos. (Todos los archivos están incluidos en un archivo zip. Consulte las instrucciones detalladas para descomprimir los archivos en el sitio web). Los archivos de este tutorial se encuentran dentro del07carpeta. Control de márgenes y fondos de página Comenzará con un archivo HTML muy básico que contiene una hoja de estilo interna con un estilo básico de restablecimiento de CSS. No hay mucho que ver en este momento (vea la figura 7-18). NotaPara obtener una vista previa del resultado final, consulte la Figura 7-21. 2.En su editor de texto favorito, abra07→barra lateral.html. Ya hay una hoja de estilo interna agregada a esta página que contiene el mismo conjunto de estilos discutidos en la página 116. Los estilos básicamente eliminan todos los márgenes, el relleno y el tamaño de fuente de los elementos más comunes a nivel de bloque y eliminan muchas de las visualizaciones entre navegadores. problemas que encontrará relacionados con estas propiedades. Como mínimo, siempre debe incluir este conjunto de estilos en cada hoja de estilo que cree. Probablemente las propiedades más importantes son lamargeny relleno ajustes en el primer estilo. Hay suficientes rarezas entre navegadores relacionadas con esas dos propiedades, por lo que siempre debe ponerlas a cero y comenzar de nuevo. Comenzará con algo simple: un color de fondo. 3.En la hoja de estilo interna, haga clic directamente después del comentario CSS /*estilos de restablecimiento final */y agregue un estilo de selector de etiquetas: html { color de fondo: rgb(253,248,171); } Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 225 Tutorial: márgenes, Antecedentes, Y FRONTERAS Este estilo agrega un color de fondo amarillo claro a la página. Si desea colorear el fondo de una página web, puede agregar elcolor de fondopropiedad a cualquiera de los <html> etiqueta o el <cuerpo>etiqueta. A continuación, agregará algunos márgenes, bordes y otras propiedades al <cuerpo>etiqueta. NotaEs posible que esté acostumbrado a usar colores hexadecimales (como #FDF8AB) en lugar de colores RGB. Puede usar una herramienta como el convertidor en línea enwww.colorhexa.com/para convertir entre los dos. Usar RGB es una buena idea porque los colores RGBA, con su transparencia opcional (página 155), son muy útiles y es más fácil seguir con un modelo de color (RBG) en lugar de mezclar dos (RGB y hexadecimal). 4.Agregue otro estilo a la hoja de estilo interna: cuerpo { color de fondo: rgb (255,255,255); borde: 3px rgb sólido (75,75,75); } Este estilo agrega un color de fondo blanco al <cuerpo>etiqueta y un borde gris oscuro de 3 píxeles. Porque el <cuerpo>la etiqueta se encuentra dentro de <html>etiqueta, un navegador web considera que está "encima" de la etiqueta <html>etiqueta, por lo que el fondo blanco cubrirá el color amarillo que agregó en el paso anterior. A continuación, le dará un ancho a la etiqueta del cuerpo y ajustará el relleno y los márgenes. CONSEJONormalmente, si agrega una propiedad de color de fondo al <cuerpo>etiqueta, ese color llena toda la ventana del navegador; sin embargo, si también agrega un color de fondo al <html>etiqueta, el color de fondo del cuerpo llena solo el área con contenido. Para ver esto en acción, solo obtenga una vista previa de la página web después de completar el Paso 3 anterior; luego borra elhtmlestilo de etiqueta y vuelva a obtener una vista previa de la página. Un poco extraño, pero útil, de curiosidades de CSS. 5.Edite el estilo de cuerpo que acaba de crear agregando cinco nuevas propiedades (los cambios están en negrita): cuerpo { color de fondo: rgb (255,255,255); borde: 3px rgb sólido (75,75,75); ancho: 760px; margen superior: 20px; margen izquierdo: automático; margen derecho: automático; relleno: 15px; } Elanchorestringe el cuerpo para que solo tenga 760 píxeles de ancho: si la ventana del navegador de un visitante tiene más de 760 píxeles de ancho, verá el color de fondo delhtmlestilo y un cuadro de 760 píxeles con el fondo blanco de lacuerpo etiqueta. 226 Css3: el manual perdido www.it-ebooks.info Tutorial: márgenes, Antecedentes, Y FRONTERAS Figura 7-18 Esta página web es HTML básico, con un estilo único que elimina gran parte del estilo integrado del navegador web. se verá mucho mejor con un cambio de imagen de modelo de caja. Elmargen superiorpropiedad agrega 20 píxeles de espacio desde el borde superior de la ventana del navegador, empujando elcuerpoetiquete hacia abajo solo un poco, mientras que la configuración de los márgenes izquierdo y derecho centran el cuerpo en el medio de la ventana del navegador. "Auto" es solo otra forma de decirle a un navegador: "Averígualo", y desde entoncesautoEl valor se aplica a los márgenes izquierdo y derecho, un navegador simplemente proporciona el mismo espacio en el lado izquierdo y derecho. Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 227 Tutorial: márgenes, Antecedentes, Y FRONTERAS NotaTambién podrías usar elmargenpropiedad abreviada (página 186) para condensar esas tres líneas de configuración de márgenes en una sola como esta: margen: 20px automático 0 automático; Finalmente, para mantener el contenido dentro de <cuerpo>al tocar la línea del borde, se agregan 15 píxeles de espacio al interior del cuerpo usando elrelleno propiedad; en otras palabras, la imagen y el texto tienen una sangría de 15 píxeles desde los cuatro bordes. A continuación, agregará un resplandor alrededor del cuadro con elsombra de la cajapropiedad. 6.Editar elcuerpoestilo que acaba de crear agregando una última propiedad después del borde pero antes del ancho (los cambios están en negrita): cuerpo { color de fondo: rgb (255,255,255); borde: 3px rgb sólido (75,75,75); sombra de caja: 0 0 15px 5px rgba(44,82,100,.75); ancho: 760px; margen superior: 20px; margen izquierdo: automático; margen derecho: automático; relleno: 15px; } Este estilo agrega brillo al cuadro al crear una sombra de 15 píxeles colocada directamente detrás del cuadro (la0 0la parte al principio indica que la sombra no está desplazada hacia la izquierda/derecha o arriba/abajo; simplemente está en segundo plano). El5px El valor es el valor de dispersión (página 211), y empuja la sombra 5 píxeles alrededor de los cuatro bordes. Finalmente, elrgbEl valor establece el color en un azul oscuro que es solo un 75 por ciento sólido (es decir, puede ver hasta el fondo amarillo). Su hoja de estilo está bastante avanzada y está listo para revisar la página. 7.Guarde el archivo y obtenga una vista previa de la página en un navegador web. Debería ver un cuadro blanco con una imagen, un montón de texto y un contorno gris con un brillo azulado flotando en un mar de amarillo (vea la Figura 7-19). El texto necesita una atención amorosa. Te encargarás de eso a continuación. 228 Css3: el manual perdido www.it-ebooks.info Tutorial: márgenes, Antecedentes, Y FRONTERAS Figura 7-19 Establecer los márgenes izquierdo y derecho paraautopara cualquier elemento con un ancho establecido, lo centra. En este caso, establecer un ancho para elcuerpo y agregando margen- izquierda: automáticoy margen derecho: automático lo coloca justo en el centro de la ventana del navegador. Desafortunadamente, no hay una manera fácil de centrar un elemento verticalmente (con el mismo espacio arriba y abajo) usando CSS. Sin embargo, hay algunos trucos que se les han ocurrido a los diseñadores astutos. Si busca elementos centrados verticalmente, consultewww . vanseodesign.com/css/ centrado-vertical/. Ajuste del espacio alrededor de las etiquetas Dado que los estilos de restablecimiento de CSS prácticamente eliminaron todo el formato del texto de esta página, deberá crear estilos para que los encabezados y los párrafos se vean geniales. Comenzarás con el <h1>etiqueta en la parte superior de la página. Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 229 Tutorial: márgenes, Antecedentes, Y FRONTERAS 1.Regrese a su editor de texto y elbarra lateral.htmlarchivo.Haga clic al final de la llave de cierre delcuerposelector de etiquetas, presione Entrar (Retorno) para crear una nueva línea y luego agregue el siguiente estilo: h1 { tamaño de fuente: 2,75 em; familia tipográfica: Georgia, "Times New Roman", Times, serif; peso de fuente: normal; alineación de texto: centro; espaciado entre letras: 1px; color: rgb (133,161,16); transformación de texto: mayúsculas; } Este estilo usa muchas de las propiedades de formato de texto discutidas en el capítulo anterior: el título superior tiene 2,75 ems de alto (44 píxeles en la mayoría de los navegadores) y está todo en mayúsculas, usa la fuente Georgia y tiene un color verde, con un pequeño espacio entre ellos. cada letra. Eltexto alineadoLa propiedad se asegura de que el texto esté centrado en el medio del cuadro. La verdadera diversión es agregar un color de fondo para resaltar realmente el título. CONSEJOGuarde la página y obtenga una vista previa en un navegador web después de cada paso de este tutorial. De esa manera, obtendrá una mejor comprensión de cómo estas propiedades CSS afectan los elementos a los que dan formato. 2.Añadir una nueva propiedad a lah1estilo de etiqueta para que se vea así (cambios en negrita): h1 { tamaño de fuente: 2,75 em; familia tipográfica: Georgia, "Times New Roman", Times, serif; peso de fuente: normal; alineación de texto: centro; espaciado entre letras: 1px; color: #85A110; transformación de texto: mayúsculas; color de fondo: rgb (226,235,180); } Si obtiene una vista previa de la página ahora, verá que el título tiene un fondo verde claro. Cuando se aplica a un elemento de nivel de bloque como un título, el fondo llena todo el espacio horizontal disponible (en otras palabras, el color no solo se encuentra detrás del texto "El asombroso mundo de CSS", sino que se extiende hasta el final borde derecho de la caja). 230 Css3: el manual perdido www.it-ebooks.info El texto del título está un poco apretado: la "T" que comienza el título toca el borde del fondo. Con un poco de relleno, puedes arreglar esto. Tutorial: márgenes, Antecedentes, Y FRONTERAS 3.Añadir otra propiedad a lah1estilo de etiqueta para que se vea así (cambios en negrita): h1 { tamaño de fuente: 2,75 em; familia tipográfica: Georgia, "Times New Roman", Times, serif; peso de fuente: normal; alineación de texto: centro; espaciado entre letras: 1px; color: #85A110; transformación de texto: mayúsculas; color de fondo: rgb (226,235,180); relleno: 5px 15px 2px 15px; } ElrellenoLa propiedad abreviada proporciona una forma concisa de agregar relleno alrededor de los cuatro lados del contenido; en este caso, se agregan 5 píxeles de espacio sobre el texto, 15 píxeles a la derecha, 2 píxeles en la parte inferior y 15 píxeles a la izquierda. Hay otro problema con el titular: debido al relleno agregado alcuerpoetiqueta (consulte el Paso 5 en la página 226), el título tiene una sangría de 15 píxeles desde los bordes izquierdo y derecho del borde verde que rodea el cuerpo. El titular se vería mejor si tocara el borde verde. Ningún problema; márgenes negativos al rescate. 4.Agregue una última propiedad a lah1estilo de etiqueta para que se vea así (cambios en negrita): h1 { tamaño de fuente: 2,75 em; familia tipográfica: Georgia, "Times New Roman", Times, serif; peso de fuente: normal; alineación de texto: centro; espaciado entre letras: 1px; color: #85A110; transformación de texto: mayúsculas; color de fondo: rgb (226,235,180); relleno: 5px 15px 2px 15px; margen: 0 -15px 20px -15px; } Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 231 Tutorial: márgenes, Antecedentes, Y FRONTERAS Aquí, la abreviatura de margen establece el margen superior en 0, el margen derecho en -15 píxeles, el margen inferior en 20 píxeles y el margen izquierdo en -15 píxeles. El margen inferior solo agrega un poco de espacio entre el título y el párrafo que sigue. El siguiente truco es el uso de valores negativos para los márgenes izquierdo y derecho. Como se mencionó en la página 190, puede asignar un margen negativo a cualquier elemento. Esta propiedad extrae el elemento hacia la dirección del margen; en este caso, el título se extiende 15 píxeles a la izquierda y 15 píxeles a la derecha, expandiendo el título y sacándolo sobre elcuerporelleno de la etiqueta. 5.Ahora, agregará algo de formato de <h2>etiquetasAgregue el siguiente estilo después delh1 estilo de etiqueta: h2 { tamaño de fuente: 1,5 em; familia de fuentes: "Arial Narrow", Arial, Helvetica, sans-serif; color: rgb (249,107,24); borde superior: 2px punteado rgb (141,165,22); borde inferior: 2px punteado rgb (141,165,22); acolchado superior: 5px; parte inferior del relleno: 5px; margen: 15px 0 5px 0; } Este estilo agrega un formato de texto básico y un borde punteado encima y debajo del título. Para agregar un poco de espacio entre el texto del título y las líneas, coloca un pequeño relleno en la parte superior e inferior. Finalmente, elmargenLa propiedad agrega más de 15 píxeles por encima del título y 5 píxeles por debajo. 6.Guarde el archivo y obtenga una vista previa de la página en un navegador web. Los titulares se ven bien (vea la Figura 7-20). A continuación, creará una barra lateral en el lado derecho de la página. 232 Css3: el manual perdido www.it-ebooks.info Tutorial: márgenes, Antecedentes, Y FRONTERAS Figura 7-20 Con solo unos pocos estilos, puede agregar colores de fondo, controlar los márgenes en toda la página y ajustar el espacio entre los títulos y los párrafos. Construyendo una barra lateral Las barras laterales son elementos comunes en la mayoría de los tipos de publicaciones impresas, como revistas, libros y periódicos. Compartimentan y resaltan pequeños fragmentos de información como una lista de recursos, información de contacto o una anécdota relacionada. Pero para que sean eficaces, las barras laterales no deben interrumpir el flujo de la historia principal. Deberían, como su nombre indica, sentarse discretamente a un lado, lo que puede hacer que suceda fácilmente con CSS. Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 233 Tutorial: márgenes, Antecedentes, Y FRONTERAS 1.Regrese a su editor de texto y abra elbarra lateral.htmlarchivo. Primero, debe aislar la región de la página que conforma la barra lateral. El <div>La etiqueta es la herramienta perfecta. Puede encerrar cualquier cantidad de HTML en su propio fragmento autocontenido envolviéndolo en un <div>etiqueta. 2.Desplácese hacia abajo en la página hasta el HTML y haga clic enantesel primero <h2> etiqueta (la que tiene el título "NOTA").Luego escriba <clase div="barra lateral">,y presione Entrar (Retorno). Este HTML marca el comienzo de la barra lateral y le aplica una clase. Crearás el . barra lateralestilo de clase pronto, pero primero debe indicar el final de la barra lateral cerrando el <división>. 3.Haga clic después del cierre </p>etiqueta que sigue inmediatamente al <h2>etiqueta (esta es la </p>que aparece justo antes de <h2>¿Quién sabía que CSS tenía tal poder?</ h2>. Presione Entrar y luego escriba </división>. Acabas de envolver un título y un párrafo dentro de un <div>etiqueta. A continuación, creará un estilo para él. 4.Desplácese hacia atrás hasta la hoja de estilo de la página y agregue el siguiente estilo debajo del h2estilo que creó anteriormente: . barra lateral { ancho: 30%; flotar derecho; margen: 10px; } Este estilo establece el ancho del área de contenido (donde aparece el texto) en un 30 por ciento. No tiene que usar un valor absoluto como píxeles para anchos. En este caso, el ancho de la barra lateral es el 30 por ciento del ancho del contenedor. Elflotar La propiedad mueve la barra lateral al lado derecho del cuadro, y elmargenLa propiedad agrega 10 píxeles de espacio alrededor de la barra lateral. Si obtiene una vista previa de la página en un navegador, verá que la forma básica y la ubicación de la barra lateral están configuradas, pero hay un problema: los bordes del < h2> aparecen etiquetasdebajola caja. Aunque la barra lateral flotante quita el texto de los titulares, los flotantes no desplazan los bordes ni los fondos. Esos solo aparecen justo debajo de la barra lateral flotante. Una forma de solucionar este problema es simplemente agregar un color de fondo a la barra lateral, para que no pueda ver elh2 fronteras (También hay otra técnica, que usará en el Paso 8 en la página 236). 5.Agregue otras dos propiedades al archivo .barra lateralestilo para que se vea así (cambios en negrita): . barra lateral { ancho: 30%; flotar derecho; margen: 10px; 234 Css3: el manual perdido www.it-ebooks.info Tutorial: márgenes, Antecedentes, Y FRONTERAS color de fondo: rgb (250,235,199); relleno: 10px 20px; } Estas propiedades agregan un color naranja claro a la barra lateral y sangran el texto de los bordes de la barra lateral para que no toque los bordes que está a punto de agregar. 6.Agregue dos propiedades más al archivo .barra lateralestilo para que se vea así (cambios en negrita): . barra lateral { ancho: 30%; flotar derecho; margen: 10px; color de fondo:rgb(250.235.199); relleno: 10px 20px; borde: 1px punteado rgb (252,101,18); borde superior: 20px rgb sólido (252,101,18); } Este es un ejemplo de la práctica técnica descrita en la página 205. Si desea que la mayoría de los bordes alrededor de un elemento sean iguales, primero puede definir un borde para los cuatro bordes; en este caso, una línea naranja punteada de 1 píxel alrededor toda la barra lateral, y luego proporcione nuevas propiedades de borde para los bordes específicos que desea cambiar; en este ejemplo, el borde superior tendrá 20 píxeles de alto y sólido. Esta técnica le permite usar solo dos líneas de código CSS en lugar de cuatro (borde superior, borde inferior, borde izquierdo,yborde derecho). A continuación, agregará esquinas redondeadas y una sombra paralela para que esta barra lateral realmente se destaque. 7.Finalmente, agregue dos propiedades más al archivo .barra lateralestilo para que se vea así (cambios en negrita): . barra lateral { ancho: 30%; flotar derecho; margen: 10px; color de fondo:rgb(250.235.199); relleno: 10px 20px; borde: 1px punteado rgb (252,101,18); borde superior: 20px rgb sólido (252,101,18); borde-radio: 10px; sombra de caja: 5px 5px 10px rgba(0,0,0,.5); } Elborde-radio(página 207) le permite crear esquinas redondeadas. En este caso, la configuración de 10 píxeles proporciona una curva de aspecto prominente. Elsombra de la caja La propiedad aquí agrega una sombra paralela debajo y a la derecha del cuadro, lo que hace que parezca que está flotando sobre la página. Ya casi terminas. Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 235 Tutorial: márgenes, Antecedentes, Y FRONTERAS El título dentro de la barra lateral no se ve muy bien. Utiliza las mismas propiedades que el otro <h2>etiquetas (debido a lah2estilo de etiqueta que creó en el Paso 4). El borde distrae y el margen superior empuja el título demasiado hacia abajo desde la parte superior de la barra lateral. Afortunadamente, puede usar un selector descendiente para anular esas propiedades. 8.Después de la .barra lateralestilo, en la hoja de estilo interna, agregue un selector descendiente: . barra lateral h2 { borde: ninguno; margen superior: 0; relleno: 0; } Debido a la .barra lateral,este estilo es más poderoso, es decir, tiene mayor especificidad como se describe en la página 114—que el básicoh2estilo. Borra el borde del originalh2 estilo de etiqueta, junto con el margen superior y todo el relleno. Sin embargo, dado que este estilo no tiene un tamaño de fuente, color o familia de fuentes, esas propiedades del h2el estilo aún se aplica: ¡es la cascada en acción! La página se ve bien, pero los bordes en <h2>las etiquetas aún se ejecutan hasta y detrás de la barra lateral. Eso simplemente no se ve bien, pero se puede arreglar fácilmente. 9.Localice el <h2>estilo y agregar elDesbordamientopropiedad, así: h2 { tamaño de fuente: 1,5 em; familia de fuentes: "Arial Narrow", Arial, Helvetica, sans-serif; color: rgb (249,107,24); borde superior: 2px punteado rgb (141,165,22); borde inferior: 2px punteado rgb (141,165,22); acolchado superior: 5px; parte inferior del relleno: 5px; margen: 15px 0 5px 0; desbordamiento: oculto; } Configuración de laDesbordamientopropiedad aocultooculta los bordes que pasan más allá del texto del título y debajo del elemento flotante. 10Guarde el archivo y obtenga una vista previa de la página web en un navegador. La página debería parecerse a la Figura 7-21. 236 Css3: el manual perdido www.it-ebooks.info Tutorial: márgenes, Antecedentes, Y FRONTERAS Figura 7-21 Un puñado de estilos CSS agregan elegancia al diseño de HTML aburrido. Observe cómo la barra lateral flotante atrae la atención y la aparta del cuerpo principal del texto. Ir más lejos Para probar sus nuevas habilidades, intente este ejercicio por su cuenta: Cree unpagestilo de etiqueta para agregar algo de dinamismo a los párrafos de la página: pruebe algunas configuraciones de márgenes, color de fuente, etc. A continuación, cree un estilo de clase para formatear el aviso de derechos de autor que aparece en la parte inferior de labarra lateral.htmlpágina (llamada, digamos, .derechos de autor).En este estilo, agregue un borde sobre el aviso de derechos de autor, cambie el color del texto, reduzca el tamaño de la fuente y cambie el tipo a mayúsculas. (Sugerencia: use eltransformación de textopropiedad discutida en la página 163.) Después de haber creado el estilo, agregue el atributo de clase apropiado al <p>etiqueta en el HTML. Capítulo 7:MÁRGENES, RELLENO Y BORDES www.it-ebooks.info 237 www.it-ebooks.info Traducido del inglés al español - www.onlinedoctranslator.com Capítulo 8 8 Adición de gráficos a páginas web No importa cuánto arruines tu texto o juegues con los bordes y los márgenes, nada afecta más la apariencia de tu sitio que las imágenes que le agregas. Y una vez más, CSS le brinda más control de imágenes de lo que nunca soñó con HTML. Puede trabajar con gráficos en CSS en dos frentes: el <imagen>etiqueta y laimagen de fondopropiedad (que le permite colocar una imagen en el fondo de cualquier etiqueta en una página). norte Este capítulo profundiza en algunas de las formas creativas en que puede implementar imágenes con CSS. La mejor manera de aprender a usar gráficos en CSS es verlos en acción, por lo que este capítulo tiene tres tutoriales, cuéntelos, tres. Al crear una página web de galería de fotos y usar imágenes para el estilo general de la página, será un profesional de la distribución de imágenes en muy poco tiempo. Descubriendo CSS y la etiqueta <img> El venerable <imagen>tag ha sido el caballo de batalla de los sitios web llenos de fotos desde el comienzo de la World Wide Web. Incluso los sitios sin fotos lo usan para agregar logotipos, botones de navegación e ilustraciones. Si bien CSS no tiene ninguna propiedad destinada específicamente a dar formato a las imágenes, puede aprovechar las propiedades de CSS que ya aprendió para mejorar los gráficos de su sitio. por ejemplo, elborde property es una forma rápida y sencilla de enmarcar una imagen o unificar el aspecto de una galería de fotos. Aquí hay un resumen de las propiedades CSS que se usan más comúnmente con las imágenes: • Fronteras.Usa uno de los muchosbordepropiedades (página 202) para enmarcar una imagen. Verá un ejemplo de esto en el tutorial en la página 273. Dado que cada lado del borde puede tener un color, estilo y ancho diferentes, tiene muchas opciones creativas. 239 www.it-ebooks.info agregando Fondo IMÁGENES • Relleno.ElrellenoLa propiedad (página 195) agrega espacio entre un borde y una imagen. Al dejar un poco de espacio para respirar entre una foto y su marco, el relleno simula el tablero de fibraesteraque se utiliza en los marcos de fotos tradicionales para rodear y compensar la imagen. Y al establecer un color de fondo, incluso puede cambiar el color del tapete. • Flotar.Una imagen flotante la mueve al borde izquierdo o derecho de la página o, si la imagen está contenida en otro elemento de diseño, como una barra lateral, al borde izquierdo o derecho del elemento contenedor de la imagen. El texto y otros elementos de la página se envuelven alrededor de la imagen. Incluso puede hacer flotar varias imágenes para crear una galería de imágenes flexible de varias filas. Verá un ejemplo de esta técnica en el tutorial de la página 272. • Márgenes.Para agregar espacio entre una imagen y otro contenido de la página, use el margen propiedad. Cuando haces flotar una imagen, el texto que la envuelve suele estar incómodamente cerca de la imagen. Agregar un margen izquierdo (para imágenes flotantes a la derecha) o un margen derecho (para imágenes flotantes a la izquierda) agrega espacio entre el texto y el gráfico. En la mayoría de los casos, no creará un estilo para el <imagen>etiquetarse a sí mismo. Formatear esta etiqueta es usar un pincel demasiado amplio, ya que formateatodoimágenes en su página, incluso aquellas con funciones muy diferentes, como el logotipo, los botones de navegación, las fotos e incluso los anuncios gráficos. Después de todo, no querrías el mismo marco negro alrededor de todas esas imágenes. En su lugar, debe usar un estilo de clase, como .galeríaImageno .logo,para aplicar el estilo de forma selectiva. Otro enfoque es utilizar un selector descendente para orientar las imágenes agrupadas en una sección de una página. Si tienes una galería de fotos, puedes colocar todas las fotos dentro de un < div>etiqueta con un nombre de clase degalería,y luego cree un estilo solo para las imágenes dentro de eso <división>,como esto: .imagen de la galería. Agregar imágenes de fondo Elimagen de fondoLa propiedad es la clave para hacer sitios web visualmente impactantes. Aprenda a usarlo y sus propiedades primas, y puede hacer que su sitio se destaque por encima del resto. Para ver un ejemplo del poder de las imágenes de fondo, consulte www.csszengarden.com(Figura 8-1). El HTML de las dos páginas que se muestran en la Figura 8-1 es exactamente el mismo; las diferencias visuales se logran mediante el uso de diferentes imágenes de fondo. ¿Cómo es eso para el poder de CSS? Si ha creado algunos sitios web, probablemente haya usado una imagen para el fondo de una página, tal vez un pequeño gráfico que se repite en el fondo de la ventana del navegador creando un patrón (con suerte) sutil. Ese método HTML tradicional usaba el < cuerpo>etiquetasfondoatributo. Pero CSS hace mejor el mismo trabajo. NotaEn las próximas páginas, conocerá tres propiedades de imagen de fondo aprendiendo el código CSS individual para cada una. Más adelante en el capítulo, aprenderá un método abreviado que le ahorrará mucho teclear. 240 Css3: el manual perdido www.it-ebooks.info agregando Fondo IMÁGENES Figura 8-1 CSSzengarden.com muestra el poder de CSS al demostrar cómo puede transformar un solo archivo HTML en dos páginas de aspecto completamente diferente. El verdadero secreto para hacer que cada uno de los maravillosos diseños luzca único es el uso extensivo de imágenes de fondo. (De hecho, cuando observa el código HTML de estas páginas, verá que no hay una sola<imagen>etiqueta en él.) Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 241 agregando Fondo IMÁGENES Hasta la velocidad GIF, JPEG y PNG: los gráficos de la Web Los gráficos por computadora vienen en cientos de formatos de archivo diferentes valores de color adyacentes. JPEG es el formato que utilizan muchas diferentes, con una asombrosa variedad de acrónimos: JPEG, GIF, TIFF, cámaras para guardar fotos. Cuando su software de gráficos guarda un archivo PICT, BMP, EPS, etc. JPEG, ejecuta un análisis de color complejo para reducir la cantidad de datos Afortunadamente, los gráficos en la Web son un poco más simples. Los navegadores web actuales funcionan con tres formatos de gráficos principales: GIF, JPEG y PNG, cada uno de los cuales proporciona una buenacompresión. A necesarios para representar con precisión la imagen. En el lado negativo, la compresión JPEG hace que el texto y las áreas grandes de color sólido se vean manchadas. través de una manipulación informática inteligente, la compresión reduce el Finalmente, elPNG(Portable Network Graphics) incluye las mejores tamaño del archivo del gráfico para que pueda viajar más rápidamente a través características de GIF y JPEG, pero necesita saber qué versión de PNG de Internet. El que elija depende de la imagen que desee agregar a su página. usar para cada situación. PNG8 es básicamente un reemplazo para GIF. GIF(Graphics Interchange Format) brindan una buena compresión para imágenes que tienen áreas de color sólido: logotipos, texto, pancartas simples, etc. Los GIF también ofrecen transparencia de un solo color, lo que significa que puede hacer que desaparezca un color en el gráfico, lo que permite que el fondo de una página web se muestre a través de Al igual que GIF, ofrece 256 colores y transparencia básica de un solo color. Sin embargo, PNG8 generalmente comprime las imágenes a un tamaño de archivo ligeramente más pequeño que GIF, por lo que las imágenes PNG8 se descargan un poco más rápido que la misma imagen guardada en formato GIF. En otras palabras, use PNG8 sobre GIF. parte de la imagen. Además, los GIF pueden incluir animaciones PNG24 y PNG32 (que es básicamente PNG24 con transparencia alfa) simples. ofrecen la paleta de colores ampliada de las imágenes JPEG, sin pérdida Sin embargo, una imagen GIF puede contener un máximo de solo 256 tonos, lo que generalmente hace que las fotos se veanposterizado(irregular y de colores poco realistas, como un póster). En otras palabras, esa foto de un atardecer radiante que tomaste con tu cámara digital no se verá tan bien como un GIF. (Si no necesita animar una imagen, el formato PNG8 que se analiza más adelante de calidad. Esto significa que las fotos guardadas como PNG24 o PNG32 tienden a ser de mayor calidad que las JPEG. Pero antes de subirse al carro PNG, las imágenes JPEG ofrecen muy buena calidad y unmucho tamaño de archivo más pequeño que PNG24 o PNG32. En general, JPEG es una mejor opción para fotos y otras imágenes que incluyen muchos colores. es una mejor opción que GIF). jpeg(Los gráficos del Joint Photographic Experts Group, por otro lado, comienzan donde los GIF terminan. Los gráficos JPEG pueden contener millones de colores diferentes, lo que los hace ideales para fotografías. Los JPEG no solo hacen un mejor trabajo en las fotos, sino que también comprimen las imágenes multicolores mucho mejor que los GIF, porque el algoritmo de compresión JPEG tiene en cuenta cómo percibe el ojo humano Finalmente, PNG32 ofrece una característica que ningún otro formato ofrece: 256 niveles de transparencia (también llamadosalfatransparencia), lo que significa que puede ver el fondo de una página web a través de una sombra paralela en un gráfico, o incluso hacer un gráfico que tenga un 50 por ciento de opacidad (lo que significa que puede ver a través de él) para crear un efecto translúcido fantasmal. Elimagen de fondoLa propiedad agrega un gráfico al fondo de un elemento. Para poner una imagen en el fondo de una página web, puede crear un estilo para la <cuerpo> etiqueta: cuerpo { imagen de fondo: url(images/bg.gif); } 242 Css3: el manual perdido www.it-ebooks.info agregando La propiedad toma un valor: la palabra claveURL,seguido de una ruta al archivo gráfico entre paréntesis. Puede usar una URL absoluta como esta:URL (http://www.cosmofarmer.com/ Fondo IMÁGENES image/bg.gif)—o una ruta relativa al documento o raíz como estas: url(../images/bg.gif) /* relativo al documento */ url(/images/bg.gif) /* relativo a la raíz */ Como se explica en el cuadro de la página 244, las rutas relativas al documento proporcionan instrucciones en relación con el archivo de hoja de estilo,nola página HTML que estás diseñando. Estos serán uno y el mismo, por supuesto, si está utilizando una hoja de estilo interna, pero debe tener este punto en cuenta si está utilizando unexternohoja de estilo. Digamos que tienes una carpeta llamadaestilos(que contiene las hojas de estilo del sitio) y una carpeta denominadaimágenes (sosteniendo las imágenes del sitio). Ambas carpetas se encuentran en la carpeta principal del sitio junto con la página de inicio (Figura 8-2). Cuando un visitante ve la página de inicio, también se carga la hoja de estilo externa (Paso 1 en la Figura 8-2). Ahora, supongamos que la hoja de estilo externa incluye un estilo para <cuerpo>etiqueta con la propiedad de imagen de fondo establecida para usar el archivo gráficobg.gifen la carpeta de imágenes. La ruta relativa al documento llevaría desde la hoja de estilo hasta el gráfico (Paso 2 en la Figura 8-2). En otras palabras, el estilo se vería así: cuerpo { imagen de fondo: url(../images/bg.gif); } Esta ruta se divide así: ../ significa “subir un nivel” (es decir, hasta la carpeta que contiene elestiloscarpeta);imágenes/significa “ir a la carpeta de imágenes”; ybg.gif especifica ese archivo. Figura 8-2 Las rutas relativas al documento se calculan en relación con la hoja de estilo, no con la página web a la que se aplica el estilo. En los ejemplos hasta ahora, la ruta no está entre comillas como en HTML, pero las comillas también están bien. En CSS, las tres líneas de código siguientes son kosher: Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 243 Controlador repetición imagen de fondo: url(images/bg.gif); imagen de fondo: url("images/bg.gif"); imagen de fondo: url('imágenes/bg.gif'); Hasta la velocidad Tipos de URL En CSS, debe especificar unURLcuando agrega una imagen de fondo o adjunta una hoja de estilo externa mediante el método @import (página Aquí hay algunos consejos sobre qué tipo usar: • Si apunta a un archivo que no está en el mismo servidor que la 42). Una URL oLocalizador Uniforme de Recursoses una ruta a un hoja de estilo,debeusar una ruta absoluta. Es el único tipo archivo ubicado en la Web. Hay tres tipos de caminos: ruta absoluta, que puede apuntar a otro sitio web. ruta relativa a la raíz, yruta relativa al documento. Los tres simplemente indican dónde un navegador web puede encontrar un archivo en particular (como otra página web, un gráfico o una hoja de estilo externa). • Las rutas relativas a la raíz son buenas para las imágenes almacenadas en su propio sitio. Dado que siempre comienzan en la carpeta raíz, puede mover la hoja de estilo sin afectar la ruta desde la raíz hasta la imagen en el sitio. Sin embargo, son difíciles Una ruta absoluta es como una dirección postal: contiene toda la información necesaria para que un navegador web ubicado en cualquier parte del mundo encuentre el archivo. Una ruta absoluta incluyehttp://, el nombre de host y la carpeta y el nombre del archivo. Por ejemplo: http://www.cosmofarmer.com/images/bluegrass.jpg. de usar cuando crea sus diseños por primera vez: no puede obtener una vista previa de las rutas relativas a la raíz a menos que esté viendo sus páginas web a través de un servidor web, ya sea su servidor web en Internet o un servidor web. Lo configuré en su propia computadora con fines de prueba. En otras palabras, Arelativo a la raízruta indica dónde se encuentra un archivo en relación con la si solo está abriendo una página web desde su computadora carpeta de nivel superior de un sitio: la carpeta raíz del sitio. Una ruta relativa a usando el archivo del navegador→Abra el comando, entonces no la raíz no incluyehttp://o el nombre de dominio. Comienza con una / (barra verá ninguna imagen colocada usando rutas relativas a la raíz. oblicua) que indica la carpeta raíz del sitio (la carpeta en la que se encuentra la • Las rutas relativas al documento son las mejores cuando página de inicio). Por ejemplo/images/bluegrass.jpgindica que el archivo diseña en su propia computadora sin la ayuda de un servidor bluegrass.jpgse encuentra dentro de una carpeta llamada imágenes, que a su web. Puede crear sus archivos CSS y luego revisarlos en un vez se encuentra en la carpeta de nivel superior del sitio. Una manera fácil de navegador web simplemente abriendo una página web crear una ruta relativa a la raíz es tomar una ruta absoluta y eliminar lahttp://y almacenada en su disco duro. Estas páginas funcionarán el nombre de host. bien cuando las mueva a su sitio web real, vivo y vivo en Arelativo al documentoruta especifica la ruta desde el documento actual Internet, pero tendrá que volver a escribir las URL de las hasta el archivo. Cuando se trata de una hoja de estilo, esto significa la imágenes si mueve la hoja de estilo a otra ubicación en el ruta de la hoja de estilo al archivo especificado, no la ruta desde la servidor. página web actual hasta el archivo. Controlando la Repetición Si usas elimagen de fondopropiedad por sí misma, el gráfico siempre se muestra en mosaico, llenando todo el fondo de una página web. Afortunadamente, puede utilizar elfondorepetirpropiedad para especificar cómo (o si lo hace) una imagen en mosaico: repetición de fondo: sin repetición; La propiedad acepta cuatro valores:repetir, no-repetir, repetir-x,yrepetir-y: 244 Css3: el manual perdido www.it-ebooks.info POSICIONANDO UN • Fondo repetires la configuración normal para las imágenes de fondo que desea mostrar de izquierda a derecha y de arriba a abajo hasta que todo el espacio se llene con un gráfico imagen (Figura 8-3). Figura 8-3 Tenga cuidado al colocar imágenes en mosaico en el fondo de una página web. Elija una imagen sin mucho contraste que se integre en mosaicos (izquierda). Una imagen con demasiado contraste (derecha) dificulta la lectura del texto. • sin repeticiónmuestra la imagen una sola vez, sin mosaicos ni repeticiones. Es una opción muy común y la usará con frecuencia al colocar imágenes en el fondo de etiquetas que no sean el cuerpo. Puede usarlo para colocar un logotipo en la esquina superior de una página o para usar gráficos personalizados para viñetas en listas, por nombrar un par. (Verá el ejemplo de viñetas en acción en el tutorial en la página 286). • repetir-xrepite una imagen horizontalmente a lo largo del eje x (el ancho horizontal de la página, si su geometría está oxidada). Es perfecto para agregar un banner gráfico en la parte superior de una página web (Figura 8-4, izquierda) o un borde decorativo en la parte superior o inferior de un título. (Consulte la página 299 del tutorial para ver un ejemplo de este efecto). • repetir-yrepite una imagen verticalmente a lo largo del eje y (la longitud vertical de la página). Puede usar esta configuración para agregar una barra lateral gráfica a una página (Figura 8-4, derecha) o para agregar una sombra paralela repetida a cualquier lado de un elemento de página (como una barra lateral). Posicionamiento de una imagen de fondo Colocar y colocar una imagen de fondo en mosaico es solo la mitad de la diversión. Con el posición de fondopropiedad, CSS le permite controlar la ubicación exacta de una imagen de varias maneras. Puede especificar los puntos de inicio horizontales y verticales de un gráfico de tres formas: palabras clave, valores exactos y porcentajes. Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 245 POSICIONANDO UN Fondo imagen Figura 8-4 Agregue fondos gráficos a los banners y barras laterales de una página aprovechando el control de mosaico que ofrece elrepetir-x( izquierda) yrepetir-y( derecha) opciones. Palabras clave Obtiene dos conjuntos de palabras clave para trabajar. El primero controla las tres posiciones horizontales—izquierda centro derecha-y el segundo controla las tres posiciones verticales— arriba, centro, abajo (Figura 8-5). Suponga que desea colocar un gráfico directamente en el medio de una página web. Puedes crear un estilo como este: cuerpo { imagen de fondo: url(bg_page.jpg); repetición de fondo: sin repetición; posición de fondo: centro centro; } Para mover ese gráfico a la esquina superior derecha, simplemente cambie la posición de fondo a esto: posición de fondo: arriba a la derecha; NotaSi ha decidido colocar una imagen en mosaico (configurandorepetición de fondoa uno de los valores enumerados en la sección anterior), entonces elposición de fondola propiedad controla laa partir depunto de la primera baldosa. Entonces, por ejemplo, si usas elrepetiropción, aún verá todo el fondo lleno por la imagen. Es solo que la posición delprimerocambios de mosaico en función de los cualesposición de fondoajuste que usó. Las palabras clave son realmente útiles cuando desea crear banners verticales u horizontales. Si quisiera un gráfico centrado en una página y en mosaico hacia abajo para crear un fondo para el contenido (Figura 8-6, izquierda), entonces crearía un estilo como este: 246 Css3: el manual perdido www.it-ebooks.info POSICIONANDO UN Fondo cuerpo { imagen imagen de fondo: url (fondo.jpg); fondorepetir: repetir-y; posición de fondo: parte superior central; } Figura 8-5 Puede utilizar palabras clave para colocar una imagen en el fondo. No importa el orden en que especifique las palabras clave:centro Superiory parte superior central ambos tienen el mismo efecto. Así mismo, usando elparte inferior central,oarribapalabras clave, puede colocar una imagen que se repite horizontalmente usandorepetir-x (Figura 8-4, izquierda) en un lugar particular de la página (o dentro de un elemento con estilo). Figura 8-6 Utilizar elfondoposiciónapuntalarerty al colocar una imagen en mosaico, ya sea verticalmente (izquierda) u horizontalmente (derecha). En la imagen de la izquierda, el gráfico es un cuadro blanco ancho con sombras paralelas en los bordes izquierdo y derecho. El color de fondo de la página es gris, por lo que el texto de la página parece estar en una hoja de papel blanca flotando sobre la pantalla. Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 247 POSICIONANDO UN Fondo imagen CONSEJODe hecho, puede agregar una imagen de fondo a ambos <html>y <cuerpo>etiquetas Si coloca en mosaico ambas imágenes horizontalmente y coloca el <cuerpo>la imagen de la etiqueta en la parte superior y el <html>la imagen de la etiqueta en la parte inferior, puede lograr el efecto de dos franjas cortando la parte superior e inferior de la página, sin importar qué tan alta sea la página. ¡Y funciona en todos los navegadores actuales, incluso en IE 6! ERROR DEL NAVEGADOR Tocando fondo Cuando se muestra una imagen en el fondo de una página web, la Si la página web tiene solo un par de párrafos de texto y se muestra en un mayoría de los navegadores no siempre colocan la imagen en posición monitor realmente grande, la mayoría de los navegadores tratan la "parte vertical de la manera esperada. Por ejemplo, si establece la posición inferior" como la parte inferior del último párrafo, no como la parte inferior de vertical enabajo,la imagen no siempre aparece en la parte inferior de la la ventana del navegador. Si se encuentra con esta molestia, simplemente ventana del navegador. Esto sucede cuando el contenido de una página agregue este estilo a su hoja de estilo: es más corto que la altura de la ventana del navegador. html { altura: 100%; }. Valores precisos También puede colocar imágenes de fondo utilizando valores de píxeles o ems. Utiliza dos valores: uno para indicar la distancia entre el borde izquierdo de la imagen y el borde izquierdo del contenedor, y otro para especificar la distancia entre el borde superior de la imagen y el borde superior del estilo. (Dicho de otra manera, el primer valor controla la posición horizontal, el segundo valor controla la posición vertical). Digamos que quiere viñetas personalizadas para una lista. Si agrega una imagen de fondo al < li> etiqueta, las viñetas a menudo no se alinean exactamente (vea la Figura 8-7, arriba). Así que puedes simplemente empujar las balas en su lugar usando elposición de fondopropiedad (Figura 8-7, abajo). Si la lista se vería mejor con, digamos, las viñetas 5 píxeles más a la derecha y 8 píxeles más abajo, agregue esta declaración al estilo que define la imagen de fondo: posición de fondo: 5px 8px; No puede especificar distancias desde la parte inferior o la derecha utilizando medidas de píxeles o em, por lo que si desea asegurarse de que una imagen se coloque exactamente en la esquina inferior derecha de la página o un elemento con estilo, utilice palabras clave (abajo a la derecha)o porcentajes, como se analiza a continuación. Sin embargo, puede usar valores negativos para mover una imagen fuera del borde derecho o por encima del borde superior, ocultando esa parte de la imagen. Es posible que desee utilizar valores negativos para recortar parte de una imagen. O bien, si la imagen de fondo tiene mucho espacio en blanco adicional en el borde superior o izquierdo, puede usar valores negativos para eliminar ese espacio adicional. 248 Css3: el manual perdido www.it-ebooks.info POSICIONANDO UN Fondo imagen Figura 8-7 El uso de imágenes personalizadas para viñetas a veces requiere un posicionamiento cuidadoso, de modo que el gráfico de viñetas aparezca a la distancia correcta y perfectamente centrado en el texto del elemento de la lista. Valores porcentuales Finalmente, puede usar valores porcentuales para colocar una imagen de fondo. Usar porcentajes de esta manera es complicado, y si puede lograr el efecto que busca con la palabra clave o los valores precisos discutidos anteriormente, utilícelos. Pero debe usar porcentajes para colocar un elemento en un lugar que sea proporcional al ancho de un elemento. Por ejemplo, si desea colocar un gráfico a tres cuartas partes de un título y no conoce el ancho del elemento. Al igual que con los valores de píxeles o em, proporciona dos porcentajes: uno para indicar la posición horizontal y el segundo para indicar la posición vertical. Lo que mide el porcentaje es un poco complicado. En pocas palabras, un valor de porcentaje alinea el porcentaje especificado de la imagen con el mismo porcentaje del elemento con estilo. ¿Qué? La mejor manera de entender cómo funcionan los valores porcentuales es mirar algunos ejemplos. Para colocar una imagen en el medio de una página (como la que se muestra en el centro de la Figura 8-8), escribiría esto: posición de fondo: 50% 50%; Esta declaración coloca el punto de la imagen que está al 50 por ciento del borde izquierdo directamente encima del punto que está al 50 por ciento del borde izquierdo de la página (o cualquier elemento que hayas diseñado con la imagen de fondo). La declaración también alinea el punto de la imagen que está al 50 por ciento de su parte superior con el punto que está al 50 por ciento del borde superior de la página o elemento con estilo. En otras palabras, el centro de la imagen está alineado con el centro del elemento. Esto significa que, cuando se utilizan porcentajes, el punto exacto de la imagen que se está alineando puede ser un punto en movimiento. Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 249 POSICIONANDO UN Fondo imagen objetivo. (Eso se debe a que los porcentajes de posicionamiento de su elemento con estilo pueden cambiar si sus visitantes cambian el tamaño de sus navegadores). NotaColocar una imagen verticalmente en el fondo de una página mediante el uso de porcentajes no colocará necesariamente la imagen en el lugar correcto si el contenido de la página no ocupa toda la altura de la ventana del navegador. Vea el cuadro en la página 248 para la solución a este problema. Al igual que con los valores de píxeles y em, puede especificar valores de porcentaje negativos, aunque los resultados pueden ser difíciles de predecir. También puede mezclar y combinar valores de píxeles/em con valores porcentuales. Por ejemplo, para colocar una imagen que está a 5 píxeles del borde izquierdo del elemento, pero colocada en el medio de la altura del elemento, podría usar esto: posición de fondo: 5px 50%; NotaAunque las imágenes de fondo pueden mejorar la calidad visual de sus páginas web, por lo general no aparecen si su visitante imprime la página. La mayoría de los navegadorespoderimprima los fondos, pero generalmente requiere trabajo adicional por parte de su visitante. Si planea que sus visitantes impriman páginas de su sitio, es posible que desee mantener usando el <imagen>etiqueta para insertar imágenes de misión crítica como el logotipo de su sitio o un mapa de su tienda. Figura 8-8 Cada una de las cuatro imágenes que se muestran aquí se han colocado en esta página web (representadas por el recuadro negro grande) utilizando valores porcentuales. Cuando utilice valores porcentuales, primero identifique el "punto de anclaje" en la imagen:50% 50%, por ejemplo, es el centro de la imagen central. Luego, identifique el punto 50/50 en la página misma: nuevamente, eso estaría directamente en el centro de la página. Ese lugar es donde se coloca el punto de anclaje de la imagen. Las otras tres imágenes están colocadas de la misma manera. Fijar una imagen en su lugar Normalmente, si hay una imagen de fondo en una página web y el visitante tiene que desplazarse hacia abajo para ver más de la página, la imagen de fondo también se desplaza. Como resultado, 250 Css3: el manual perdido www.it-ebooks.info POSICIONANDO UN cualquier patrón en el fondo de la página parece moverse junto con el texto. Además, cuando tiene una imagen que no se repite en el fondo, puede desplazarse por la parte superior de la página fuera de la vista. Si colocó el logotipo del sitio o un gráfico de marca de agua en el fondo de la página, entonces puedenoquiere que desaparezca cuando los visitantes se desplacen. Fondo imagen La solución CSS a tales dilemas es elarchivo adjunto de fondopropiedad. Tiene dos opciones— Desplazarseyfijado. Desplazarsees el comportamiento normal del navegador web; es decir, desplaza la imagen de fondo junto con el texto y otros contenidos de la página.Fijado, sin embargo, mantiene la imagen en su lugar en el fondo (vea la Figura 8-9). Entonces, si desea colocar el logotipo de su empresa en la esquina superior izquierda de la página web y mantenerlo allí incluso si el espectador se desplaza, puede crear un estilo como este: cuerpo { imagen de fondo: url(images/logo.gif); repetición de fondo: sin repetición; archivo adjunto de fondo: fijo; } ElfijadoLa opción también es muy buena cuando se usa un fondo repetitivo en mosaico. Cuando tiene que desplazarse, el texto de la página desaparece de la parte superior, pero el fondo no se mueve: el contenido de la página parece flotar con gracia sobre el fondo. Figura 8-9 ¿Está buscando una manera de definir el logotipo de un sitio (como la imagen de CosmoFarmer 2.0) para que cuando los espectadores se desplacen hacia abajo en la página, el logotipo permanezca en su lugar? Utilizando el fijadoopción para elarchivo adjunto de fondo propiedad, puede bloquear una imagen de fondo en su lugar. De esa forma, incluso si la página es muy larga y el visitante tiene que desplazarse hacia abajo, la imagen permanece visible en la página web (abajo). Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 251 POSICIONANDO UN Fondo imagen Definición del origen y recorte para un fondo CSS3 agrega la capacidad de decirle a un navegador dónde debe comenzar la imagen de fondo en relación con el borde, el relleno y el contenido de un elemento. Por ejemplo, normalmente, cuando coloca una imagen en mosaico, comienza en la esquina superior izquierda del relleno de un elemento (vea la imagen superior central en la Figura 8-10). Sin embargo, puede cambiar la posición del punto de inicio de esa imagen, usando elfondo-origenpropiedad. Toma uno de tres valores: • cuadro de bordecoloca la imagen en la esquina superior izquierda del área asignada al borde (arriba a la izquierda en la Figura 8-10). • caja de rellenocoloca la imagen en la esquina superior izquierda del área asignada al relleno (parte superior central en la Figura 8-10). Esto es normalmente donde un navegador coloca una imagen de fondo. • cuadro de contenidocoloca la imagen en la esquina superior derecha del área asignada al contenido (arriba a la derecha en la Figura 8-10). Por supuesto, esta configuración no importa si no hay un borde ni ningún relleno alrededor de un elemento; además, el efecto puede ser muy sutil, especialmente si tiene un patrón de mosaico continuo. Notani elfondo-origenni elclip de fondolas propiedades funcionan en Internet Explorer 8 y versiones anteriores. Dado que IE 8 sigue siendo un navegador muy popular, utilice estas propiedades con precaución. Sin embargo, puede notarse si no está repitiendo una imagen. Por ejemplo, si elige elsin repetición(página 245) y la imagen de fondo aparece solo una vez, puede colocar esa imagen en la esquina superior izquierda del área de contenido (dentro de cualquier relleno) de esta manera: imagen de fondo: url(logotipo.png); repetición de fondo: sin repetición; fondo-origen: cuadro de contenido; además, elfondo-origenLa propiedad se puede usar de manera efectiva con otra propiedad nueva:clip de fondo.Elclip de fondoLa propiedad limita el área donde aparece la imagen de fondo. Normalmente, las imágenes de fondo llenan toda el área de un elemento, incluso detrás de los bordes y las áreas de relleno (abajo a la izquierda en la Figura 8-9). Sin embargo, puede especificar dónde aparece la imagen con uno de estos tres valores: • cuadro de bordepermite que la imagen aparezca detrás del contenido hasta detrás de los bordes. Notará esto solo si tiene bordes con espacios visibles como una línea discontinua (abajo a la izquierda en la Figura 8-9). Esto es normalmente lo que hacen los navegadores, por lo que no hay una razón real para usar esta configuración. • caja de rellenolimita cualquier fondo a solo el área de relleno y el contenido del elemento (parte inferior central en la Figura 8-9). Esto es útil si tiene un borde punteado o discontinuo y no desea que la imagen aparezca en los espacios del borde. • cuadro de contenidolimita el fondo solo al área de contenido. El relleno y el área detrás del borde estarán libres de cualquier imagen (abajo a la derecha en la Figura 8-9). 252 Css3: el manual perdido www.it-ebooks.info POSICIONANDO UN Combinandofondo-origenyclip de fondo,puede asegurarse de que una imagen comience en la parte superior izquierda del área de contenido y aparezca solo detrás de contenido como este: Fondo imagen fondo-origen: cuadro de contenido; clip de fondo: cuadro de contenido; Figura 8-10 Elclip de fondo La propiedad también se aplica a los colores de fondo. Si agregó un borde no sólido (como punteado, discontinuo o doble), el color de fondo normalmente se muestra detrás del borde en las áreas vacías. Sin embargo, para limitar ese color justo dentro del borde, simplemente establecería el elementoclip de fondopropiedad a caja de relleno. Imágenes de fondo de escala A diferencia del HTML <imagen>etiqueta, normalmente puede cambiar el tamaño de una imagen de fondo. Se coloca en el fondo con el tamaño que usted lo creó. Sin embargo, CSS3 añade untamaño de fondo propiedad, que le permite controlar el tamaño de una imagen de fondo. Tiene la opción de usar valores o palabras clave para establecer el tamaño: • Proporcione un valor de alto y ancho para establecer el tamaño de la imagen. Puede usar un valor absoluto como un valor de píxel: tamaño de fondo: 100px 200px; Este código establece la imagen de fondo en 100 píxeles de ancho y 200 píxeles de alto. También puede establecer el valor de solo el ancho o la altura y establecer el otro enauto: tamaño de fondo: 100px automático; En este caso, la imagen de fondo tiene 100 píxeles de ancho y el navegador establece automáticamente el ancho para mantener intacta la relación de aspecto de la imagen (para que no se distorsione). También puede utilizar valores porcentuales. Si desea que la imagen se escale para ajustarse completamente al fondo, puede usar100%para ambas configuraciones (Figura 8-11, izquierda): tamaño de fondo: 100% 100%; Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 253 POSICIONANDO UN Fondo imagen • ElcontenerLa palabra clave obliga a la imagen a cambiar de tamaño para ajustarse mientras se mantiene la relación de aspecto de la imagen (Figura 8-10, centro). Dependiendo de la forma de la imagen y del elemento, la imagen se estira para ajustarse al ancho o al alto del elemento. tamaño de fondo: contener; • ElcubrirLa palabra clave fuerza el ancho de la imagen para que se ajuste al ancho del elemento y la altura de la imagen para que se ajuste a la altura del elemento. Por lo general, esto distorsiona la imagen al aplastarla o estirarla para que se ajuste al elemento (Figura 8-10, derecha). tamaño de fondo: portada; Eltamaño de fondoLa propiedad casi siempre termina cambiando el tamaño de la imagen original: si la imagen es más pequeña que los elementos, el navegador aumenta la escala de la imagen, lo que generalmente resulta en una notable pixelación y degradación de la imagen (como con las imágenes de fondo en la Figura 8-10). CONSEJOUtilizando eltamaño de fondoLa propiedad puede ser especialmente útil cuando trabaja con elementos cuyo tamaño se mide mediante porcentajes, como los diseños receptivos que se analizan en el Capítulo 14. Por ejemplo, si coloca una imagen en el fondo de un banner que tiene 960 píxeles cuando se ve en una computadora de escritorio monitor pero se reduce a 480 cuando se ve en un teléfono, puede colocar una imagen de fondo grande en el banner y usar esta configuración: tamaño de fondo: 100 % automático; Esto obliga al navegador web a cambiar el tamaño de la imagen para que se ajuste a medida que el banner se reduce a un tamaño más delgado. Figura 8-11 ElfondotamañoLa propiedad es la única forma de cambiar el tamaño de una imagen de fondo. Tenga en cuenta que, si bien la mayoría de los navegadores entienden soporte esta propiedad, Internet Explorer 8, que todavía se usa ampliamente, no lo hace, así que úselo con cuidado (o, si no le importa IE 8, úselo con un abandono imprudente). 254 Css3: el manual perdido www.it-ebooks.info usando Uso de la abreviatura de propiedad de fondo Fondo propiedad Taquigrafía Como puede ver en los ejemplos de la sección anterior, para realmente tomar el control de las imágenes de fondo, necesita aprovechar el poder de varias propiedades de fondo diferentes. pero escribiendoimagen de fondo, adjunto de fondo,y así sucesivamente una y otra vez realmente puede pasar factura en sus manos. Pero hay una manera más fácil: la fondo propiedad abreviada. En realidad, puede agrupar todas las propiedades de fondo (incluido elcolor de fondoproperty) en una sola línea de CSS optimizado. Simplemente escriba fondo seguido de los valores deaccesorio de fondo, archivo adjunto,ycolor de fondo.El siguiente estilo establece el fondo en blanco y agrega una imagen de fondo fija que no se repite justo en el medio de la página: cuerpo { fondo: url(bullseye.gif) centro centro sin repetición fijo #FFF; } Tampoco es necesario especificar todos los valores de propiedad. Puedes usar uno o cualquier combinación de ellos. Por ejemplo:fondo: amarilloes el equivalente de color de fondo: amarillo.Cualquier valor de propiedad que omita simplemente vuelve a su comportamiento normal, así que supongamos que especifica solo una imagen: fondo: url(imagen/bullseye.gif); Eso es el equivalente de esto: fondo: url(imagen/bullseye.gif) desplazarse hacia la izquierda arriba repetir transparente; Este comportamiento de restablecer valores no definidos a sus valores predeterminados puede generar algunos resultados inesperados. Por ejemplo, supongamos que agrega estas dos declaraciones a un estilo: color de fondo: amarillo; fondo: url(image/bullseye.gif) sin repetición; Es posible que espere ver una sola imagen de ojo de buey sobre un color de fondo amarillo. Pero no lo hará, porque un navegador restablece elcolor de fondoa transparente (invisible) cuando se encuentra con elfondopropiedad sin color especificado. Para sortear esta situación, debe especificar elcolor de fondosegundo, así: fondo: url(image/bullseye.gif) sin repetición; color de fondo: amarillo; Además, cuando se aplican varios estilos al mismo elemento, sin darse cuenta puede terminar borrando las imágenes de fondo. Por ejemplo, supongamos que desea agregar una imagen de fondo a cada párrafo de una página, por lo que crea un estilo como este: pag { fondo: url (icono.png) izquierda arriba sin repetición rgb (0,30,0); } Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 255 usando Fondo propiedad Taquigrafía Luego decide que desea que el primer párrafo después de cada Título 2 tenga un fondo azul, por lo que crea esto: h2 + pag { fondo: azul; } Este segundo estilo utiliza la taquigrafía, que restablece todos los demásfondopropiedades a sus valores predeterminados. En el caso de una imagen, el valor predeterminado es ninguna imagen, por lo que en lugar de simplemente agregar un fondo azul al párrafo y dejar la imagen en su lugar, ¡este estilo en realidad borra la imagen! En otras palabras, elfondoLa propiedad abreviada puede ayudarlo a escribir menos código, pero también puede causarle problemas, así que tenga en cuenta este comportamiento. NotaPuede usar las propiedades de fondo CSS3 más nuevas:tamaño de fondo, origen de fondo, yclip de fondo—en la taquigrafía de fondo, pero no es necesariamente una buena idea. Primero, dado que IE 8 no comprende esas propiedades, agregarlas a la declaración de fondo hará que IE 8 omita las otras propiedades válidas (en otras palabras, ignorará todas las configuraciones de fondo). Además, debe poner las propiedades en un orden específico, y ningún navegador (a partir de este escrito) puede manejar tanto elposición de fondoy tamaño de fondovalores juntos en una sola declaración. Para evitar esto, puede crear una declaración con las propiedades abreviadas comunes y aceptadas (imagen, posición, repetición, ubicación y color) y luego agregar declaraciones separadas después de la declaración abreviada para las nuevas propiedades CSS3. Preguntas frecuentes Búsqueda de imágenes gratuitas no soy un artista No puedo dibujar, no puedo pintar, ni siquiera tengo una se les aplicó una licencia Creative Commons. (Aunque no cuestan cámara digital. ¿Dónde puedo encontrar ilustraciones para mi sitio? dinero, no todas las fotos en estos sitios se pueden usar en Gracias a Dios por la Web. Es la ventanilla única para los genios creativos que no podrían arrinconarse aunque lo intentaran. Hay proyectos comerciales. Asegúrese de leer la letra pequeña de cualquier foto que desee usar). muchos sitios de descarga de fotos e ilustraciones de pago, pero Si está buscando viñetas para agregar a las listas, íconos para también hay bastantes opciones completamente gratuitas. Para ver mejorar su barra de navegación o patrones para llenar la pantalla, fotos, consulte el archivo de la morgue (www.morguefile.com), que a hay muchos sitios para elegir. Some Random Dude (no, en serio, pesar del espeluznante nombre tiene muchas fotos maravillosas ese es el nombre del sitio web) ofrece un conjunto de 121 iconos proporcionadas de forma gratuita por personas a las que les encanta de forma gratuita:www.somerandomdude.com/work/sanscons/. Y tomar fotografías. Stock.xchng (www.sxc.hu) es otro excelente recurso si está buscando patrones de mosaico interesantes, consulte los fotográfico. Abrir Foto (http://openphoto.net) también proporciona patrones en estos sitios: ColourLovers.com (www.colorlovers. es/ imágenes basadas en licencias Creative Commons, y puede usar el patrones), Patrón4u (www.kollermedia.at/pattern4u), y dedos de motor de búsqueda en el sitio web de Creative Commons para calamar (ht tp://squidf inger s .com/patrones). O crea tus propios encontrar imágenes (y videos y música) que se pueden usar en fondos en mosaico con estos creadores de patrones en línea: proyectos personales y comerciales:http://search.creativecommons.org. BgPatterns (http://bgpatterns.com), Generador de bandas 2.0 ( Además, puede utilizar Flickr (www.flickr.com/creativecommons) y www.stripegenerator.com), y PatternCooler (www. Álbumes web de Picasa (http://picasaweb.google.com) para buscar patroncooler.com). imágenes que tengan 256 Css3: el manual perdido www.it-ebooks.info usando Uso de múltiples imágenes de fondo Múltiple Fondo IMÁGENES Si bien una imagen de fondo está bien, poder superponer varias imágenes en un fondo tiene sus usos. Por ejemplo, suponga que desea agregar una imagen de fondo a una barra lateral para que parezca un pergamino (Figura 8-12). Si simplemente coloca una sola imagen en el fondo, podría funcionar al principio (arriba a la izquierda en la Figura 8-12), pero si agrega mucho texto dentro de esa barra lateral, no se verá tan bien (arriba a la derecha). en la Figura 8-12). Esto se debe a que la imagen tiene un tamaño y no crecerá ni se reducirá para adaptarse al tamaño de la barra lateral. Afortunadamente, CSS3 te permite agregar varias imágenes al fondo de un elemento. En el ejemplo del pergamino, puede utilizar tres imágenes de fondo: una para la parte superior del pergamino, otra para la parte inferior del pergamino y otra para su área de texto. Esa última imagen es una imagen en mosaico sin problemas, por lo que a medida que la barra lateral se hace más alta, la imagen simplemente se divide en mosaicos para adaptarse al espacio. Por supuesto, también puede usar varias imágenes para tareas más simples. Por ejemplo, supongamos que desea agregar una imagen colorida y ricamente texturizada al fondo de un elemento y también agrega un logotipo de dos colores. Como se explica en el cuadro de la página 242, JPEG es un mejor formato cuando una imagen tiene muchos colores, mientras que PNG8 es mejor para áreas de color sólido como un logotipo. En este caso, puedes tener lo mejor de ambos mundos usando un JPEG para el fondo colorido y un PNG8 para el logotipo. Para múltiples imágenes de fondo, simplemente use elimagen de fondopropiedad con una lista de imágenes separadas por comas como esta: imagen de fondo: url(scrollTop.jpg), url(scrollBottom.jpg), url(desplazamientoMedio.jpg); NotaEn este código de ejemplo, cada URL aparece en su propia línea, pero no es necesario que lo haga de esa manera. Puede escribir todo esto en una sola línea (muy larga). Sin embargo, a la mayoría de los diseñadores les resulta más fácil de leer si coloca cada imagen en su propia línea y usa espacios (o tabulaciones) para sangrar las siguientes líneas y alinearlas. Solo tenga en cuenta que necesita una coma después de cada imagen especificada, excepto la última, que generalmente requiere el punto y coma necesario para finalizar una declaración. Debido a que las imágenes de fondo normalmente se dividen en mosaicos, por lo general deberá incluir un repetición de fondoTambién puede agregar otras propiedades de fondo (si no lo hace, las imágenes simplemente se colocarían una encima de la otra ocultando todas las imágenes debajo). También puede agregar otras propiedades de fondo, con un conjunto similar de valores separados por comas como este: repetición de fondo: sin repetición, no repetir, repetir-y; Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 257 usando Múltiple Fondo IMÁGENES Figura 8-12 Tenga en cuenta que varias imágenes de fondo no funcionan en Internet Explorer 8. Consulte el cuadro en la página 259 para conocer una forma de usar varias imágenes de fondo con IE 8. Cuando se usan varios valores como este, el primer valor (sin repeticiónen este ejemplo) va con la primera imagen listada en elimagen de fondopropiedad (scrollTop.png); el segundo va con la segunda imagen de la lista, y así sucesivamente. Debido a que esto puede volverse confuso rápidamente, muchos diseñadores web usan el método abreviado para especificar varias imágenes, como esta: fondo: url (scrollTop.jpg) centro superior sin repetición, url(scrollBottom.jpg) centro inferior sin repetición, url(scrollMiddle.jpg) centro superior repetición-y; 258 Css3: el manual perdido www.it-ebooks.info UTILIZANDO NotaMúltiples imágenes de fondo se superponen, como capas en un programa de edición de imágenes. El orden en que enumera las imágenes de fondo determina qué imagen aparece en la parte superior. La primera imagen de la lista está en la degradado Antecedentes capa superior del elemento, la segunda en la segunda capa y la última en la capa inferior. En el código de ejemplo anterior, la parte superior del pergamino (scrollTop.jpg) está encima de la parte inferior del pergamino (scrollbottom.jpg), que a su vez se encuentra sobre el área de texto del pergamino (scrollMedio.jpg). CLÍNICA DE USUARIOS ELÉCTRICOS Falsificar múltiples fondos Internet Explorer 8 todavía se usa mucho (gracias a Windows XP). Pero . barra lateral { fondo: url(scrollMiddle.jpg) center top repeat- debido a que IE 8 no admite varias imágenes, es posible que sienta que y; debe mantenerse alejado de ellas. Sin embargo, hay un par de formas de falsificar múltiples fondos. La más simple es agregar imágenes de } fondo individuales a los elementos superpuestos. Por ejemplo, puede . barra lateral:antes de { contenido: url (scrollTop.jpg); lograr el mismo efecto de desplazamiento que se muestra en la Figura 8-12 agregando el área de texto central del desplazamiento al fondo del } <div>etiqueta, que crea esa región de la barra lateral. Luego, agregue la . barra lateral: después de { contenido: url (scrollBottom.jpg); parte superior del pergamino al fondo del primer elemento en la barra lateral; en este caso, es un <h2>etiqueta con el texto "Anuncios". Finalmente, agregue la imagen de la parte inferior del pergamino a la parte inferior del último elemento en la barra lateral, en este caso, una lista desordenada. El título y la lista desordenada están dentro del div de la barra lateral, y esto se encuentra en la parte superior de <división>. } Para mover las imágenes para que no estén en la parte superior o inferior del elemento, deberá aprender a usar el posicionamiento absoluto para poder mover el contenido generado. Aprenderá sobre el posicionamiento absoluto en profundidad en el Capítulo 15. Los fondos múltiples de CSS3 le permiten agregar tantas Otra técnica utiliza contenido generado por CSS (página 595). El imágenes de fondo como desee. Al usar contenido generado, está contenido generado es una forma de agregar contenido antes y/o limitado a solo tres imágenes: el fondo del elemento y sus después de un elemento. Puede agregar texto, pero también puede pseudoclases antes y después. Utilizará este método de contenido agregar imágenes. El contenido generado se encuentra sobre el generado para crear varias imágenes de fondo en el tutorial de la elemento, por lo que en el ejemplo de desplazamiento, podría agregar página 290. la parte superior del desplazamiento al :antespseudo clase y la parte inferior del desplazamiento a la :despuéspseudo clase, así: Utilizando fondos degradados Gradientes: las transiciones suaves de color de azul a rojo o de negro a blanco son elementos básicos comunes de cualquier programa de edición de imágenes. Crear cambios sutiles de un color similar a otro crea una especie de calidad brumosa; Apple usa degradados en los botones y otros elementos de la interfaz de usuario en su software OS x y iPhone. Solía ser que tenías que abrir Photoshop y crear un archivo de imagen enorme con el degradado que buscabas. Ahora puede dejar que el navegador cree gradientes para usted. Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 259 UTILIZANDO degradado Antecedentes CSS3 admite gradientes de fondo, básicamente, imágenes creadas sobre la marcha por un navegador web. De hecho, se utiliza el habitualimagen de fondopropiedad para crear el degradado. Tienes varios tipos de degradados para elegir. Gradientes lineales El tipo más básico de gradiente es un gradiente lineal. Se mueve en línea recta desde un borde de un elemento a otro, pasando de un color a otro (consulte la Figura 8-13). En esencia, especifica dónde comienza el degradado (en el borde de un elemento), el color inicial y el color final. Por ejemplo, para crear un degradado que comienza con negro en el borde izquierdo de un elemento y luego cambia a blanco en el extremo derecho del elemento, escribiría esto: imagen de fondo: degradado lineal (izquierda, negro, blanco);; NotaComo se explica en el recuadro de la página 209, no puede simplemente usar elgradiente lineal( )valor para las imágenes de fondo. Para que funcione, la mayoría de los navegadores requieren un prefijo de proveedor, como:webkit-linear-gradiente. Puede crear un degradado utilizando cualquier valor de color CSS (página 54), como palabras clave comoblancoonegro,valores hexadecimales como #000000,valores RGB comorgb(0,0,0), etcétera. Para identificar la posición inicial, puede utilizarizquierda, derecha, arriba,oabajo. De hecho, si desea un degradado que se mueva en diagonal a lo largo del elemento, puede combinar palabras clave. Por ejemplo, para dibujar un degradado que viaje desde la esquina superior izquierda hasta la esquina inferior derecha cambiando de negro a blanco, escriba esto: imagen de fondo: degradado lineal (arriba a la izquierda, negro, blanco); Figura 8-13 Los degradados lineales le permiten omitir el antiguo método de agregar degradados al fondo de un elemento: cree el degradado como un gráfico en Photoshop o Fireworks y luego use elfondoimagenpropiedad para colocar ese gráfico en el fondo del elemento. 260 Css3: el manual perdido www.it-ebooks.info UTILIZANDO Tampoco está limitado a las palabras clave. Puede especificar un valor de grado que especifique la dirección del degradado. Los grados se escriben con un número de 0 a 360 seguido degradocomo degradado Antecedentes esto:0 grados (Figura 8-14). Tendrá que hacer algunas pruebas y errores para obtener el efecto que desea, pero así es como funciona aproximadamente:0 gradossignifica comenzar a la izquierda y moverse a la derecha, mientras que45 gradoscomienza en la esquina inferior izquierda y mueve el degradado 45 grados hacia la esquina superior derecha. Por ejemplo, el degradado creado en la imagen inferior izquierda de la Figura 8-13 utiliza esta declaración: imagen de fondo: gradiente lineal (45 grados, rgb (0,0,0), rgb (204,204,204)); En un elemento perfectamente cuadrado,45 gradosrepresenta la esquina inferior izquierda y es lo mismo que usar la palabra claveabajo a la izquierda.En otras palabras esto: imagen de fondo: gradiente lineal (45 grados, rgb (0,0,0), rgb (204,204,204)); Es lo mismo que esto: imagen de fondo: degradado lineal (abajo a la izquierda, rgb (0,0,0), rgb (204,204,204)); Sin embargo, en una imagen rectangular, estas dos declaraciones no crearán los mismos degradados. Eso es porque un navegador dibuja una línea imaginaria a través del medio del elemento. El ángulo que especifique es el ángulo de esa línea. Por ejemplo, en el elemento ancho y rectangular de la Figura 8-14, abajo, una línea dibujada a 45 grados por el centro en realidad no va desde la parte inferior izquierda hasta la parte superior derecha del elemento. Se ejecuta en algún lugar entre la izquierda y la mitad de la parte inferior del elemento hasta un punto entre el borde medio y derecho en la parte superior. Figura 8-14 El valor de grado que proporciona para un degradado lineal se usa para crear una línea que pasa por el medio de un punto imaginario en el centro del elemento. El gradiente se dibuja a lo largo de esta línea. El valor dicta dónde comienza el gradiente y la pendiente del gradiente. Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 261 UTILIZANDO degradado Antecedentes PARADAS DE COLOR Los degradados que has visto hasta ahora usan solo dos colores, pero puedes agregar tantos como quieras. Los colores adicionales se llamanel color se detiene,y dejan que el fondo haga la transición de un color a un segundo color, luego de ese segundo color a un tercer color, y así sucesivamente, hasta que el color final finaliza el degradado. Para agregar paradas de color, simplemente agregue más valores de color al degradado. Por ejemplo, la imagen de abajo a la derecha en la Figura 8-13 contiene tres colores: negro a blanco a negro: imagen de fondo: degradado lineal (izquierda, negro, blanco, negro); Por supuesto, puede usar cualquier valor de color (expresado como palabras clave, hexadecimal o RGB) e incluso mezclarlos y combinarlos, por lo que incluso puede escribir la línea de código anterior de esta manera: imagen de fondo: gradiente lineal (izquierda, negro, rgb (255,255,255), #FFFFFF, HSL (0,0,0%)); Los navegadores web distribuyen uniformemente los colores, por lo que en este ejemplo, el extremo izquierdo comienza en negro; el fondo del medio del elemento es blanco; y luego el extremo derecho del elemento es negro. Sin embargo, puede colocar las diferentes paradas de color en ubicaciones más específicas en el fondo agregando un segundo valor después del color. CONSEJOPuede obtener algunos efectos realmente salvajes si agrega elposición de fondopropiedad a un elemento con un fondo degradado. Esencialmente, puede cambiar lo que el navegador considera que es el punto de partida del degradado. Pruébalo. Por ejemplo, supongamos que desea comenzar con un rojo intenso, luego aumentar rápidamente a un naranja quemado alrededor del 10 por ciento en el elemento, permanecer en ese color naranja durante la mayor parte del elemento y luego volver rápidamente a un rojo intenso, como la imagen superior en la Figura 8-15. Para hacer esto, usaría cuatro paradas de color (rojo, naranja, naranja y rojo) y especificaría dónde deben colocarse las dos paradas blancas: imagen de fondo: degradado lineal (izquierda, #900, #FC0 10 %, #FC0 90 %, #900); Note que el10%se aplica al segundo color (el naranja): esto le dice al navegador que necesita llegar a este color al 10 por ciento del ancho del elemento. Asimismo, el90% indica que el navegador debe permanecer en ese color naranja hasta que alcance el 90 por ciento del elemento y luego comience la transición al rojo intenso en el extremo derecho del elemento. NotaNo tiene que usar porcentajes para colocar paradas de color. También puede usar píxeles o ems. Sin embargo, los porcentajes son más flexibles y se adaptan a medida que cambia el ancho o la altura de un elemento. Una excepción son los degradados lineales repetitivos que se analizan en la página 260. Los valores de píxel para las paradas son muy útiles para crear este tipo de degradados en mosaico. No necesita usar ningún valor para el primer o último color, ya que el navegador asume que el primer color comienza en0%y el último color termina en100%.Sin embargo, si quisiera mantener un color de inicio sólido más adentro del elemento, podría proporcionar un 262 Css3: el manual perdido www.it-ebooks.info UTILIZANDO valor después del primer color. Por ejemplo, la imagen inferior de la Figura 8-15 se crea con esta declaración: degradado Antecedentes imagen de fondo: degradado lineal (izquierda, #900 20 %, #FC0 30 %, #FC0 70 %, #900 80 %); Observe que el primer color—#900—también tiene una posición de20%.Esto significa que el primer 20 por ciento del elemento (de izquierda a derecha) debe ser de color rojo sólido. Luego, en el punto del 20 por ciento, el degradado debería comenzar a cambiar al color naranja en el 30 por ciento. Figura 8-15 Puede especificar dónde aparecen las paradas de color en un degradado lineal. En el ejemplo superior, un color rojo oscuro cambia rápidamente de la izquierda a un color naranja en el 10 por ciento del ancho del elemento. Para crear un área grande de color sólido en el medio, necesita dos paradas de color con el mismo valor de color. Básicamente, un degradado de un color al mismo color no es un degradado en absoluto. Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 263 UTILIZANDO degradado Antecedentes PREFIJOS DE PROVEEDORES Y SOPORTE DE INTERNET EXPLORER Como leyó en el cuadro de la página 209, muchas de las propiedades CSS más nuevas requieren un prefijo de proveedor antes del nombre de la propiedad: -webkit-para Chrome y Safari, -moz-para Firefox, y -o-para Ópera. Esto es cierto para los gradientes. Desafortunadamente, debe escribir declaraciones para cada uno de los navegadores. En otras palabras, para que el degradado simple de la página 262 funcione en los diferentes navegadores, debe escribir este código: imagen de fondo: -webkit-linear-gradient (izquierda, negro, blanco); imagen de fondo: -moz-linear-gradient (izquierda, negro, blanco); imagen de fondo: -o-linear-gradient (izquierda, negro, blanco); imagen de fondo: degradado lineal (izquierda, negro, blanco); Así es, cuatro veces el trabajo. Para empeorar las cosas, los gradientes no son compatibles con Internet Explorer 9 y versiones anteriores. Si elige usar degradados, debe proporcionar un color de respaldo para IE 9 y versiones anteriores. Encuentre un color sólido que coincida con el tono general de su degradado y declárelo primero, seguido de las declaraciones de degradado, así: color de fondo: #FC0; imagen de fondo: -webkit-linear-gradient (izquierda, #900, #FC0, #900); imagen de fondo: -moz-linear-gradient (izquierda, #900, #FC0, #900); imagen de fondo: -o-linear-gradient (izquierda, #900, #FC0, #900); imagen de fondo: degradado lineal (izquierda, #900, #FC0, #900); IE 9 aplicará el color de fondo y, dado que no comprende los gradientes lineales, omitirá las demás declaraciones. Otros navegadores aplicarán el color de fondo, pero también crearán un degradado que cubra el color de fondo. Si está utilizando colores RGBA con algún nivel de transparencia, entonces no querrá que se vea el color de fondo. En este caso, utilice elfondopropiedad abreviada en su lugar, y lacolor de fondoserá anulado (gracias al comportamiento peculiar del fondopropiedad abreviada discutida en la página 255). Entonces puedes usar este código para los colores RGBA: color de fondo: #FC0; fondo: -webkit-linear-gradient(izquierda, rgba(153,0,0,.5), #FC0, rgba(153,0,0,.5)); fondo: -moz-linear-gradient(izquierda, rgba(153,0,0,.5), #FC0,rgba(153,0,0,.5)); fondo: -o-linear-gradient(izquierda, rgba(153,0,0,.5), #FC0, rgba(153,0,0,.5)); fondo: degradado lineal (izquierda, rgba (153,0,0, .5), #FC0, rgba (153,0,0, .5)); NotaComo puede ver, hay mucho código involucrado en la creación de gradientes. Además, las versiones anteriores de WebKit (Safari en Mac y navegadores iOS y Android) siguen una sintaxis completamente diferente para los degradados lineales. Debido a esto, probablemente querrá usar la herramienta de creación de gradientes en línea que se describe en la página 269. Hará que su proceso de creación de gradientes sea mucho más fácil. 264 Css3: el manual perdido www.it-ebooks.info UTILIZANDO Repetición de degradados lineales Normalmente, un degradado lineal llena todo el elemento con el primer color en un punto y el degradado Antecedentes último color en el borde opuesto del elemento. Sin embargo, es posible crear degradados repetitivos para que pueda crear patrones de degradado. En esencia, define un degradado con paradas de color específicas; el navegador dibuja el degradado y luego repite ese patrón, colocándolo en el fondo del elemento. Por ejemplo, para obtener el gradiente repetitivo de la imagen de la izquierda en la Figura 8-16, puede escribir este código: imagen de fondo: gradiente lineal repetitivo (abajo a la izquierda, #900 20px, #FC0 30px, #900 40px) En casos como este, es muy útil usar valores de píxel para las paradas de color. En esencia, el navegador dibuja un degradado que comienza en la parte inferior izquierda; comienza con 20 píxeles de color rojo intenso, luego pasa a naranja a los 30 píxeles y luego vuelve a rojo intenso a los 40 píxeles. Una vez que se dibuja ese degradado, el navegador simplemente lo coloca en mosaico en el fondo como una imagen en mosaico. NotaHay mucho espacio para experimentar con gradientes. Para ver algunas de las cosas increíbles que son posibles, visite la galería de patrones CSS3 enhttp://lea.verou.me/css3patterns/,www.standardista. com/ cssgradients/, y el increíble uso de gradientes para crear banderas del mundo enwww.standardista.com/ CSS3gradients/flags.html. Incluso puede usar degradados repetitivos para crear rayas sólidas sin ninguna de las transiciones elegantes y sutiles entre colores. Por ejemplo, la imagen de la derecha en la Figura 8-16 se crea con esta declaración: imagen de fondo: gradiente lineal repetitivo (45 grados, #900 0, #900 10px, #FC0 10px, #FC0 20px); Aquí, comienzas con rojo intenso (#900)en el0punto, y volver a rojo en el10 píxeles punto. Dado que está cambiando entre los mismos colores, el navegador lo dibuja como un color sólido. A continuación, hace la transición a naranja (#FC0)a 10 píxeles. Dado que ese es el mismo lugar en el que termina el rojo, no es una transición sutil, el patrón simplemente va de rojo a naranja. Finalmente, la transición pasa al mismo naranja a 20 píxeles, creando otra línea continua. Debido a que se trata de un degradado lineal repetitivo, el navegador simplemente coloca en mosaico ese patrón para rellenar el fondo del elemento. Ahora las malas noticias. La repetición de degradados lineales funciona en la mayoría de los navegadores, pero no en versiones anteriores de Safari (anteriores a 5.1 o iOS 5) o en IE 9 y anteriores. Por lo tanto, es una buena idea agregar un color de fondo alternativo; también debe asegurarse de incluir todas las declaraciones prefijadas por el proveedor, por lo que el primer gradiente de repetición se vería así: Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 265 UTILIZANDO degradado Antecedentes color de fondo: #FC0; fondo: -webkit-repeating-linear-gradient (abajo a la izquierda, #900 20px, #FC0 30px, #900 40px) fondo: -moz-repeating-linear-gradient(abajo a la izquierda, #900 20px, #FC0 30px, #900 40px) fondo: -o-repetición-degradado lineal (abajo a la izquierda, #900 20px, #FC0 30px, #900 40px) fondo: gradiente lineal repetitivo (abajo a la izquierda, #900 20px, #FC0 30px, #900 40px) Figura 8-16 Puede crear patrones de rayas utilizando los degradados lineales repetitivos de CSS3. Gradientes radiales CSS también proporciona una forma de crear degradados radiales: degradados que irradian hacia afuera en un patrón circular o elíptico (consulte la Figura 8-17). La sintaxis es similar a los degradados lineales y, en su forma más simple, solo necesita proporcionar un color inicial (el color en el medio del degradado) y un color final (el color al final del degradado). Por ejemplo, la imagen superior izquierda de la Figura 8-17 se crea con este código: imagen de fondo: degradado radial (rojo, azul); Esto crea una forma elíptica que se ajusta a la altura y el ancho del elemento, con el centro del degradado (el rojo inicial) en el centro del elemento. También puede hacer degradados circulares agregando una palabra clave "círculo" antes de los colores. Por ejemplo, la imagen superior derecha de la Figura 8-17 se crea con este código: imagen de fondo: degradado radial (círculo, rojo, azul); 266 Css3: el manual perdido www.it-ebooks.info UTILIZANDO Mientras que un navegador normalmente dibuja el centro de un degradado radial en el centro del elemento, puede colocar el centro del degradado usando las mismas palabras clave y degradado Antecedentes valores de posicionamiento que usa para elposición de fondopropiedad (página 246). Por ejemplo, en la imagen central izquierda de la Figura 8-17, el degradado radial comienza un 20 por ciento desde el borde izquierdo del elemento y un 40 por ciento desde la parte superior del elemento. Los valores de posicionamiento van antes de la palabra clave color y forma, así: imagen de fondo: gradiente radial (20% 40%, círculo, rojo, azul); Para dictar el tamaño del degradado, puede usar una de cuatro palabras clave: • Ellado más cercanoLa palabra clave le dice al navegador que haga que el degradado se extienda desde el centro solo hasta el lado más cercano al centro. Por ejemplo, en la imagen central izquierda de la Figura 8-17, el lado más cercano al centro del degradado es el borde superior, por lo que el radio del círculo viaja desde el centro del círculo hasta este borde. Esto mantiene todo el degradado dentro del elemento. Aquí está el código para producir este gradiente: imagen de fondo: degradado radial (20% 40%, círculo del lado más cercano, rojo, azul); Cuandolado más cercanose aplica a un gradiente elíptico, los dos lados más cercanos (es decir, la parte superior o inferior y los lados izquierdo o derecho) se utilizan para calcular los radios x e y de la elipse. • Elesquina más cercanaLa palabra clave mide el ancho del degradado desde su centro hasta la esquina del elemento más cercano (centro-derecha en la Figura 8-17). Esto puede significar que el gradiente puede desbordar el elemento. Por ejemplo, el círculo dibujado en la parte superior de la imagen del centro a la derecha en la Figura 8-17 demuestra el tamaño real del degradado. Parte del gradiente se extiende más allá del elemento: imagen de fondo: degradado radial (20 % 40 %, círculo en la esquina más cercana, rojo, azul); • Ellado más lejanopalabra clave mide el radio de un círculo desde su centro hasta el lado del elemento que está más alejado. En el caso de un gradiente elíptico, es la distancia desde el centro hasta el lado superior o inferior más lejano y el lado izquierdo o derecho más lejano. Aquí está el código para producir la imagen en la parte inferior izquierda de la Figura 8-17: imagen de fondo: gradiente radial (20% 40%, círculo del lado más lejano, rojo, azul); • Elesquina más lejanapalabra clave mide el radio de un círculo desde su centro hasta la esquina del elemento que está más alejado. Aquí está el código para producir la imagen en la parte inferior derecha de la Figura 8-17: imagen de fondo: degradado radial (20 % 40 %, círculo en la esquina más alejada, rojo, azul); Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 267 UTILIZANDO degradado Antecedentes Figura 8-17 Los degradados radiales son degradados elípticos (arriba a la izquierda) o circulares (arriba a la derecha). Puede controlar la ubicación del degradado dentro del fondo del elemento, así como controlar el tamaño del degradado. Al igual que con los degradados lineales, puede usar varias paradas de color y establecer la ubicación de esas paradas de color. Por ejemplo, supongamos que desea un degradado circular compuesto por un rojo brillante, un naranja y un amarillo. Desea que el rojo aparezca por un tiempo antes de que cambie a naranja, y luego el naranja dura un poco más hasta que aparece el amarillo al final. Puede usar valores porcentuales para dictar dónde aparecen los colores: imagen de fondo: degradado radial (20 % 40 %, círculo, 20 % rojo, 80 % naranja, amarillo); Por supuesto, al igual que con los degradados lineales, puede usar valores de color CSS válidos, por lo que puede reescribir este código como: imagen de fondo: degradado radial (20 % 40 %, círculo, rgb (255,0,0) 20 %, rgb (255,165,0) 80 %, #FFFF00); Al igual que con los degradados lineales, Internet Explorer 9 y versiones anteriores no sabrán de lo que estás hablando si usas un degradado radial, y tampoco las versiones de Safari anteriores a 5.1 (y iOS 5). Debe agregar un color de fondo de respaldo y también deberá agregar todos los prefijos del proveedor. Por ejemplo: 268 Css3: el manual perdido www.it-ebooks.info SOLICITUD FÁCIL DEGRADADOS con color de fondo: rojo; fondo: -webkit-radial-gradient(20% 40%, circle, red 20%, orange 80%, yellow); coLorziLLa fondo: -moz-radial-gradient(20% 40%, circle, red 20%, orange 80%, yellow); fondo: -o-radial-gradient(20% 40%, circle, red 20%, orange 80%, yellow); fondo: degradado radial (20 % 40 %, círculo, 20 % rojo, 80 % naranja, amarillo); Gradientes radiales repetitivos Al igual que con los degradados lineales, puede crear degradados radiales que se repiten, perfectos para ese aspecto de diana o cuando desee hipnotizar a los visitantes de su sitio web. Debe asegurarse de agregar porcentajes o valores reales de píxeles o em para las distintas paradas de color para que el navegador sepa el tamaño de un solo degradado radial y luego pueda repetirlo. Por ejemplo: imagen de fondo: gradiente radial repetitivo (círculo, rojo 20 px, naranja 30 px, amarillo 40 px, rojo 50 px); Tenga en cuenta que para crear un degradado radial repetitivo de apariencia suave, debe terminar con el mismo color con el que comenzó (rojo, en este ejemplo). Esto proporciona un cambio de color suave de regreso al color original. Si no lo hace (por ejemplo, si acaba de terminar con el color amarillo en el código anterior), entonces hay una línea nítida donde termina el último color y comienza el primer color del degradado repetido. CONSEJODebido a que los navegadores web tratan los gradientes lineales y radiales simplemente como imágenes de fondo, puede usar las otras propiedades de las imágenes de fondo, comotamaño de fondo, posición de fondo,y así sucesivamente con ellos. Además, puede tener múltiples degradados separados por comas en un solo estilo, al igual que puede tener múltiples imágenes de fondo (página 257). De hecho, puedes mezclar imágenes con degradados en un mismo elemento. Aplicación de degradados fáciles con Colorzilla La complejidad de los degradados y su compatibilidad limitada con el navegador pueden haber hecho que decidas no utilizarlos en tu CSS. Afortunadamente, existe una herramienta en línea que facilita la creación de la mayoría de los tipos de degradados (excepto los degradados repetidos). Es el humildemente llamado Ultimate CSS Gradient Generator (www.colorzilla.com/gradienteeditor/), que se muestra en la Figura 8-18. Si bien esta herramienta en línea es solo una página web, tiene muchas opciones. Aquí hay una forma de usarlo: 1.Comience con un ajuste preestablecido seleccionando uno de los degradados en la ventana de ajustes preestablecidos (#1 en la Figura 8-18). No tienes que hacer este paso, pero construir el degradado puede ser más rápido si comienzas con algo parecido a lo que buscas. Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 269 SOLICITUD FÁCIL DEGRADADOS con coLorziLLa 2.En el menú de orientación, elija un tipo de degradado (#2 en la Figura 8-18). Esta herramienta está limitada a degradados radiales y lineales que van de arriba a abajo, de izquierda a derecha, de arriba a la izquierda a abajo a la derecha, de abajo a la izquierda a arriba a la derecha o en diagonal. Sin embargo, una vez que haya creado el código, puede reemplazar la palabra clave angle (arriba a la izquierda,por ejemplo) con un título (65 grados,Por ejemplo). Asimismo, la herramienta crea degradados radiales elípticos; si quieres un degradado circular, solo encuentraelipsey reemplazarlo concírculoen el CSS final. No puede crear degradados lineales repetidos o degradados radiales repetidos con esta herramienta. 3.Para cambiar el color y la posición de una parada de color, haga clic para seleccionarla (#3 en la Figura 8-18). A menos que le gusten los colores preestablecidos, deberá editar cada una de las paradas de color. 4.Para cambiar el color de la parada de color, haga clic en el cuadro de color (#4 en la Figura 8-18). Aparece un selector de color emergente. Puede hacer clic para seleccionar un color o, si conoce los valores RGB, hexadecimales o HSL del color, puede escribirlos. Haga clic en Aceptar para seleccionar el nuevo color y cerrar el selector de color. 5.opcionalmente, puede establecer la posición de la parada de color en el campo Ubicación a la derecha del cuadro de color (#5 en la Figura 8-18). Escriba un valor de porcentaje o, más fácilmente, arrastre la parada de color en la barra de gradación (#3 en la Figura 8-18). NotaPara eliminar una parada de color, selecciónela de la barra de gradación (#3 en la Figura 8-18) y presione el botón Eliminar debajo de ella. 6.Agregue paradas de color adicionales haciendo clic debajo de la barra de gradación en el lugar donde desea agregar la parada de color. Después de agregar una nueva parada de color, cambie su color y posición según lo desee (pasos 4 y 5). 7.También puede alterar la opacidad del degradado haciendo que el principio o el final sean ligeramente o completamente transparentes.Seleccione una de las paradas encima de la barra de gradación (#6 en la Figura 8-18) y luego ajuste su opacidad y posición (#7 en la Figura 8-18). 270 Css3: el manual perdido www.it-ebooks.info SOLICITUD FÁCIL DEGRADADOS NotaUltimate CSS Gradient Generator también intenta crear un degradado que funcione un poco en IE 9 y versiones anteriores. Haga clic en la casilla de verificación de IE en el cuadro de vista previa de la parte superior derecha (vea la Figura 8-18) para ver el efecto, que utiliza con coLorziLLa una función patentada de IE llamadafiltrospara lograr un gradiente. Desafortunadamente, IE solo puede simular gradientes lineales que se ejecutan de izquierda a derecha o de arriba a abajo, no gradientes radiales ni gradientes en ángulo. 8.una vez que haya creado el degradado, señale el cuadro CSS y haga clic en el botón Copiar cuando aparezca (#8 en la Figura 8-18). Esto copia el código CSS en el portapapeles de su computadora. Luego puede ir al editor de texto de su elección y pegar el código en el estilo al que desea agregar un degradado de fondo. Ultimate CSS Gradient Generator utiliza una característica exclusiva de IE para simular un degradado para las versiones 9 y anteriores de Internet Explorer. De hecho, proporciona dos alternativas, una para IE 9 y otra para versiones anteriores. El de IE 9 utiliza otra tecnología de imagen: SVG ográficas vectoriales escalables—para lograr su magia, y usarla es una buena idea. El de las versiones anteriores de IE usa un filtro, que no siempre puede simular el gradiente correctamente y ralentiza el rendimiento de IE, por lo que es mejor que ignore IE 8 y versiones anteriores. Para hacer esto: 1.Active la casilla de verificación Compatibilidad con IE9 en la parte inferior derecha debajo del cuadro de código CSS (consulte la Figura 8-18). Esto agrega el código para crear un degradado SVG. 2.Copie el código CSS (Paso 8 anterior) y péguelo en su CSS. 3.Localice el código de filtro de IE y elimínelo. La última línea del código que copiaste se parece a esto: filtro: progid:DXImageTransform.Microsoft.gradient(startColorstr='#3f4c6b', endColorstr='#7ed6d3',GradientType=1); /* IE6-8 respaldo en gradiente horizontal */ Si realmente necesita admitir IE 8, deje este código y pruebe el gradiente en IE 8 para asegurarse de que se muestre correctamente. 4.Finalmente, agregue uncolor de fondopropiedad en el lugar donde eliminó el código de filtro de IE; este es el color que aparecerá en el fondo para IE 8 y versiones anteriores. Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 271 Tutorial: MEJORANDO IMÁGENES Figura 8-18 La forma más fácil de comenzar con los degradados es usar una herramienta en línea como Ultimate CSS Gradient Generator ( www.colorzilla. com/gradienteditor/). A la izquierda, cerca de la parte superior de la página, encontrarás una galería de degradados ya creados. Puede elegir uno de ellos como punto de partida simple y ajustar sus colores y paradas de color para que coincidan con su visión, o crear su propio degradado. Tutorial: Mejora de imágenes Una galería de fotos es un ejemplo perfecto de una página web llamativa. Este tutorial reúne una variedad de técnicas de estilo de imagen. Darás formato a las imágenes con marcos y leyendas, crearás una galería de fotos que sea lo suficientemente flexible para verse bien en una variedad de tamaños de ventana y usarás elsombra de la caja(página 210) para crear sombras paralelas de aspecto profesional. Para comenzar, debe descargar los archivos del tutorial que se encuentran en el sitio web complementario de este libro enwww.sawmac.com/css3/. Haga clic en el enlace del tutorial y descargue los archivos. Todos los archivos están incluidos en un archivo zip, por lo que primero debe descomprimirlos. (Hay instrucciones detalladas en el sitio web). Los archivos para este tutorial están en el08carpeta. 272 Css3: el manual perdido www.it-ebooks.info Tutorial: MEJORANDO Enmarcar una imagen Estará trabajando en una página web básica del sitio web ficticio (en caso de que pensara que era real) CosmoFarmer.com (Figura 8-19). En este caso, ya hay una hoja de estilo externa adjunta a la página, que agrega un formato de texto básico. IMÁGENES 1.Inicie un navegador web y abra el archivo.08→01_imagen_ex→imagen.html. Figura 8-19 Antes y después: CSS, eso es. Si confía solo en HTML, las imágenes ocupan mucho espacio (arriba). Con un poco de CSS (abajo) puedes encuadrar una imagen y moverla fuera del camino. Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 273 Tutorial: MEJORANDO IMÁGENES 2.abre el archivoestilos.cssen elimagen_excarpeta en su editor de texto favorito. Este archivo es la hoja de estilo externa utilizada por elimagen.htmlarchivo. Comenzará agregando un estilo de clase a esta hoja de estilo y luego aplicando una clase a <imagen> etiqueta en el archivo HTML. 3.Desplácese hasta la parte inferior del archivo y luego escriba lo siguiente: img.figura { } el seleccionadorimg.figurase dirige a cualquier <imagen>etiqueta con elcifraclase que se le aplica. Usará esto para formatear selectivamente solo las imágenes que desee. (También puede simplemente nombrar el estilo.cifra-la única diferencia es que ese estilo se aplicaría acualquier etiqueta con la figura de la clase, no solo imágenes). 4.Agregarflotarymargenpropiedades al estilo que acaba de crear, así: flotar derecho; margen: 10px; El flotante derecho mueve la imagen al lado derecho de la página, permitiendo que el texto se mueva hacia arriba y se ajuste al borde izquierdo de la foto. Los márgenes le dan a la foto un poco de espacio para respirar y la alejan del texto, el costado de la página y el título de arriba. A continuación, agregará un borde, un color de fondo y algo de relleno para que la imagen se parezca más a una instantánea real. 5.Agregarborde, color de fondo,yrelleno,para que el estilo final se vea así: img.figura { flotar derecho; margen izquierdo: 10px; margen inferior: 10px; borde: 1px sólido #666; color de fondo: #CCC; relleno: 10px; } Si guarda este archivo y luego obtiene una vista previa de la página web en este momento, no verá ningún cambio, ya que el estilo de la clase no tiene efecto hasta que haya agregado la clase a una etiqueta. 6.Guardar y cerrar elestilos.cssarchivo y abra elimagen.htmlarchivo.Localiza el <img> etiquetar y agregarclase = "figura"por lo que la etiqueta se ve así: <img src="../images/grass.jpg" alt="Apartamento Grass" width="200" height="200" class="figure"> Ahora esa imagen adquiere todas las propiedades de formato que definió para la . cifraestilo de clase 274 Css3: el manual perdido www.it-ebooks.info 7.Obtenga una vista previa de la página en un navegador web.Debería verse como la imagen inferior en la Figura 8-19. Tutorial: MEJORANDO IMÁGENES Una imagen puede valer más que mil palabras, pero a veces aún se necesitan algunas palabras para explicar una imagen. Entonces, en la siguiente parte de este tutorial, agregará un título debajo de la foto. Con frecuencia querrá agregar un título a una imagen o foto para proporcionar más información sobre el sujeto, dónde se tomó la foto, etc. En lugar de simplemente hacer flotar la imagen, como hizo en el ejercicio anterior, desea que el texto de la leyenda también flote. La mejor manera de hacer que ambos floten es envolver la imagen y el texto en un contenedor que flote como una sola unidad. Este método mantiene juntos la foto y el texto relacionado. Si decide más tarde que desea cambiar su diseño, tal vez hacerlos flotar hacia la izquierda, no hay problema: simplemente cambie el formato de todo el contenedor. Afortunadamente, HTML5 incluye dos etiquetas nuevas para este requisito: la <figura>La etiqueta tiene la intención de encerrar una imagen que pretende ser una figura ilustrativa. Además, el <figcaption>La etiqueta se puede usar para encerrar, lo adivinó, una leyenda de figura. Primero, necesita ajustar algo del HTML. NotaDebido a que ahora está utilizando algunas etiquetas HTML5, debe incluir el archivo JavaScript HTML5shiv para obligar a IE 8 y versiones anteriores a reconocer el <figura>y <figcaption>etiquetas Consulte el recuadro de la página 24. 8.Regrese a su editor de texto y elimagen.htmlarchivo.Localice el <imagen>etiqueta en el código, y primero elimine laclase = "figura"que agregó en el paso 6 y agregue <figura> antes de esa etiqueta. Esto marca el comienzo del contenedor. Ahora agregará el título y cerrará el < figura>para indicar el final del recipiente. 9.Después del <imagen>agregue el código en negrita a continuación, para que el HTML se vea así: <figura> <img src="../images/grass.jpg" alt="Hierba bendita trepadora" width="200" height="200"/> <figcaption>Figura 1: Creeping Bentgrass es más adecuado para uso en exteriores y debe evitarlo el agricultor de interior. </figcaption> </figura> 10Desplácese hasta la parte inferior del archivo y elimine el archivo .cifraestilo que creó anteriormente. Agregará un nuevo estilo para el elemento de figura. Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 275 Tutorial: MEJORANDO IMÁGENES 11Agregue este estilo a laestilos.cssarchivo: cifra { flotar derecho; ancho: 222px; margen: 15px 10px 5px 10px; } Ya has usado elflotar derechopropiedad en el tutorial anterior, y la propiedad margen agrega un pequeño espacio en blanco alrededor de los cuatro bordes del <figura> etiqueta. pero cual es elanchopara, usted pregunta? Aunque la foto tiene un ancho establecido (200 píxeles), el párrafo de título no lo tiene. Cuando no establece un ancho, el párrafo hace que el <figura>Ampliar más que la foto. En este caso, desea que el título sea tan ancho como la foto y su marco. El valor de 222 píxeles proviene de un poco de matemática utilizada para calcular el área total ocupada por la foto en la página: mientras que la foto tiene solo 200 píxeles de ancho, los 10 píxeles de relleno izquierdo y derecho, así como el 1 píxel de la imagen el borde izquierdo y el borde derecho de 1 píxel hacen que el ancho total de la foto sea igual a 222 píxeles de borde a borde (consulte la página 213 para repasar cómo calcular el ancho de un elemento). A continuación, agregará el formato de la imagen. 12Agregue este estilo a laestilos.cssarchivo: figura img { borde: 1px sólido #666; color de fondo: #CCC; relleno: 10px; } Este selector descendiente afecta a cualquier <imagen>etiquetaadentroun <figura>etiqueta. Dado que está utilizando un selector descendiente aquí, no necesita agregar una clase al <img>etiqueta. A continuación, aplicará estilo al pie de foto. 13Agregue el siguiente estilo a laestilos.csshoja de estilo: figcaption { fuente: negrita 1em/normal Verdana, Arial, Helvetica, sans-serif; color: #333; alineación de texto: centro; } Este estilo usa algunas de las propiedades que aprendió en el Capítulo 6 para crear un título alineado en el centro, en negrita y gris usando la fuente Verdana. Afortunadamente, el fuenteLa propiedad abreviada en la primera línea le permite incluir cuatro propiedades diferentes en una sola declaración de estilo. Para que la leyenda se destaque aún más, agregue un color de fondo y un borde. 276 Css3: el manual perdido www.it-ebooks.info Tutorial: MEJORANDO 14Agregue tres propiedades a lafigcaptionestilo, así: IMÁGENES figcaption { fuente: negrita 1em/normal Verdana, Arial, Helvetica, sans-serif; color: #333; alineación de texto: centro; color de fondo: #e6f3ff; borde: 1px punteado #666; relleno: 5px; } El propósito decolor de fondo, borde,yrellenoLas propiedades deben ser claras: para crear un cuadro de color alrededor del título. Ahora es el momento de obtener una vista previa de su trabajo. 15.Guarde los dosimagen.htmlyestilos.cssarchivos y obtener una vista previa de losimagen.html archivo en un navegador web. dieciséis.Ahora ve una razón por la que es más fácil desarrollar un diseño usando una hoja de estilo interna: necesita trabajar y guardar solo un archivo en lugar de dos.La página debería parecerse a la Figura 8-20. (Puede encontrar una versión completa de esta página en el 08_terminado→01_imagen_excarpeta.) Figura 8-20 Con el uso de un contenedor <figura> etiqueta, un flotador a la derecha y un poco de estilo, es fácil agregar leyendas a las fotos. Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 277 Tutorial: CREANDO una fotografía galería Tutorial: Creación de una galería de fotos La gente solía confiar en HTML <mesa>etiqueta para crear filas y columnas para guardar las imágenes en una galería de fotos. Pero puedes lograr el mismo efecto con un poco de CSS y mucho menos de HTML. 1.abre el archivo08→02→galería_ex→galería.html. Primero, una revisión rápida del HTML utilizado para construir la galería de fotos. La página contiene seis fotos y pies de foto. Cada foto y pie de foto está contenido en un < figura>.La foto en sí es un <imagen>etiqueta y el título está dentro de un <figcaption> etiqueta. <figura> <img src="../images/diente de león.jpg" alt="Diente de león" height="200" width="200"/> <figcaption>Figura 6: El diente de león: flagelo del agricultor de apartamentos. </ figcaption> </figura> NotaDebido a que está utilizando algunas etiquetas HTML5, debe incluir el HTML5HTML5shivArchivo JavaScript para obligar a IE 8 y versiones anteriores a reconocer el <figura>y <figcaption>etiquetas Consulte el recuadro de la página 24. 2.Localice el <enlace>cerca de la parte superior del archivo, coloque el cursordespuésesa etiqueta, y luego presione Enter (Return) para crear una nueva línea en blanco. El <enlace>etiqueta adjunta una hoja de estilo externa que contiene algunos formatos básicos. 3.Agregue una hoja de estilo interna.Luego agregue dos nuevos estilos, de la siguiente manera: <estilo> figura img { borde: 1px sólido #666; color de fondo: #FFF; relleno: 4px; } figcaption { fuente: 1,1 em/normal Arial, Helvetica, sans-serif; alineación de texto: centro; margen: 10px 0 0 0; } </estilo> Estos dos estilos agregan un borde a cada imagen de la galería y establecen la fuente, la alineación y los márgenes de los títulos. El primero es un selector descendente para apuntar solo a las imágenes dentro de las figuras. A continuación, coloque las fotos una al lado de la otra. 278 Css3: el manual perdido www.it-ebooks.info Tutorial: CREANDO NotaCuando inserte la hoja de estilo interna, asegúrese de colocarla en la sección de encabezado de la página, después de la etiqueta de enlace y antes del comentario condicional de IE, que adjunta elHTML5shivArchivo JavaScript (página 24). una fotografía galería 4.Agregue el siguiente estilo a la hoja de estilo interna que acaba de crear: cifra { flotador izquierdo; ancho: 210px; margen: 0 10px 10px 10px; } Este estilo hace flotar cada par de foto/pie de foto hacia la izquierda. De hecho, coloca las fotos una al lado de la otra hasta que no queda más espacio en la fila. Luego, el navegador suelta las siguientes fotos en una fila, hasta que todas las fotos se muestran una fila encima de la siguiente. el ancho es eltotalancho de la foto más relleno y bordes. En este ejemplo, son 200 píxeles para la foto, 8 píxeles para el relleno izquierdo y derecho y 2 píxeles para los bordes izquierdo y derecho. NotaEn esta galería de fotos ficticia, cada imagen tiene el mismo ancho. En el mundo real, puede tener imágenes de diferentes tamaños. Consulte el cuadro a continuación para ver un truco que le permite organizar filas de imágenes de diferentes anchos. El uso de imágenes de diferentes alturas no funcionará (como verá en el Paso 5). Cuando tenga imágenes con diferentes alturas, quédese con las tablas HTML. CLÍNICA DE USUARIOS ELÉCTRICOS Cuando un ancho no sirve para todos Es muy fácil configurar una galería de fotos, como la de este tutorial, Por ejemplo: <figura clase="w300">. cuando las fotos tienen convenientemente el mismo ancho. Pero, ¿y si Luego crea un estilo de clase, por ejemplo .w300,y establezca tienes fotos de diferentes anchos? Una solución es crear un estilo para el ancho al ancho de la imagen (en este caso, 300) más 10 cada ancho diferente y aplicar una clase al <figura>etiqueta para la para cubrir el relleno y los bordes: .w300 {ancho: 310}. imagen en particular. (Eso es mucho trabajo, por lo que valdría la pena hacer un poco de trabajo de edición de fotos para estandarizar sus fotos a solo un puñado de anchos diferentes primero). 5.Guarde el archivo y previsualice elgalería.htmlpágina en un navegador web.Debería verse como la imagen de la izquierda en la Figura 8-21. Ajuste el ancho de la ventana de su navegador para hacerlo más delgado y más ancho y observe cómo las imágenes fluyen en el espacio. Ajá, algo no está del todo bien. La segunda fila de imágenes tiene dos espacios vacíos donde deberían estar las fotos. Este problema se produce porque el título de la segunda imagen de la primera línea es más alto que los demás títulos de la línea. Las imágenes que saltan a otra fila chocan con esa leyenda y no pueden pasarla. (Puedes leer más sobre estoflotar propiedad snafu en la página 425.) Afortunadamente, hay una solución simple a este dilema. Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 279 Tutorial: CREANDO una fotografía galería 6.Regrese a su editor de texto y elgalería.htmlarchivo.Localiza elcifraestilo. Eliminar elflotador izquierdoy añadirpantalla: bloque en línea; alineación vertical: superior.El estilo terminado debería verse así: cifra { pantalla: bloque en línea; alineación vertical: superior; ancho: 210px; margen: 0 10px 10px 10px; } Elpantalla: bloque en línea(página 308) trata cada par de imagen/título como un bloque (un cuadro con alto y ancho) pero también como un elemento en línea (para que los bloques puedan colocarse uno al lado del otro). además, elalineación verticalpropiedad establecida en arribase asegura de que cada <figura>la etiqueta se alinea con la parte superior de todas las demás <figura>etiquetas seguidas. 7.Guarde el archivo y obtenga una vista previa de la página en un navegador web.Vea el lado derecho de la Figura 8-21. Si cambia el tamaño de la ventana del navegador, la galería se vuelve a formatear. Con una ventana más ancha, puede colocar cuatro o incluso cinco imágenes en una fila, pero si la hace más pequeña, solo verá una o dos imágenes por fila. Figura 8-21 Elementos flotantes a continuación entre sí es una forma de simular la apariencia de columna y fila de una tabla. Pero no funciona bien si los elementos tienen diferentes alturas (izquierda). Usando mostrar: bloque en líneaes otra forma de obligar a los elementos a sentarse uno al lado del otro (derecha) sin el desagradable comportamiento de caída que se muestra en la imagen de la izquierda. 280 Css3: el manual perdido www.it-ebooks.info Tutorial: CREANDO una fotografía Adición de sombras paralelas Tu galería se ve bien, pero puedes hacerla aún más impresionante. Agregar sombras paralelas galería debajo de cada foto le da a la página una ilusión de profundidad y una calidad tridimensional realista. Pero antes de iniciar Photoshop, le alegrará saber que no es necesario agregar sombras paralelas individuales. En cambio, puede hacer que CSS agregue automáticamente una sombra a cualquier imagen que desee. Antes de CSS3 (y en ediciones anteriores de este libro), tenía que pasar por un proceso elaborado para agregar sombras paralelas a las imágenes en esta galería, agregando divs adicionales alrededor de las imágenes y usando dos gráficos de fondo, y todavía no se veía como una sombra perfecta. Afortunadamente, CSS3 lo hace tan fácil que terminará este tutorial en dos pasos. 1.En un editor de texto, abra elestilos.cssarchivo que completó en el tutorial anterior. Actualizarás elimagenestilo que creó antes. 2.Agregarsombra de caja: 2px 2px 4px rgba(0,0,0,.5);al final defigura img estilo para que se vea así (cambios en negrita): figura img { borde: 1px sólido #666; color de fondo: #FFF; relleno: 4px; sombra de caja: 2px 2px 4px rgba(0,0,0,.5); } Aprendiste sobre elsombra de la cajapropiedad en la página 210. Aquí ha agregado una sombra que se extiende 2 píxeles a la derecha de la imagen, 2 píxeles debajo de la imagen y que se extiende 4 píxeles. Usando un color RGBA (página 155), puede establecer la sombra en un 50 por ciento de color negro transparente. 3.Guarde el archivo y obtenga una vista previa de la página.Debería parecerse a la Figura 8-22. Cada imagen tiene su propia sombra paralela, ¡y ni siquiera tuvo que abrir Photoshop! Puede encontrar una versión completa de este tutorial en el08_terminado→galería_excarpeta. Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 281 Tutorial: usando Fondo IMÁGENES Figura 8-22 Agregar sombras paralelas a las fotos le da a la página un aspecto tridimensional y aumenta el atractivo visual de cualquier galería de fotos. Afortunadamente, con CSS puede agregar fácilmente una sombra paralela a cualquier imagen sin siquiera tocando Photoshop. Tutorial: uso de imágenes de fondo el cssimagen de fondoLa propiedad es el arma secreta del diseño web moderno. Puede convertir una página web aburrida y llena de texto en un deslumbrante torbellino de imágenes (consulte la Figura 8-23). Dado que puede usarlo para agregar una imagen al fondo de cualquier etiqueta HTML, los diseños que puede crear están limitados solo por su imaginación. El ejemplo de la sombra del tutorial anterior es solo un ejemplo del uso creativo de una imagen de fondo. Otros adornos de imagen de fondo comunes incluyen aplicar un fondo de página y agregar viñetas personalizadas a listas desordenadas. Explorará algunas de estas tareas comunes en este tutorial. 282 Css3: el manual perdido www.it-ebooks.info Tutorial: usando Agregar una imagen al fondo de la página Ya sea un patrón intrincado, un logotipo o una fotografía a pantalla completa, las imágenes Fondo IMÁGENES aparecen en el fondo de muchas páginas web. De hecho, agregar una imagen al fondo de una página es probablemente la aplicación más común de laimagen de fondopropiedad. 1.En su editor de texto, abra el archivo08→bg_ex→bg_images.html. Esta página tiene un diseño básico de dos columnas: una página muy simple, con texto formateado sobre un fondo blanco (Figura 8-23, arriba). Para comenzar, agregará una imagen de fondo a la página. La página tiene una hoja de estilo externa con el formato básico, pero para evitar tener que leer todos los estilos de ese archivo, agregará una hoja de estilo interna para los pasos de este tutorial. 2.Haga clic entre la apertura y el cierre <estilo>etiquetasAgregue el siguiente estilo: cuerpo { imagen de fondo: url(images/bg_page.png); fondo-repetir: repetir-x; color de fondo: #FFF; } La primera línea de código apunta a la imagen:bg_pagina.png: desea mostrar en la página. El archivo se almacena en elimágenescarpeta. Este gráfico es un degradado que comienza como azul claro en la parte superior y se desvanece a blanco en la parte inferior. El gráfico no es tan alto como el contenido de la página, por lo que, sin más instrucciones, se colocaría en mosaico una y otra vez a lo largo ya lo ancho de la página. En cierto punto de la página, ese azul claro volvería a aparecer y se desvanecería una vez más hacia el blanco. Para evitar este problema antiestético, ha configurado elrepetición de fondopropiedad para que la imagen se coloque en mosaico de izquierda a derecha para adaptarse a cualquier ancho de la ventana del navegador, pero no en mosaicoabajola página. La última línea de código establece el color de fondo de la página para que coincida con el final del degradado, por lo que la imagen se desvanece sin problemas en el color de fondo de la página. Podrías pensar que usar un degradado lineal sería mucho mejor que usar una imagen con degradado. En algunos casos, eso es cierto. Sin embargo, al agregar un degradado lineal al fondo de una página, el navegador web literalmente tiene que volver a dibujar ese degradado de fondo cada vez que cambia el tamaño de la ventana del navegador, lo que provoca una ralentización notable de la representación de la página y hace que la página se sienta lenta. Además, debido a que los degradados lineales no funcionan en IE 9 o versiones anteriores sin algún código adicional, por ahora se quedará con una imagen de fondo. NotaUsando la abreviatura de propiedad de fondo, puede condensar las tres líneas de código del Paso 2 en una sola línea de CSS:fondo: url(images/bg_page.png) repetir-x #FFF. 3.Guarde el archivo y obtenga una vista previa en un navegador web. El degradado azul del gráfico de fondo gotea por la página. No está mal, pero el azul también aparece en el fondo del texto. Puede hacer que el texto destaque dándole al fondo un color diferente. Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 283 Tutorial: usando Fondo IMÁGENES 4.Regrese a su editor de texto y elbg_images.htmlarchivo.Agregue otro estilo para el <div>que contiene el contenido de la página: . envoltorio { color de fondo: #FFF; } Figura 8-23 Usando imágenes de fondo, puede hacer que una página que ya está bien organizada (izquierda) se vea mucho más elegante (derecha). Dado que puede agregar imágenes al fondo de cualquier etiqueta en una página, la posible colocación de gráficos en una página es casi ilimitada. El div contenedor tiene un ancho fijo, centrado en el medio de la página, que contiene todo el texto de la página. Este estilo le da un fondo blanco, pero con la ayuda de una imagen, puedes hacerlo mejor que eso. 5.Edite el estilo que creó en el Paso 4 agregando una imagen de fondo: . envoltorio { color de fondo: #FFF; imagen de fondo: url (imágenes/bg_main.jpg); posición de fondo: arriba a la izquierda; repetición de fondo: sin repetición; } Estas tres líneas de código agregan una imagen de fondo en la parte superior izquierda del <div>; elsin repeticiónopción para elrepetición de fondopropiedad significa que la imagen solo aparece una vez. Si guarda el archivo y obtiene una vista previa en un navegador web, ahora verá la imagen de una mano actuando como si estuviera sosteniendo la página. Muy genial. El único problema es que el texto está demasiado arriba, cubriendo la imagen. A continuación, empujará hacia abajo el título superior y la barra lateral izquierda. 6.Agregue dos estilos más a la hoja de estilo interna: . pancarta { margen superior: 48px; } . anuncio { margen superior: 115px; } 284 Css3: el manual perdido www.it-ebooks.info Tutorial: usando Fondo La primera línea solo agrega un poco de relleno, empujando hacia abajo el banner que contiene el título hasta que toca la parte superior de la página en blanco, mientras que el segundo estilo mueve la IMÁGENES barra lateral izquierda lo suficiente como para borrar la imagen de la mano. La página ahora debería verse como la Figura 8-24. Figura 8-24 CSS te permite combinar un color de fondo y una imagen de fondo, lo que resulta muy útil en este ejemplo. El área de texto principal tiene un color de fondo blanco que ayuda a separar el texto de la gradación que se desvanece en el fondo de la página. Además, un gráfico de una mano sosteniendo una hoja de papel agrega profundidad al diseño. Sustitución de bordes con gráficos ElbordeLa propiedad es una herramienta útil en su arsenal de diseño, pero la cantidad limitada de estilos de borde que ofrece CSS puede volverse aburrida. Una línea dibujada a mano con un poco de textura captará mejor la atención de sus visitantes que una simple y recta. Puede omitir la propiedad del borde y agregar cualquier tipo de línea que desee como imagen de fondo, muy fácil. En esta parte del tutorial, reemplazará el subrayado debajo de cada <h2>etiqueta en el área de texto principal con un gráfico personalizado que parece una línea dibujada a mano. 1.Regrese a su editor de texto y elbg_images.htmlarchivo.Agregar un estilo para el <h2> etiquetas dentro de la principal <div>etiqueta: . principal h2 { imagen de fondo: url(imágenes/subrayado.png); repetición de fondo: sin repetición; } Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 285 Tutorial: usando Fondo IMÁGENES Elimagen de fondopropiedad especifica qué gráfico usar en el fondo de <h2>etiquetas dentro de cualquier etiqueta con una clase deprincipal,mientras que elsin repetición value se asegura de que el gráfico solo aparezca una vez. Si obtiene una vista previa del archivo ahora, verá que el subrayado no se alinea exactamente. De hecho, no esbajoen absoluto. ¡Está por encima de los titulares! 2.Agregue la siguiente declaración de estilo al archivo .principal h2estilo debajo del repetición de fondopropiedad: posición de fondo: abajo a la izquierda; Cambió la ubicación inicial del gráfico para que aparezca en el borde izquierdo y en la parte inferior del <h2>etiquetas Sin embargo, si obtiene una vista previa de la página ahora, es posible que no note mucha mejora. El subrayado correenel texto del titular. Pero hay una solución fácil. Dado que el valor inferior utilizado aquí pone el gráfico en la parte inferior del bloque creado por el <h2>etiqueta, solo necesita aumentar la altura total del bloque para mover la línea un poco hacia abajo. Lo harás con un poco de relleno en la parte inferior. NotaCSS3 proporciona un medio para usar imágenes para los bordes. Desafortunadamente, es un poco complejo y no funciona en Internet Explorer 9 o anterior. Dado que puede lograr un efecto similar en este ejemplo usando una imagen de fondo, en este tutorial irá por ese camino. Sin embargo, si desea obtener más información sobre las imágenes de borde, visite www.css3files.com/border. 3.Edite el .principal h2estilo una última vez, para que se vea así: . principal h2 { imagen de fondo: url(imágenes/subrayado.png); repetición de fondo: sin repetición; posición de fondo: abajo a la izquierda; parte inferior del relleno: 7px; } El relleno, como recordará de la página 195, es el espacio entre el borde (también el borde del fondo) y el contenido. También aumenta la altura total del cuadro, en este caso, agregando 7 píxeles de relleno inferior. Ahora, el gráfico de líneas se coloca en la parte inferior de lah2bloque, pero en el espacio vacío creado por el relleno inferior. 4.Guarde el archivo y obtenga una vista previa de la página en un navegador web. Cada <h2>la etiqueta tiene el subrayado dibujado a mano. A continuación, abordará el cuadro de la barra lateral, haciéndolo parecer un poco menos cuadrado y animando las listas con viñetas. Uso de gráficos para listas con viñetas La viñeta promedio que se usa para las listas desordenadas es un punto negro, no muy inspirador. Pero puedes usar elimagen de fondoproperty para reemplazar esas viñetas monótonas con cualquier imagen que desee. El primer paso es ocultar las viñetas que normalmente aparecen junto a los elementos de la lista. 286 Css3: el manual perdido www.it-ebooks.info Tutorial: usando 1.Regrese a su editor de texto y elimágenes.htmlpágina.Agregue un estilo para dar formato a los elementos de la lista en la barra lateral izquierda. Fondo IMÁGENES . anuncio li { estilo de lista: ninguno; } La lista con viñetas está dentro de un <div>con una clase deanuncio,por lo que este selector descendente apunta solo a los elementos de la lista (<li>etiquetas) dentro de ese div. El estilo elimina la viñeta. Ahora agregue el gráfico. NotaTambién puedes aplicarestilo de lista: ninguno;a un estilo que afecta al <ul>o <viejo>etiquetas para eliminar viñetas decadaelemento de la lista. 2.Agregue las siguientes dos propiedades al archivo .anuncio liestilo: imagen de fondo: url(images/bullet.png); repetición de fondo: sin repetición; Has visto estas dos propiedades antes. Agregan una imagen al fondo y desactivan la repetición para que el gráfico aparezca solo una vez. Si obtiene una vista previa de la página, verá que las viñetas actualmente se superponen al texto de la lista y que los elementos de la lista están un poco atascados (Figura 8-25, izquierda). Un poco de relleno y margen arreglarán esto. 3.Agregue dos propiedades más al archivo .anuncio liestilo: relleno-izquierda: 25px; margen inferior: 10px; El relleno izquierdo agrega un espacio vacío, moviendo efectivamente el texto fuera del camino para mostrar el nuevo icono de viñeta. El margen inferior agrega un poco de espacio para respirar entre cada elemento de la lista (Figura 8-25, centro). Sólo hay un defecto final. La imagen de la viñeta está un poco demasiado arriba en la línea, lo que hace que la punta del icono sobresalga demasiado por encima del texto. Pero puedes arreglarlo fácilmente con elposición de fondopropiedad. 4.Termina este estilo agregandoposición de fondo: 0px 4px;.El estilo completo debería verse así: . anuncio li { estilo de lista: ninguno; imagen de fondo: url(images/bullet.png); repetición de fondo: sin repetición; posición de fondo: 0 4px; relleno-izquierda: 25px; margen inferior: 10px; } Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 287 Tutorial: usando Fondo IMÁGENES Esta última declaración de estilo coloca el icono de viñeta en el extremo izquierdo (esa es la0) y 4 píxeles desde la parte superior (4 píxeles)del elemento de la lista. Mueve el ícono hacia abajo solo un poco, lo suficiente para que la viñeta se vea perfecta. NotaComo se discutió en la página 255, este tipo de posicionamiento exacto es precisamente la razón por la que debe usar el fondopropiedad en lugar de laimagen de estilo de listapropiedad para agregar viñetas gráficas a sus listas. 5.Guarde el archivo y obtenga una vista previa de la página en su navegador. La lista ahora debería tener pestañas tridimensionales con signos de exclamación rojos en lugar de círculos negros tristes (Figura 8-25, derecha). Figura 8-25 Reemplazar las viñetas negras regulares con sus propios gráficos es fácil. Solo unos pocos pasos adicionales aseguran que las viñetas y el texto se coloquen en la ubicación correcta. Dar personalidad a la barra lateral En este punto, la barra lateral se ve bastante bien. El texto está bien formateado y las viñetas se ven geniales, pero la barra lateral se pierde un poco en el mar de blanco. Agregar una imagen de fondo puede hacer que la barra lateral se destaque de una manera caprichosa. Puede usar una sola imagen, la imagen de desplazamiento que se muestra en la imagen inferior de la Figura 8-23, en el fondo de <div>etiqueta, pero para asegurarse de que el texto se ajuste exactamente al desplazamiento, debe limitar la cantidad de contenido que coloca en la barra lateral. Demasiado texto y no cabrá encima de la imagen única (arriba a la izquierda en la Figura 8-12), demasiado poco y habrá demasiado espacio vacío en el gráfico. Un enfoque más flexible permitiría que la imagen crezca a medida que la barra lateral adquiera más contenido (abajo a la derecha en la Figura 8-12). Como se explica en la página 257, hay varias formas de lograr este efecto. Puede colocar la parte de fondo del pergamino (donde aparece el texto) como una imagen de fondo repetida en el div, luego colocar una imagen de fondo para la parte superior del pergamino en el título en la parte superior del div y una imagen de fondo en la parte inferior del elemento de la lista en la parte inferior del div. De hecho, ese es el método utilizado en ediciones anteriores de este libro. Sin embargo, ahora que la mayoría de los navegadores admiten múltiples fondos CSS3, puede usarlos en su lugar. Es mucho más simple y no requiere tres estilos diferentes para funcionar. 1.Regrese a su editor de texto y elbg_images.htmlarchivo.Localiza el .anuncioestilo que agregó en el Paso 6 en la página 284 y agregue una propiedad adicional: 288 Css3: el manual perdido www.it-ebooks.info Traducido del inglés al español - www.onlinedoctranslator.com Tutorial: usando Fondo IMÁGENES Esta última declaración de estilo coloca el icono de viñeta en el extremo izquierdo (esa es la0) y 4 píxeles desde la parte superior (4 píxeles)del elemento de la lista. Mueve el ícono hacia abajo solo un poco, lo suficiente para que la viñeta se vea perfecta. NotaComo se discutió en la página 255, este tipo de posicionamiento exacto es precisamente la razón por la que debe usar el fondopropiedad en lugar de laimagen de estilo de listapropiedad para agregar viñetas gráficas a sus listas. 5.Guarde el archivo y obtenga una vista previa de la página en su navegador. La lista ahora debería tener pestañas tridimensionales con signos de exclamación rojos en lugar de círculos negros tristes (Figura 8-25, derecha). Figura 8-25 Reemplazar las viñetas negras regulares con sus propios gráficos es fácil. Solo unos pocos pasos adicionales aseguran que las viñetas y el texto se coloquen en la ubicación correcta. Dar personalidad a la barra lateral En este punto, la barra lateral se ve bastante bien. El texto está bien formateado y las viñetas se ven geniales, pero la barra lateral se pierde un poco en el mar de blanco. Agregar una imagen de fondo puede hacer que la barra lateral se destaque de una manera caprichosa. Puede usar una sola imagen, la imagen de desplazamiento que se muestra en la imagen inferior de la Figura 8-23, en el fondo de <div>etiqueta, pero para asegurarse de que el texto se ajuste exactamente al desplazamiento, debe limitar la cantidad de contenido que coloca en la barra lateral. Demasiado texto y no cabrá encima de la imagen única (arriba a la izquierda en la Figura 8-12), demasiado poco y habrá demasiado espacio vacío en el gráfico. Un enfoque más flexible permitiría que la imagen crezca a medida que la barra lateral adquiera más contenido (abajo a la derecha en la Figura 8-12). Como se explica en la página 257, hay varias formas de lograr este efecto. Puede colocar la parte de fondo del pergamino (donde aparece el texto) como una imagen de fondo repetida en el div, luego colocar una imagen de fondo para la parte superior del pergamino en el título en la parte superior del div y una imagen de fondo en la parte inferior del elemento de la lista en la parte inferior del div. De hecho, ese es el método utilizado en ediciones anteriores de este libro. Sin embargo, ahora que la mayoría de los navegadores admiten múltiples fondos CSS3, puede usarlos en su lugar. Es mucho más simple y no requiere tres estilos diferentes para funcionar. 1.Regrese a su editor de texto y elbg_images.htmlarchivo.Localiza el .anuncioestilo que agregó en el Paso 6 en la página 284 y agregue una propiedad adicional: 288 Css3: el manual perdido www.it-ebooks.info Tutorial: usando Fondo . anuncio { fondo: url(images/scroll_top.jpg) parte superior central sin repetición, IMÁGENES url(images/scroll_bottom.jpg) parte inferior central sin repetición, url(images/scroll_middle.jpg) parte superior central repetida; margen superior: 115px; } Sí, esa es sólo una propiedad: lafondopropiedad, pero tiene tres imágenes diferentes. El orden en que enumeras estas imágenes es importante, ya que se apilan una encima de la otra. En este caso, la primera imagen es la parte superior del pergamino; solo aparece una vez (sin repetición)en la parte superior y central. La segunda imagen es la parte inferior del pergamino; también aparece solo una vez, pero en la parte inferior del div. Finalmente, la parte media del rollo—scroll_middle.jpg—se superpondrá debajo de las otras dos imágenes (ya que aparece en último lugar en la lista) y se repetirá a lo largo del eje y (arriba y abajo), por lo que si <div>se hace más alta, la imagen simplemente se convierte en mosaico para llenar el espacio. Si obtiene una vista previa de la página, verá algunos problemas. Primero, el texto aparece encima de las partes superior e inferior enrolladas del pergamino. Un poco de relleno arreglará eso. 2.Actualizar el .anuncioestilo para agregar relleno superior e inferior.Realice los cambios enumerados en negrita a continuación: . anuncio { fondo: url(images/scroll_top.jpg) parte superior central sin repetición, url(images/scroll_bottom.jpg) parte inferior central sin repetición, url(images/scroll_middle.jpg) parte superior central repetida; relleno: 70px 0 60px 0; margen superior: 115px; } Otro problema es que la lista con viñetas sobresale en los lados izquierdo y derecho de la imagen de la barra lateral. Para que la lista con viñetas quepa en el pergamino, debe agregar un margen izquierdo y derecho. 3.Localiza el .anuncio liestilo que creó anteriormente y agregue dos propiedades al final para que se vea así: # anuncio li { estilo de lista: ninguno; imagen de fondo: url(images/bullet.png); repetición de fondo: sin repetición; posición de fondo: 0 4px; relleno-izquierda: 25px; margen inferior: 10px; margen izquierdo: 30px; margen derecho: 40px; } Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 289 Tutorial: usando Fondo IMÁGENES Estas propiedades mueven los bordes izquierdo y derecho de cada elemento con viñetas lo suficiente como para borrar los bordes de la imagen de fondo. 4.Guarde el archivo y obtenga una vista previa en un navegador web. La página debería parecerse a la imagen de la derecha en la Figura 8-23, en todos los navegadores actuales excepto en Internet Explorer 8. Ese navegador no admite varias imágenes de fondo. Conseguir que el desplazamiento aparezca en IE 8 Si bien Internet Explorer 8 no admite varias imágenes, puede falsificarlas, especialmente si solo necesita dos o tres imágenes de fondo. Con el contenido generado (página 595), puede agregar texto o imágenes antes y después de cualquier elemento de una página. En este caso, puede agregar la parte superior del pergamino antes del div y la parte inferior del pergamino después del div. Si no está tan preocupado por admitir IE 8, puede omitir este paso, pero si desea ver cómo hacer que esto funcione en IE 8 y versiones posteriores, así como en todos los demás navegadores actuales, siga leyendo. 1.Edite el .anunciostyle por lo que solo hay una imagen de fondo (la mitad del desplazamiento) y sin relleno: . anuncio { fondo: url(images/scroll_middle.jpg) repetir-y centro superior; margen superior: 115px; } No necesitará el relleno, ya que las otras imágenes ocuparán espacio encima y debajo del div. A continuación, agregará la parte superior del pergamino como elemento anterior al div. 2.Agregue el siguiente estilo debajo del archivo .anuncioestilo: . anuncio:antes de { contenido: url (imágenes/scroll_top.jpg); } Como se menciona en la página 70, el:antespseudo-elemento le permite agregar contenido antes de una etiqueta. Esto podría ser texto o (como en este caso) una imagen. Ahora para la parte inferior del pergamino. 3.Agregue el siguiente estilo debajo de:antesestilo que acaba de agregar: . anuncio: después de { contenido: url (imágenes/scroll_bottom.jpg); } Esto agrega la parte inferior del desplazamiento después del div. Bueno, en realidad no va tras el div, va encima y el div se expande para adaptarse a él. De hecho, si obtiene una vista previa de la página, verá un poco del fondo del div (el pergamino) debajo de la parte inferior curva del pergamino. Lo arreglarás con un poco más de magia CSS. 290 Css3: el manual perdido www.it-ebooks.info Tutorial: usando 4.Edite el estilo que acaba de crear agregando dos líneas más de código (en negrita a continuación): Fondo IMÁGENES . anuncio: después de { contenido: url (imágenes/scroll_bottom.jpg); posición: relativa; abajo: -5px; } Te estás adelantando un poco aquí, ya que no aprenderás sobre elposición property en profundidad hasta el Capítulo 15, pero en pocas palabras, está moviendo la parte inferior del desplazamiento hacia abajo 5 píxeles para cubrir el fondo del div. Ahora la página debería verse como la imagen de la derecha en la Figura 8-23, y como la que creó en la parte anterior de este tutorial con múltiples imágenes. Encontrará ambas páginas en el08_terminado/03_bg_excarpeta:bg_images.html y bg_images_ie8.html. Capítulo 8:AGREGAR GRÁFICOS A PÁGINAS WEB www.it-ebooks.info 291 www.it-ebooks.info Capítulo 9 9 Arreglar tu Navegación del sitio I Es seguro decir que sin enlaces no habría Web. La capacidad de estar en una página, luego hacer clic en algo en la pantalla y de repente ver una página en una computadora a medio mundo de distancia es lo que hace que la Web sea tan útil. Los enlaces también son la forma en que sus visitantes navegan por su sitio web. Es por eso que los diseñadores web se preocupan por hacer que sus enlaces se vean bien y funcionen correctamente. En este capítulo, aprenderá a aplicar estilo a los enlaces para que se destaquen del resto del texto. También puede hacer que sus enlaces proporcionen pistas visuales para que los visitantes de su sitio puedan ver dónde están y dónde han estado. Aprenderá a usar CSS para crear botones en pantalla y barras de navegación como los usan los profesionales. Y en la sección de tutoriales, obtendrá experiencia práctica en la creación de un conjunto completo de funciones de navegación que funcionan en todos los navegadores. Seleccionando qué enlaces al estilo Como siempre en CSS, debe seleccionar algo antes de poder diseñarlo. Para los enlaces, debe decirle a CSS no soloquéquieres estilizar, pero tambiéncuandoquieres que se aplique ese estilo. Los navegadores web realizan un seguimiento de cómo un visitante interactúa con los enlaces y luego muestra ese enlace de manera diferente según el estado del enlace, oestado. Cuando utiliza un selector de enlaces CSS, también puede apuntar a un estado de enlace específico. Comprensión de los estados de enlace La mayoría de los navegadores reconocen cuatro estados de enlace básicos: un enlace no visitado, un enlace que ya ha sido visitado (lo que significa que la URL se almacena en el historial del navegador), un enlace sobre el que se encuentra el mouse del visitante y un enlace en el que se hace clic. Como se describe en 293 www.it-ebooks.info SELECCIONANDO ¿QUÉ ENLACES? De estilo El Capítulo 3, CSS, le brinda cuatro selectores de pseudoclases para acompañar estos estados: :enlace, :visitado, :pasar,y :activo.Utilizándolos, puede aplicar diferentes formatos a cada estado, por lo que no hay duda en la mente de su visitante si ha estado allí o ha hecho eso. NotaLos navegadores también reconocen una pseudoclase llamada:enfocar.Los enlaces obtienen:enfocarcuando los visitantes reacios al mouse usan el teclado para tabularlos. Esta pseudoclase también es divertida de usar con campos de texto de formulario, como verá en el tutorial de formularios en la página 395. Suponga que desea cambiar el color del texto de un enlace no visitado del aburrido azul del navegador a un naranja vivo. Agrega este estilo: a:enlace { color: #F60; } Una vez que alguien ha hecho clic en ese enlace, su estado cambia avisitado,y su color cambia al morado que usan la mayoría de los navegadores. Para cambiar ese color a rojo intenso, usa este estilo: a:visitado { color: #900; } CONSEJOCuando desee proporcionar un estilo que se aplique a todos los estados de enlace, por ejemplo, use la misma fuente y el mismo tamaño de fuente para todos los estados de enlace, aplique estilo al HTML <un>etiqueta creando un genéricoaselector. A continuación, puede utilizar los estilos de estado de enlace específicos:a: visitado,por ejemplo, para cambiar el color o de alguna otra manera personalizar el aspecto de ese estado. PALABRA A LOS SABIOS Límites de visitas Debido a problemas de privacidad, los navegadores han comenzado a eBay.com, BankofAmerica.com o not-safe-for-work.com. imponer límites estrictos sobre las propiedades de CSS que puede Debido a ese problema potencial, está limitado a diseñar el aplicar a:visitado pseudoclase. Resulta que algunos tipos nefastos han color de fondo,ycolor del borde de enlaces visitados, y solo si descubierto cómo usar JavaScript para leer los cambios en el estilo de: ya ha asignado un color, un color de fondo o un color de visitadoenlaces para determinar los sitios que la gente había visitado. borde a los estados normales de esos enlaces. En otras Por ejemplo, al cargar una nueva imagen de fondo para los enlaces palabras, no puedes hacer mucho con:visitado pseudo-clase visitados, puede determinar si un visitante ha estado en Paypal.com, por más tiempo. El :flotarpseudo-clase ofrece muchas posibilidades creativas; aprenderá algunos más adelante en este capítulo. Le permite alterar completamente el aspecto de un enlace cuando un visitante mueve el mouse sobre él. Si ha utilizado JavaScript engorroso para hacer que los botones gráficos cambien cuando el mouse pasa sobre ellos, le encantará poder crear el mismo efecto solo con CSS. Pero para comenzar con un ejemplo simple, este estilo cambia el color de un enlace cuando el mouse pasa sobre él: a: pasar el cursor {color: #F33; } 294 Css3: el manual perdido www.it-ebooks.info SELECCIONANDO CONSEJOTenga cuidado al agregar propiedades CSS a:flotarpseudo-clase. Las propiedades que cambian el tamaño del elemento flotante pueden afectar a otros elementos a su alrededor. Por ejemplo, si aumenta el tamaño de la fuente de un enlace ¿QUÉ ENLACES? De estilo de texto sobre el que se desplaza el mouse, el texto del enlace crecerá y apartará otros elementos del camino. El efecto puede ser discordante. Y finalmente, si usted es uno de esos diseñadores obsesivo-compulsivos que no dejan piedra de diseño sin remover, puede incluso cambiar el aspecto de un enlace durante los pocos milisegundos en que un visitante hace clic en él. Así es cómo: a:activo {color: #B2F511; } En la mayoría de los casos, probablemente tendrá un genéricoaestilo, :visitado,y :flotarestilos en sus hojas de estilo. Para obtener el máximo control del diseño, es posible que desee diseñar todos los diferentes estados. Pero para que eso funcione, debe especificar los enlaces en un orden particular: vincular, visitar, desplazar,yactivo.Usa este mnemotécnico fácil para recordarlo:Lovmi/ JATe. Esta es la forma correcta de agregar los cuatro estilos de enlace: a:enlace { color: #F60; } a:visitado { color: #900; } a: hover {color: #F33; } a:activo {color: #B2F511; } Si cambia el orden, los estados flotante y activo no funcionarán. Por ejemplo, si ponesa: flotarantesun enlaceya: visitado,entonces el cambio de color no tendrá efecto al pasar el mouse. Nota¿Por qué importa el orden? Eso sería gracias a nuestro amigo la cascada (ver Capítulo 5). Todos esos estilos tienen la misma especificidad, por lo que el orden en que aparecen en el código determina el estilo que gana. Un enlace puede ser ambosno visitadoyse cernía sobre. Entonces si elun enlaceel estilo ocupa el último lugar en el código, luego gana y el color dea: flotarnunca se aplica. Orientación a enlaces particulares Los estilos del apartado anterior son básicos.aestilos de etiquetas. Apuntan a ciertos estados de enlace, pero diseñantodoenlaces en una página. ¿Qué sucede si desea diseñar algunos enlaces de una manera y otros enlaces de otra? Una solución simple es aplicar una clase a etiquetas de enlace particulares. Supongamos que tiene un montón de enlaces dentro del cuerpo de un artículo, algunos de los cuales apuntan a sitios que desea resaltar (por ejemplo, enlaces a sitios web que pertenecen a sus amigos, socios comerciales o patrocinadores). Es posible que desee identificar estos enlaces para que las personas sepan que son especiales y es más probable que hagan clic en ellos. En este caso, puede aplicar una clase a estos enlaces externos, así: <a href="http://www.hydroponicsonline.com" class="sponsor">Visita este gran recurso</a> Capítulo 9:MEJORANDO LA NAVEGACIÓN DE SU SITIO www.it-ebooks.info 295 SELECCIONANDO ¿QUÉ ENLACES? De estilo Para diseñar este enlace a su manera, crearía estilos como este: a.sponsor { familia tipográfica: Arial, sans-serif; } a.sponsor:enlace { color: #F60; } a.sponsor:visited { color: #900; } a.sponsor:hover { color: #F33; } a.sponsor:active {color: #B2F511; } Dejando de lado elay solo especificar la clase también funciona: . patrocinador { familia tipográfica: Arial, sans-serif; } . patrocinador:enlace { color: #F60; } . patrocinador: visitado { color: #900; } . patrocinador: flotar { color: #F33; } . patrocinador:activo {color: #B2F511; } Ahora solo aquellos enlaces con una clase de "patrocinador" obtendrán este formato. NotaEstos ejemplos solo cambian los colores de los enlaces, pero eso es solo para simplificar la demostración. Puedes usar cualquierPropiedad CSS para formatear enlaces (excepto:visitadoenlaces, como se explica en el recuadro de la página 296). Como verá en la siguiente sección, tiene muchas formas creativas de diseñar enlaces. Agrupar enlaces con selectores descendientes Si un montón de enlaces aparecen juntos en un área de una página, también puede ahorrar tiempo utilizandoselectores descendientes. Digamos que tiene cinco enlaces que conducen a las secciones principales de su sitio. Representan su barra de navegación principal, por lo que desea darles un aspecto distintivo. Simplemente envuelva esos enlaces en HTML5 <navegación>etiqueta. Ahora tiene una manera fácil de identificar y formatear solo esos enlaces: nav a { familia de fuentes: Arial, sans-serif; } nav a: enlace { color: #F60; } nav a: visitado { color: #900; } nav a: hover { color: #F33; } nav a:activo {color: #B2F511; } Alternativamente, puede usar un <div>etiqueta (si aún no está listo para las etiquetas HTML5) y agregue una clase a ese div: <div class="mainNav">: . mainNav a { familia de fuentes: Arial, sans-serif; } . mainNav a:enlace { color: #F60; } . mainNav a: visitado { color: #900; } . mainNav a: hover { color: #F33; } . mainNav a:activo {color: #B2F511; } Al usar selectores descendientes, es fácil diseñar enlaces de manera diferente para diferentes áreas de una página web. (Vea la página 553 en el Capítulo 17 para una discusión detallada del poder de los selectores descendientes.) 296 Css3: el manual perdido www.it-ebooks.info CONSEJOEs muy común usar listas con viñetas para presentar enlaces (verá un ejemplo de esta técnica en la página 304). En este caso, puede agregar una ID o clase al <ul>etiqueta para la lista—<ul class="mainNav">,por ejemplo, ENLACES DE ESTILO luego cree selectores descendientes como .navegación principal a: enlacepara darles estilo. Estilo de enlaces Ahora que sabe cómo crear un selector que apunte a enlaces, ¿cómo debería diseñarlos? ¡De cualquier forma que quieras! No hay ninguna propiedad CSS destinada solo para enlaces. Tiene acceso a todas las propiedades de CSS, por lo que solo está limitado por su imaginación. Solo asegúrese de que sus enlaces se vean como enlaces. No es que tengan que ser azules y estar subrayados, pero los enlaces deben tener un aspecto diferente al texto sin enlaces para que los visitantes sepan que pueden hacer clic en ellos. Si hace que un enlace parezca un botón, agregando un borde, incluido un fondo y haciendo que cambie de color cuando se pasa el mouse sobre él, la mayoría de las personas entenderán que pueden hacer clic en él. O utilice un degradado lineal (página 260) para agregar textura y profundidad a un vínculo. Del mismo modo, los enlaces que aparecen en pasajes largos de texto deben verse claramente distintos. Puede hacer que los enlaces se destaquen poniendo el texto en negrita, manteniendo el subrayado tradicional, coloreando el fondo o agregando un estilo de desplazamiento. Incluso puede agregar un gráfico (como una flecha) que proporcione una señal visual clara de que hacer clic en el texto lo lleva a otro lugar. CONSEJOA menos que establezca un <imagen>etiquetasbordeatribuir a0,Internet Explorer agrega un borde alrededor de las imágenes vinculadas. Para evitar que esto suceda, agregue este estilo básico a sus hojas de estilo:img {borde: ninguno; }. Subrayado de enlaces Desde el comienzo de la Web, el texto azul vibrante subrayado ha señalado: "Haga clic aquí para ir allí". Pero ese subrayado y color son a menudo las dos primeras cosas que un diseñador quiere cambiar. Los subrayados son una forma tan común de marcar un enlace que resultan aburridos (#1 en la Figura 9-1). Afortunadamente, puede hacer varias cosas para eliminar o mejorar el subrayado estándar, al mismo tiempo que se asegura de que sus enlaces sean identificables: • Elimina el subrayado por completo.Para eliminar el subrayado normal, utilice el decoración de textopropiedad y laningunovalor: a {decoración de texto: ninguno;} Por supuesto, eliminar el subrayado por completo puede confundir a sus visitantes. A menos que proporcione otras señales visuales, sus enlaces se ven exactamente igual que el resto del texto (#2 en la Figura 9-1). Entonces, si sigue esta ruta, asegúrese de resaltar los enlaces de alguna otra manera, como poner el texto del enlace en negrita (#3 en la Figura 9-1), colorear el fondo, agregar un gráfico informativo o hacer que el enlace se vea como un (página 305). Capítulo 9:MEJORANDO LA NAVEGACIÓN DE SU SITIO www.it-ebooks.info 297 ENLACES DE ESTILO • Subrayar al pasar el ratón por encima.Algunos diseñadores eliminan los subrayados de todos los enlaces, los resaltan de alguna otra manera y luego vuelven a agregar los subrayados cuando el visitante mueve el mouse sobre el enlace (#4 en la Figura 9-1). Para hacerlo, simplemente elimine el subrayado de los enlaces y luego vuelva a introducirlo usando el:flotarpseudo-clase: a{ texto-decoración: ninguno; color de fondo: #F00; } a: pasar el cursor { color de fondo: transparente; decoración de texto: subrayado; } Figura 9-1 Tiene muchas maneras de hacer que la línea aburrida (1) debajo de los enlaces sea más emocionante. Comience eliminando el enlace por completo (2, 3, 4). Mejor aún, cree un enlace más estilizado usando la propiedad de borde (5) o una imagen de fondo (6). • Usa un borde inferior.No puede controlar el color, el ancho o el estilo de un subrayado de enlace regular. Siempre es una línea continua de 1 píxel del mismo color que el texto del enlace. Para una mayor variedad, utilice elborde inferioren su lugar (#5 en la Figura 9-1). Ocultar el subrayado normal y agregar un borde de línea discontinua se ve así: 298 Css3: el manual perdido www.it-ebooks.info a{ ENLACES DE ESTILO texto-decoración: ninguno; borde inferior: discontinuo 2px #9F3; } Puede modificar el estilo, el ancho y el color del borde. Para poner más espacio entre el texto y el borde, utilice elrellenopropiedad. • Usa una imagen de fondo.Puede personalizar aún más el aspecto de los enlaces utilizando una línea gráfica. Por ejemplo, el #6 en la Figura 9-1 usa un gráfico que parece una línea dibujada a mano. Existe una técnica similar para subrayar títulos en el tutorial del Capítulo 8 (página 285). Comience creando un gráfico subrayado con un programa como Fireworks o Photoshop, que tienen herramientas de pincel que simulan el aspecto de un crayón, un rotulador o lo que sea. A continuación, cree un estilo para el enlace que elimine el subrayado normal y agregue una imagen de fondo. Asegúrese de que el gráfico se repita horizontalmente y esté colocado en la parte inferior del enlace. Es posible que también deba agregar un pequeño relleno inferior para colocar la línea. Aquí hay un ejemplo: a{ texto-decoración: ninguno; fondo: url(images/underline.gif) repetir-x abajo a la izquierda; parte inferior del relleno: 5px; } Crear un botón También puede hacer que los vínculos se parezcan a los botones de los cuadros de diálogo y las barras de herramientas que ve en los programas de escritorio. Los botones se ven muy bien en las barras de navegación, pero también puede usarlos para cualquier enlace pequeño (de una o dos palabras) en sus páginas. Sus principales aliados en esta tarea son loscolor de fondo,yrellenopropiedades. Con ellos, es fácil crear una amplia gama de botones que parecen cuadrados (vea la Figura 9-2). Supongamos que agregó una clase a un enlace que le gustaría diseñar como un botón: <a href="stale . html" class="button">¡Donas gratis aquí!</a>.Para agregar un contorno negro básico alrededor de este enlace (como la imagen superior izquierda en la Figura 9-2), crearía este estilo: un botón { borde: sólido 1px #000; } Puede volverse más elegante agregando un color de fondo también, así: un botón { borde: sólido 1px #000; color de fondo: #333; } Capítulo 9:MEJORANDO LA NAVEGACIÓN DE SU SITIO www.it-ebooks.info 299 ENLACES DE ESTILO NotaEn estos ejemplos, ambosun botóno .botónfuncionaría para nombres de estilo. En el caso de un botón,el estilo solo se aplica a <un>etiquetas con la clasebotón,mientras .botónse aplica a cualquier etiqueta con ese nombre de clase. Si desea asegurarse de que el estilo solo se aplique a una etiqueta en particular, agregue el nombre de la etiqueta al principio. Agregar el nombre de la etiqueta también es un recordatorio útil al revisar su código CSS: proporciona una pista valiosa sobre el formato que se pretende que tenga el estilo. Cuando veasun botón,está claro que el estilo está dirigido a enlaces particulares. Figura 9-2 Usar el borde, el fondo y el relleno properties para convertir un enlace en un botón obviamente en el que se puede hacer clic. Simplemente agregando un borde (arriba a la izquierda) puede ser suficiente para transmitir el mensaje. O puede crear botones de apariencia más sofisticada al combinando diferentes bordes de diferentes colores, estilos y anchos con el color de fondo propiedad (página 206). Y, para aquellos navegadores que soportanlineal- degradado(página 260), sombra de texto(página 166),sombra de la caja (página 210), y esquinas redondeadas conborderadio(página 207), puede lograr algunos efectos de aspecto verdaderamente notables (fila inferior). Eso sí, no es necesario que los cuatro bordes tengan el mismo ancho, tipo o color. Ni siquiera tienes que tener cuatro bordes. Una técnica de diseño común es agregar un aspecto biselado a un botón usando cuatro colores de borde diferentes, como se muestra en la parte superior derecha de la Figura 9-2. Crear el aspecto biselado no es difícil, pero debe recordar qué hace que algo parezca tridimensional: la fuente de luz. Imagina una luz brillando en uno de los cuatro lados; ese lado es el más claro, mientras que el lado opuesto es el más oscuro (ya que el botón elevado bloquea la luz y pone ese lado en una "sombra"). Los otros dos lados deben tener sombras entre los bordes "iluminado" y "sombreado". Aquí está el CSS utilizado para crear el diseño biselado en la esquina superior derecha de la Figura 9-2: 300 Css3: el manual perdido www.it-ebooks.info un botón { ENLACES DE ESTILO fondo: #B1B1B1; color: #FFF; fuente-peso: negrita; ancho del borde: 4px; estilo de borde: sólido; borde-superior-color: #DFDFDF; borde-derecho-color: #666; borde-fondo-color: #333; bordeizquierdo-color: #858585; } Tenga en cuenta que puede (y probablemente debería) crear un:flotarestado para sus botones también. De esa manera, sus botones pueden reaccionar cuando un visitante mueve su mouse sobre el enlace, brindando comentarios visuales útiles. En el caso de un botón biselado, invertir los distintos colores (aclarar un fondo oscuro, oscurecer un borde claro, etc.) es muy efectivo. El uso de degradados lineales y esquinas redondeadas, las sombras de cuadro y texto realmente pueden agregar profundidad a un botón. Por ejemplo, el botón en la parte inferior central de la Figura 9-2 se crea con este código: 1. color de fondo: #ee432e; 2. imagen de fondo: -webkit-linear-gradient(superior, #ee432e 0 %, #c63929 50 %, 3. #b51700 50%, #891100 100%); 4. imagen de fondo: -moz-linear-gradient(arriba, #ee432e 0%, #c63929 50%, 5. #b51700 50%, #891100 100%); 6. imagen de fondo: -o-lineal-gradiente (superior, #ee432e 0%, #c63929 50%, #b51700 7. 50%, #891100 100%); 8. imagen de fondo: degradado lineal (superior, #ee432e 0 %, #c63929 50 %, #b51700 9. 50%, #891100 100%); 10. borde: 1px sólido #951100; 11. borde-radio: 5px; 12. box-shadow: recuadro 0px 0px 0px 1px rgba(255, 115, 100, 0.4), 0 1px 3px 13. n.º 333333; 14. relleno: 12px 20px 14px 20px; 15. texto-decoración: ninguno; 16. color: #fff; 17. fuente: negrita 20px/1 “helvetica neue”, helvetica, arial, sans-serif; 18. alineación de texto: centro; 19. sombra de texto: 0px -1px 1px rgba(0, 0, 0, 0.8); La línea 1 establece un color de fondo rojo intenso; este color se proporciona para los navegadores que no entienden los gradientes lineales (IE 9 y versiones anteriores, así como otros navegadores más antiguos). Las líneas 2 a 5 configuran un degradado lineal para varios navegadores. La línea 6 agrega un borde simple, mientras que Capítulo 9:MEJORANDO LA NAVEGACIÓN DE SU SITIO www.it-ebooks.info 301 ENLACES DE ESTILO la línea 7 crea las esquinas redondeadas y la línea 8 agrega una sutil sombra insertada y una segunda sombra debajo del botón; en otras palabras, aplica dos sombras paralelas, lo cual es perfectamente legal, como se describe en la página 211. La línea 9 agrega relleno para proporcionar espacio alrededor del texto del botón y el borde del botón, mientras que la línea 10 elimina el subrayado que normalmente aparece debajo de los enlaces. Las últimas líneas establecen propiedades para el texto en el botón, incluido su color, fuente, alineación y sombra de texto. CONSEJOLa creación de botones atractivos a menudo implica acumular propiedades CSS (como puede ver en el código anterior). Si necesita un poco de ayuda para crear todo ese código, consulte el generador de botones CSS3http://css3button.net. Para ver otros excelentes ejemplos de botones CSS3, visitehttp://hellohappy.org/css3-buttons/yhttp://murodediseñadorweb. com/tutorials/css3-gradiente-botones. Uso de gráficos Agregar gráficos a los enlaces es una de las maneras más fáciles y visualmente más emocionantes de mejorar la navegación de su sitio. Hay una gran cantidad de técnicas y diseños posibles, pero ninguno de los buenos involucra un HTML <imagen>etiqueta. En cambio, puede agregar fácilmente imágenes atractivas e informativas a cualquier enlace usando el CSSimagen de fondopropiedad. Puede ver varios ejemplos en la Figura 9-3. (También aprenderá técnicas más avanzadas para usar imágenes para crear botones gráficos y rollovers a partir de la página 314). Figura 9-3 Incluso un simple gráfico puede animar un enlace y aclarar su propósito. Un icono de globo (abajo a la izquierda) es una forma de indicar un enlace externo. Si necesita un repaso enimagen de fondoy propiedades relacionadas, regrese a la página 240. Mientras tanto, aquí hay algunas cosas que debe tener en cuenta cuando usa imágenes con enlaces: • no olvidesno-repetirNormalmente, un gráfico de fondo se muestra repetidamente en el fondo. Con muchos gráficos, ese efecto se ve horrible para los enlaces (arriba a la derecha, Figura 9-3). A menos que esté utilizando un patrón sutil como un relleno degradado, recuerde configurar la opción de repetición para detener el mosaico de esta manera:repetición de fondo: sin repetición;. 302 Css3: el manual perdido www.it-ebooks.info • Colocación de control conposición de fondo.Para colocar una imagen con precisión en el fondo, utilice elposición de fondopropiedad (página 246). Cuando desee colocar una imagen en el extremo derecho de un enlace pero centrada verticalmente en la línea, use este CSS:posición de fondo: centro derecha. ENLACES DE ESTILO Para una ubicación más precisa, use un valor específico como píxeles o ems. Estas unidades de medida facilitan el desplazamiento rápido de un gráfico a un par de píxeles del borde izquierdo del enlace. Al combinar estas unidades con un valor porcentual, puede centrar fácilmente un gráfico verticalmente dentro de un enlace pero colocarlo a una distancia exacta del borde izquierdo:posición de fondo: 10px 50%;. CONSEJOAl colocar imágenes de fondo, el primer valor es la ubicación horizontal (de izquierda a derecha); el segundo es la colocación vertical (de arriba hacia abajo). Desafortunadamente, no hay forma de colocar exactamente una imagen desde los bordes derecho o inferior. Entonces, si desea mover una imagen desde el borde derecho un poco, entonces tiene dos opciones: primero, en su programa de edición de imágenes, puede agregar un espacio vacío al borde derecho del gráfico. La cantidad de espacio vacío que agregue debe ser equivalente a cuánto desea sangrar ese gráfico desde la derecha. Una vez que haya creado el gráfico, utilice elposición de fondopropiedad para colocar el gráfico en el borde derecho del elemento: por ejemplo,posición de fondo: arriba a la derecha;.O puede usar valores porcentuales:posición de fondo: 90% 75%; coloca el punto que se encuentra al 90 por ciento del borde izquierdo de la imagen encima del punto al 90 por ciento del borde izquierdo del elemento con estilo. Como puede imaginar, este método no proporciona una precisión completa, por lo que deberá experimentar un poco. (Consulte la página 249 para obtener más información sobre cómo funciona el posicionamiento porcentual). • El acolchado te da espacio.Si está utilizando una imagen o icono para marcar un enlace, asegúrese de agregar relleno en el lado en el que se encuentra la imagen para quitar el texto del enlace. Por ejemplo, el tercer ejemplo de la Figura 9-3 tiene 30 píxeles de relleno a la izquierda para evitar que la palabra "Hogar" se superponga a la imagen de la casa, mientras que un pequeño relleno a la derecha deja espacio para el globo terráqueo en la imagen inferior izquierda. NotaDado que la etiqueta <a> es un elemento en línea, agregar relleno superior e inferior (o, para el caso, márgenes superior e inferior) no tiene ningún efecto. Consulte la página 200 para saber por qué. Sin embargo, puede convertir un enlace en un elemento a nivel de bloque (bloqueo de pantalla)por lo que puede aceptar relleno y márgenes superior e inferior, o usar el bloque en línea configuración (pantalla: bloque en línea).Verá ambas técnicas más adelante en este capítulo. • Usa las pseudoclases.No olvides el:flotary :visitadopseudo-clases. Pueden agregar excelentes efectos dinámicos y proporcionar comentarios útiles sobre sus enlaces. Puedes intercambiar en undiferentegráfico de fondo para cualquiera de estas pseudoclases. Por ejemplo, podría tener un gráfico de bombilla tenue en el fondo de un enlace normal, pero cambiar ese gráfico a una bombilla encendida cuando el mouse se desplaza sobre él. Capítulo 9:MEJORANDO LA NAVEGACIÓN DE SU SITIO www.it-ebooks.info 303 Edificio navegación Barras Si decide utilizar un gráfico para un enlace:flotarestado, tenga en cuenta que los navegadores no descargan el gráfico hasta que el mouse de su visitante realmente pasa sobre el enlace, por lo que habrá un retraso notable antes de que aparezca el gráfico. Sin embargo, una vez que se descarga el gráfico, el retraso desaparece. Consulte la página 313 para conocer una técnica para evitar este incómodo problema. Construcción de barras de navegación Cada sitio necesita buenas funciones de navegación para guiar a los visitantes a la información que buscan y ayudarlos a encontrar el camino de regreso. La mayoría de los sitios están organizados en secciones, como Productos, Información de contacto, Blog corporativo, etc. Esta estructura les permite a los visitantes saber qué información esperar y dónde pueden encontrarla. La mayor parte del tiempo, encuentra enlaces a las secciones principales de un sitio en unbarra de navegación. CSS facilita la creación de una barra de navegación atractiva, efectos de rollover y todo. Uso de listas desordenadas En el fondo, una barra de navegación no es más que un montón de enlaces. Más específicamente, en realidad es unlistade las diferentes secciones de un sitio. En el Capítulo 1, aprendió que la misión de HTML es proporcionar una estructura significativa a su contenido. En consecuencia, siempre debe usar una etiqueta que sea apropiada para el significado de ese contenido. Para una lista de elementos, ese es el <ul>o etiqueta de lista desordenada, la misma que usa para crear listas con viñetas. No importa si desea que su lista tengaNoviñetas o para estirar horizontalmente a lo largo de la parte superior de la página: puede hacer todo eso diseñando el <ul>etiqueta con CSS. La Figura 9-4 muestra un ejemplo. Figura 9-4 Usando CSS, puede doblar HTML ordinario<ul>etiquetas a su gusto y conviértalas en barras de navegación verticales u horizontales. Parafraseando una frase clásica de una película, "No necesitamos balas apestosas". El HTML de una barra de navegación es sencillo. Hay un solo enlace dentro de cada elemento de la lista individual. Además, necesita una forma de diseñar solo esa lista desordenada. (No quieres actual listas de elementos para que parezcan barras de navegación). Aplicar una clase o id al <ul> etiqueta es un buen enfoque: 304 Css3: el manual perdido www.it-ebooks.info Edificio navegación <ul clase="navegación"> <li><a href="index.html">Inicio</a></li> <li><a Barras href="noticias.html">Noticias</a></li> <li><a href ="reviews.html">Reseñas</a></li> </ul> El CSS varía un poco dependiendo de si desea una barra de navegación horizontal o vertical. En cualquier caso, debe hacer dos cosas: • Retire las balas.A menos que se suponga que la barra de navegación debe verse como una lista con viñetas, elimine las viñetas configurando eltipo-estilo-listapropiedad a ninguno: ul.nav { tipo-estilo-lista: ninguno; } • Elimine el relleno y los márgenes.Dado que los navegadores sangran los elementos de la lista desde la izquierda, también debe eliminar este espacio agregado. Algunos navegadores hacen la sangría usandorelleno,y otros usanmargen,por lo que debe establecer ambos en 0: ul.nav { tipo-estilo-lista: ninguno; relleno-izquierda: 0; margen izquierdo: 0; } Básicamente, estos dos pasos hacen que cada elemento de la lista se vea como cualquier elemento simple a nivel de bloque, como un párrafo o un título (excepto que un navegador no inserta márgenes entre los elementos de la lista). En este punto, puede comenzar a diseñar los enlaces. Si desea una barra de navegación vertical, siga leyendo; para barras de navegación horizontales, consulte la página 307. Barras de navegación verticales Una barra de navegación vertical es solo un montón de enlaces apilados uno encima del otro. Quitar las viñetas, el margen izquierdo y el relleno (como se explicó en la sección anterior) lo lleva casi todo el camino, pero necesita conocer algunos trucos adicionales para que las cosas se vean bien: 1.Muestra el enlace como un bloque. Desde el <un>La etiqueta es un elemento en línea, es tan ancho como el contenido que contiene. Los botones con texto de diferente longitud (como Inicio y Nuestros productos) tienen diferentes anchos. La apariencia escalonada de botones de diferentes anchos apilados uno encima del otro no se ve bien, como puede ver en el n.º 1 de la Figura 9-5. Además, el relleno superior e inferior y los márgenes no tienen efecto en los elementos en línea. Para sortear estas limitaciones, diseña el enlace como un elemento de bloque: ul.nav a { bloqueo de pantalla; } Capítulo 9:MEJORANDO LA NAVEGACIÓN DE SU SITIO www.it-ebooks.info 305 Edificio navegación Barras El valor del bloque no solo hace que cada botón tenga el mismo ancho, sino que también hace que se pueda hacer clic en toda el área del enlace. De esa forma, cuando sus visitantes hagan clic en áreas donde no hay texto de enlace (como el relleno alrededor del enlace), seguirán activando el enlace. 2.Restringir el ancho de los botones. Hacer que los enlaces sean elementos a nivel de bloque también significa que son tan anchos como la etiqueta en la que están anidados. Entonces, cuando están sentados en una página, esos enlaces se extienden a lo ancho de la ventana del navegador (#2 en la Figura 9-5 ). Tienes varias formas de hacerlos un poco más angostos. Primero puedes establecer el ancho de <un>etiqueta. Si desea que cada botón tenga 8 ems de ancho, por ejemplo, agréguelo alanchopropiedad: Figura 9-5 En solo cuatro sencillos pasos, puede convertir una lista desordenada de enlaces en una atractiva barra de navegación. ul.nav a { bloqueo de pantalla; ancho: 8em; } Establecer un ancho para cualquiera de las etiquetas que envuelven esos enlaces, como el <li>o <ul>etiquetas—también funciona. 306 Css3: el manual perdido www.it-ebooks.info Si el texto del botón ocupa solo una línea, también puede centrar el texto verticalmente para que haya Edificio navegación el mismo espacio por encima y por debajo del texto del enlace. Simplemente agregue una altura al Barras enlaceyestablecer sualtura de la líneapropiedad al mismo valor: a{ altura: 1,25 cm; altura de línea: 1,25 em; } NotaEs posible que no necesite establecer un ancho explícito si la barra de navegación está dentro de un elemento de diseño de página que tiene un ancho. Como leerá en la tercera parte, es fácil crear una barra lateral que abrace el borde izquierdo (o derecho) de una página. La barra lateral tiene un ancho establecido, por lo que colocar la barra de navegación de la lista desordenada dentro de ella restringe automáticamente el ancho de los botones. Ahora que todo este trabajo está fuera del camino, puede diseñar los botones al contenido de su corazón. Agregue relleno, colores de fondo, márgenes, imágenes o lo que sea que le haga cosquillas a su fantasía artística. Si desea extender los botones para que no se toquen, agregue un margen inferior (o superior) a cada enlace. Barras de navegación horizontales CSS le permite convertir un conjunto de elementos de lista apilados en una presentación de enlaces uno al lado del otro, como la que se muestra en la Figura 9-4. Esta sección le muestra dos formas comunes de crear una barra de navegación horizontal a partir de una lista. El primero—usando el pantalla: bloque en líneapropiedad: es fácil, pero generalmente conduce a un pequeño espacio entre los botones. Hay una forma de evitar esto, pero implica preocuparse por su HTML. Si desea una barra de navegación horizontal donde los botones se toquen, cambie a la < flotanteul>método descrito en la página 310. TALLER DE TRABAJO Cuando las fronteras chocan Si los botones de la barra de navegación se tocan y aplica un class con el estilo de borde inferior correcto y aplíquelo al último enlace, borde alrededor de cada vínculo, los bordes se duplican. En otras o mejor aún, agregue un borde inferior a la etiqueta <ul> que encierra palabras, el borde inferior de un botón toca el borde superior del la barra de navegación. (Verá este truco en acción en el tutorial de este siguiente botón. capítulo en la página 310). Para evitar esto, agregue el borde solo a laarribade cada enlace. De esa Lo mismo ocurre cuando tienes enlaces horizontales. En este caso, los bordes manera, obtendrá solo una línea de borde donde la parte inferior de derecho e izquierdo de los botones adyacentes se tocan. Simplemente cada botón toca la parte superior del siguiente. desactive los bordes izquierdos de los botones y agregue un borde izquierdo a Sin embargo, esta solución deja toda la barra de navegación sin bordes debajo la etiqueta contenedora: el <ul>etiqueta, por ejemplo. del último enlace. Para solucionar ese problema, puede crear un Cualquiera que sea el método que utilice, comience eliminando las viñetas y el espacio dejado del <ul> etiqueta, como se ilustra en el #1 en la Figura 9-6. Capítulo 9:MEJORANDO LA NAVEGACIÓN DE SU SITIO www.it-ebooks.info 307 Edificio navegación Barras Figura 9-6 Crear un menú horizontal a partir de una lista desordenada de enlaces requiere solo unos pocos pasos. Sin embargo, usando elen líneaybloque en líneaEl método da como resultado un espacio notable entre los botones (encerrados en un círculo). Consulte la nota en la página 303 para conocer el motivo y una posible solución. UTILIZANDO DISPLAY: INLINE Y DISPLAY: INLINE-BloCK El método más simple para crear una barra de navegación horizontal consiste en cambiar el mostrar propiedad de los elementos de la lista debloquearaen línea.Es fácil de hacer usando CSS. 1.Cree un estilo para la lista desordenada para eliminar cualquier relleno, márgenes y viñetas. ul.nav { margen izquierdo: 0px; relleno-izquierda: 0px; estilo de lista: ninguno; borde inferior: 1px punteado #000; } En este caso, también agregó un borde inferior, que aparecerá debajo de los botones (vea el n.º 1 en la Figura 9-6). 2.Haga que los elementos de la lista sean elementos en línea. Los elementos en línea no crean un salto de línea antes o después de ellos como lo hacen los elementos a nivel de bloque. Configuración de lamostrarpropiedad del <li>etiquetas aen línea los hace aparecer uno al lado del otro (#2 en la Figura 9-6). . nav li { pantalla: en línea; } Sin embargo, debe asegurarse de no tener demasiados botones. Si no encajan todos uno al lado del otro, algunos caerán debajo de la primera fila. 308 Css3: el manual perdido www.it-ebooks.info NotaTambién podrías usarbloque en líneapara el estilo anterior, pero solo si no le importa Internet Explorer 7, que solo le permite aplicarbloque en líneaa elementos en línea como enlaces, no a elementos de nivel de bloque como el < Edificio navegación Barras li>etiqueta. 3.Dale estilo a los enlaces. Puede eliminar el subrayado debajo de los enlaces y agregar un borde alrededor de ellos. También puede agregar color de fondo o una imagen de fondo para proporcionar profundidad visual. Agregue relleno si necesita más espacio alrededor del texto de cada enlace. Si desea algo de espacio entre cada botón, aplique un margen derecho. El siguiente estilo le da a los enlaces una apariencia similar a un botón, como se muestra en los números 3 y 4 en la Figura 9-6: . navegar un { pantalla: bloque en línea; borde: 1px punteado #000; borde inferior: ninguno; relleno: 5px 15px 5px 15px; color de fondo: #EAEAEA; texto-decoración: ninguno; color: #333; } En primer lugar, debe configurar elmostrarpropiedad de los enlaces abloque en línea. Esto asegura que se respeten los márgenes y el relleno superior e inferior (como se describe en la página 200, normalmente los elementos en línea ignoran los márgenes y el relleno superior e inferior, así como los valores de ancho y alto). Luego puede diseñar los botones al contenido de su corazón. Aquí, agregó un borde a los enlaces y eliminó el borde inferior para que no se duplique en el borde inferior aplicado a la lista desordenada. CONSEJOPuede hacer que todos los botones tengan el mismo tamaño configurando el ancho de los enlaces. Para que esta barra de navegación horizontal aparezca en el centro de la página, agreguealineación de texto: centro;a la <ul>estilo de la etiqueta. De hecho, este es uno de los beneficios de esta técnica sobre la técnica de flotación que se describe a continuación: cuando usaen líneaybloque en línea,puede centrar su barra de navegación, lo que no puede hacer con los flotadores. Sin embargo, notará que los botones no se tocan (vea el área marcada con un círculo en la Figura 9-6). Eso tiene que ver con la forma en que los navegadores web tratan el espacio en blanco entre el <li>etiquetas Por ejemplo, tome este ejemplo HTML: <ul clase="navegación"> <li><a href="index.html">Inicio</a></li> <li><a href="noticias.html">Noticias</a></li> <li><a href ="reviews.html">Reseñas</a></li> </ul> Capítulo 9:MEJORANDO LA NAVEGACIÓN DE SU SITIO www.it-ebooks.info 309 Edificio navegación Barras Los navegadores web tratan el retorno de carro después de uno </li>y antes del proximo <li>como un espacio Hay un par de maneras de eliminar este espacio: • Poner el cierre </li>y abriendo <li>en la misma línea así: <ul clase="navegación"> <li><a href="index.html">Inicio</a></li><li> <a href="noticias.html">Noticias</a></li><li> <a href ="reviews.html">Reseñas</a></li> </ul> Este tipo de código normalmente no se escribe de esta manera, y un programa como Dreamweaver definitivamente no lo escribiría de esta manera. Para quitar el espacio, tienes que entrar y cambiar el código a mano. • Agregar un margen derecho negativo a los elementos de la lista. Por ejemplo, podrías cambiar el liestilo en el Paso 2 anterior a esto: . navegación li { pantalla: en línea; margen derecho: -5px; } El valor del margen negativo básicamente extrae el siguiente elemento de la lista en 5 píxeles para cerrar el espacio entre los botones. El problema con esta técnica es que el valor exacto que use variará según el tamaño del texto (5 píxeles pueden funcionar o no), por lo que deberá experimentar para obtener el valor adecuado. USO DE FLOTADORES PARA NAVEGACIÓN HORIZONTAL Otra técnica más popular es hacer flotar los elementos de la lista. Este método también coloca los enlaces uno al lado del otro. Además, esta técnica no sufre el problema de espaciado del método en línea. NotaLas barras de navegación formadas por elementos flotantes son difíciles de centrar horizontalmente en el medio de una página. Cuando necesite hacer eso, elen líneamétodo descrito en la página 308 es mejor. 1.Flotar los elementos de la lista. Agregando un flotante izquierdo al <li>tags los elimina del flujo normal de arriba hacia abajo de los elementos: . nav li { flotador: izquierda; } Los elementos de la lista flotante (junto con sus enlaces adjuntos) se deslizan uno al lado del otro, al igual que las imágenes en el tutorial de la galería de fotos en la página 278. (Puede hacerlos flotar fácilmente si desea que esos botones se alineen a la derecha borde de la pantalla o que contiene la barra lateral). 310 Css3: el manual perdido www.it-ebooks.info Edificio navegación Barras Preguntas frecuentes Menús emergentes ¿Cómo creo esos geniales menús emergentes que muestran un Si no es del tipo que lo hace usted mismo, o si simplemente tiene prisa, submenú de enlaces cuando alguien pasa el mouse sobre un botón?? puede usar el generador de menús Pure CSS gratuito, una página web Las barras de navegación que tienen múltiples niveles de menús que aparecen o se deslizan hacia afuera son extremadamente populares. Son una manera similar a un asistente que produce el HTML y el CSS necesarios para usted: http://purecssmenu.com. perfecta de incluir muchas opciones de enlaces en una barra de navegación La única desventaja del enfoque CSS es que los submenús desaparecen compacta. Puedes crearlos de un par de maneras. instantáneamente si el mouse de su visitante se desvía. Puede esperar Primero, está el enfoque de solo CSS. Puede encontrar un tutorial que todos sus visitantes tengan excelentes reflejos, o puede probar un básico sobre el proceso enhttp://line25.com/tutorials/howto- enfoque diferente: use CSS para diseñar los botones y JavaScript para create-a-pure-css-dropdown-menu. Para ver un menú CSS spif fy controlar las acciones de los submenús. Para un menú de JavaScript que usa transiciones CSS para animar la aparición y desaparición muy simple, pruebe el complemento de navegación jQuery en https:// de los menús desplegables, consultewww . red-team-design.com/ github.com/dansdom/plugins-navegación. css3-animated-dropdown-menu. 2.Agregarbloqueo de pantallaa los enlaces Los enlaces son elementos en línea, por lo que los valores de ancho (así como el relleno y los márgenes superior e inferior) no se aplican a ellos. Hacer que un navegador muestre los enlaces como elementos de bloque le permite establecer un ancho exacto para el botón y agregar una cantidad cómoda de espacio en blanco encima y debajo de cada enlace: ul.nav a { pantalla: bloque; } 3.Dale estilo a los enlaces. Agregue colores de fondo, bordes, etc. 4.Agrega un ancho. Si desea que los botones de navegación tengan anchos idénticos, establezca un ancho para el <un> etiqueta. El ancho exacto que utilice depende de la cantidad de texto que haya en cada botón. Obviamente, para un enlace como Filosofía corporativa, necesita un botón más ancho. Si desea que cada botón tenga simplemente el ancho del texto interior, no establezca un ancho. Sin embargo, puede agregar relleno izquierdo y derecho para darle al texto un respiro. CONSEJOPara centrar el texto en el medio del botón, agreguealineación de texto: centro;al estilo de los enlaces. Capítulo 9:MEJORANDO LA NAVEGACIÓN DE SU SITIO www.it-ebooks.info 311 Edificio navegación Barras 5.Agregardesbordamiento: ocultoa la <ul>estilo de etiqueta Si tiene un borde, un color de fondo o una imagen, debe "contener el flotante", es decir, los elementos de la lista flotante dentro de <ul>aparecerá al final de la lista (y fuera del <ul>borde de etiquetas o color de fondo). ul.nav { desbordamiento: oculto; } Estos son los estilos necesarios para crear la barra de navegación que se muestra en la Figura 9-7. Observe que los botones tienen el mismo ancho y el texto del botón está centrado. . navegación { margen: 0px; relleno: 0px; estilo de lista: ninguno; borde inferior: 3px rgb sólido (204,204,204); desbordamiento: oculto; } . navegación li { flotador izquierdo; } . navegar un { ancho: 12em; bloqueo de pantalla; borde: 3px rgb sólido (204,204,204); borde inferior: ninguno; borde-radio: 5px 5px 0 0 ; relleno: 10px; margen derecho: 5px; color de fondo: rgb(95,95,95); imagen de fondo: -webkit-linear-gradient(rgb(175,175,175), rgb(95,95,95)); imagen de fondo: -moz-linear-gradient(rgb(175,175,175), rgb(95,95,95)); imagen de fondo: -olinear-gradient(rgb(175,175,175), rgb(95,95,95)); imagen de fondo: degradado lineal (rgb (175,175,175), rgb (95,95,95)); texto-decoración: ninguno; color blanco; alineación de texto: centro; familia tipográfica: Arial, Helvetice, sans-serif; fuente-peso: negrita; } 312 Css3: el manual perdido www.it-ebooks.info ESTILO CSS PRECARGA RUEDAS Figura 9-7 Los elementos de la lista flotante le permiten crear elementos de igual ancho botones para una barra de navegación como esta. Puede ver el CSS real que creó esta barra en la página opuesta. Preguntas frecuentes Dónde obtener ayuda con la barra de navegación Nunca he hecho una barra de navegación antes, pero realmente quiero También puede encontrar un montón de diseños geniales de navegación que mi sitio tenga una. Simplemente no creo que pueda ponerlo todo basados en listas enhttp://css.maxdesign.com.au/listamatic. junto por mi cuenta. ¿Hay algo que me guíe a través de todo el proceso por primera vez?? Finalmente, si no quiere molestarse en crear el suyo propio, pruebe el asistente List-O-Matic enwww.accessify.com/toolsand-wizards/ Sí. De hecho, hay un tutorial en este mismo capítulo que le developer-tools/list-o-matic. Este sitio es para cierta información, como muestra paso a paso cómo crear una barra de navegación. Pasa a fuentes y colores, y puede crear el CSS que necesita para la navegación la página 324. basada en listas. Incluso te permite crear submenús (también conocidos En línea, puede encontrar tutoriales, además de herramientas que hacen parte del como menús desplegables). trabajo por usted. Para obtener más información sobre cómo convertir listas ordinarias en elementos de navegación extraordinarios, visite el tutorial de listas paso a paso en:http://css.maxdesign.com.au/listutorial. Rollovers de precarga de estilo CSS En los viejos tiempos, hacer que un enlace gráfico cambiara a otro gráfico cuando se pasaba el mouse sobre JavaScript requería. Con CSS, puede lograr efectos similares con:flotar pseudoclase y una imagen de fondo. Sin embargo, hay un problema con el método CSS: a menos que su visitante ya haya descargado el gráfico dinámico, hay un retraso notable mientras el navegador absorbe el nuevo gráfico y lo muestra. El retraso ocurre solo la primera vez que el visitante se desplaza sobre el enlace, pero aún así, esperar a que se carguen los gráficos es muy del siglo XX. Capítulo 9:MEJORANDO LA NAVEGACIÓN DE SU SITIO www.it-ebooks.info 313 ESTILO CSS PRECARGA RUEDAS La solución de JavaScript puede evitar este problema gracias a una técnica llamada precarga,que descarga automáticamente el gráfico de rollover mucho antes de que se necesite. Pero CSS no le da esa opción, por lo que debe utilizar otra maniobra inteligente llamadaObjetos CSS, que utiliza un solo gráfico para crear diferentes estados para el mismo botón. NotaCompañías como Yahoo y Google utilizan ampliamente los CSS Sprites, no solo para efectos de rollover, sino también para optimizar la velocidad de descarga de los sitios web. Puedes conocer más sobre ellos enhttp://codificación.smashingmagazine. com/2009/04/27/el-misterio-de-CSS-sprites-técnicas-herramientas-y-tutoriales/. He aquí cómo implementar el método: 1.En su programa de edición de imágenes favorito, cree una imagen con diferentes versiones del botón. Puede crear un estado regular, un estado de rollover y tal vez incluso un estado de "usted está aquí". Coloque las imágenes una encima de la otra, con la imagen de enlace normal arriba y la imagen de rollover debajo. NotaFireworks CS6 tiene una herramienta integrada para crear sprites CSS. También hay muchas herramientas en línea para ayudarlo a crearlos: SpritePad (http://spritepad.wearekiss.com) es un ejemplo. 2.Mida las distancias desde la parte superior de todo el gráfico hasta la parte superior de cada imagen. En la Figura 9-8 (arriba), el borde superior de la imagen dinámica está a 39 píxeles de la parte superior del gráfico. 3.Cree un estilo CSS para el enlace regular.Incluya la imagen en el fondo y colóquela en la parte superior izquierda del estilo (Figura 9-8, centro). Su estilo puede ser algo como esto: a { background: #E7E7E7 url(images/pixy.png) superior izquierda sin repetición; } 4.Crear el:flotarestilo. Aquí está el truco: utilice elposición de fondopropiedad para desplazar el gráfico hacia arriba, por lo que la primera imagen desaparece y la imagen de rollover se vuelve visible (Figura 9-9, abajo). a: hover { posición de fondo: 0 -39px; } Además de evitar el temido retraso de la descarga, esta técnica te ayuda a mantener tus gráficos de navegación organizados en un solo archivo. 314 Css3: el manual perdido www.it-ebooks.info ESTILO particular Tipos de Enlaces Figura 9-8 Con el método CSS Sprites, puede evitar un molesto retraso mientras el navegador descarga una imagen dinámica por primera vez. Al combinar todos los diferentes gráficos de estado de enlace en una sola imagen, puede mostrar un estado diferente simplemente ajustando la posición de la imagen de fondo. NotaAlgunos sitios web llevan esta técnica al extremo. Yahoo, Amazon y Google (entre muchos otros) a menudo juntan docenas de pequeñas imágenes en un solo archivo y muestran solo la parte del archivo que contiene el botón deseado. Puedes ver un ejemplo de Amazon aquí:www.flickr.com/photos/mezzoblue/3217540317. Los sitios con millones de visitantes diarios se benefician de los sprites complejos, ya que es más fácil y rápido para un servidor web enviar un solo archivo de imagen (aunque más grande) que docenas de archivos más pequeños. En un nivel más manejable, el sitio web de un conocido diseñador usa un solo gráfico para administrar los 15 botones diferentes en su barra de navegación. Puedes leer sobre su técnica enhttp://veerle-v2.duoh.com/blog/comentarios/ the_xhtml_css_template_phase_of_my_new_blog_part_2/. También puede ver esta técnica en acción en el tutorial de este capítulo, en el Paso 8 en la página 320. Dar estilo a tipos particulares de enlaces Los diseñadores web se vinculan a todo tipo de cosas: otras páginas web en sus sitios, páginas web en otros sitios, archivos de Adobe Acrobat, documentos de Word y archivos zip, por nombrar algunos. Para ayudar a guiar a los visitantes de su sitio, es posible que desee proporcionar pistas para que sepan adónde conduce un enlace antes de que hagan clic en él. Los selectores avanzados son una excelente manera de hacer precisamente eso. Capítulo 9:MEJORANDO LA NAVEGACIÓN DE SU SITIO www.it-ebooks.info 315 ESTILO particular Tipos de Enlaces Enlaces a otros sitios web Puede crear fácilmente un estilo que identifique enlaces a otros sitios web mediante un selector de atributos. Como leyó en la página 72, los selectores de atributos le permiten diseñar etiquetas HTML que tienen un atributo particular, por ejemplo, un <imagen>etiqueta con elalternativaatributo establecido en Nuestra compañía. También puede diseñar etiquetas cuyos atributoscomenzarcon ciertos valores. Cualquier enlace que apunte fuera de su sitio debe ser una URL absoluta (consulte el cuadro en la página 244), lo que significa que debe comenzar conhttp://-Por ejemplo,http://www.yahoo.com. Entonces, para crear un estilo que solo afecte a los enlaces que usan una URL absoluta, use este selector: a[href^='http://'] El=se traduce como "comienza con", por lo que este selector coincide con enlaces como <a href="http://www.google.com/">, <a href="http://www.sawmac.com/css3/">,etcétera. Puede diseñarlos de la forma que desee, pero una técnica común es agregar una pequeña imagen junto al enlace, un ícono que indica un enlace externo. Verá esto en acción en la página 321 del tutorial de este capítulo. Si utiliza enlaces absolutos para apuntar a otras páginas ensusitio, entonces deberá agregar otro estilo para "desactivar" el estilo; de lo contrario, terminará resaltando esos enlaces como enlaces externos, cuando en realidad son solo enlaces dentro de su sitio. Este segundo estilo solo usa una versión más detallada del selector mencionado anteriormente. Por ejemplo, si su sitio está ubicado enwww.misitio.com, luego puede crear un selector que se aplique a esos enlaces como este:a[href^='http://www.misitio.com'].Poniendo todo esto junto, si desea agregar un ícono de globo al lado de los enlaces externos, pero no para los enlaces dentro de su sitio, puede crear estos dos estilos: a[href^='http://'] { fondo: url(images/globe.png) sin repetición centro derecha; relleno derecho: 15px; } a[href^='http://www.misitio.com'] { fondo: ninguno; relleno derecho: 0; } NotaSi quiere ser realmente elegante con su CSS, puede combinar el selector de atributos con el CSS3 :no()selector para crear un estilo único que afectará a todas las URL absolutasexceptolos que apuntan a su propio sitio: a[href^='http://']:not(a[href^='http://www.mysite.com']) Este selector de aspecto loco se traduce como "seleccionar todos los enlaces que comienzan conhttp://, peronolos que comienzan con http://www.mysite.com.” La desventaja de esta técnica es que Internet Explorer 8 y versiones anteriores no comprenden:no()selector. 316 Css3: el manual perdido www.it-ebooks.info ESTILO particular Tipos de Enlaces de correo electrónico Los enlaces de correo electrónico son otro tipo especial de enlace. Normalmente, los enlaces de correo electrónico se ven como Enlaces cualquier otro enlace: azul y subrayado. Sin embargo, no actúan como cualquier otro enlace. Al hacer clic en uno, se inicia el programa de correo electrónico de un visitante, y algunas personas encuentran que iniciar un nuevo programa mientras navegan por un sitio web realmente les distrae, así que hágales saber que es para correo electrónico. Se aplica la misma técnica básica descrita anteriormente para los enlaces externos. Dado que todos los enlaces de correo electrónico comienzan conenviar a:,puede crear un selector como el siguiente para crear un estilo para formatear solo enlaces de correo electrónico: a[href^='correo a:'] Verá un ejemplo de esto en acción en el tutorial en la página 321. Enlaces a tipos específicos de archivos Algunos enlaces apuntan a archivos, no a otras páginas web. A menudo ve el informe anual de una empresa en línea como un archivo PDF descargable o un archivo zip de archivos (como los tutoriales de este libro) en un sitio web. Los enlaces a esos tipos de archivos generalmente fuerzan al navegador a descargar el archivo en la computadora del visitante o, para los archivos PDF, inician un complemento que le permite ver el archivo dentro del navegador. Hacer clic en un enlace puede ser una verdadera molestia, ¡solo para descubrir que en realidad comenzó una descarga de 100 MB! Puede identificar tipos de archivos específicos de la misma manera que los enlaces externos o los enlaces de correo electrónico. Pero en lugar de buscar información específica al principio de la URL del enlace, puede encontrarla al final. Por ejemplo, un enlace a un documento PDF podría verse así <a href="informe_anual.pdf">,mientras que un enlace a un archivo zip podría verse así: <a href="tutoriales.zip">.En cada caso, el tipo de archivo específico se identifica mediante una extensión al final de la URL: pdf o .zip. CSS proporciona un selector de atributos que le permite encontrar atributos que terminan con información específica. Entonces, para crear un estilo para enlaces a archivos PDF, use este selector: a[href$='.pdf'] $=significa "termina en", por lo que este selector significa "seleccionar todos los enlaces cuyohrefel atributo termina en .pdf.” También puede crear estilos similares para otros tipos de archivos: a[href$='.zip'] /* archivo zip */ a[href$='.doc'] /* documento de Word */ Verá ejemplos de esta técnica en el tutorial de la página 323. Capítulo 9:MEJORANDO LA NAVEGACIÓN DE SU SITIO www.it-ebooks.info 317 Tutorial: ENLACES DE ESTILO Tutorial: Estilo de enlaces En este tutorial, aplicará estilo a los enlaces de varias formas, como agregar rollovers y gráficos de fondo. Para comenzar, descargue los archivos del tutorial del sitio web complementario de este libro en www.sawmac.com/css3. Haga clic en el enlace del tutorial y descargue los archivos. Todos los archivos están encerrados en un archivo zip, por lo que primero debe descomprimirlos. (Encontrará instrucciones detalladas en el sitio web). Los archivos de este tutorial se encuentran dentro del09carpeta. Formato de enlace básico 1.Inicie un navegador web y abra el archivo.09→Enlaces→enlaces.html. Esta página contiene una variedad de enlaces (marcados con un círculo en la Figura 9-9) que apuntan a otras páginas del sitio, enlaces a páginas en otros sitios web y una dirección de correo electrónico. Comience cambiando el color de los enlaces en esta página. 2.abiertoenlaces.htmlen un editor de texto y coloque el cursor entre la apertura y el cierre <estilo>etiquetas La página ya tiene adjunta una hoja de estilo externa con un formato básico, además de <estilo>etiquetas para una hoja de estilo interna. NotaComo lo ha hecho antes, colocará los estilos para este ejercicio en una hoja de estilo interna para facilitar la codificación y la vista previa. Cuando termine, es mejor mover los estilos a una hoja de estilo externa. 3.Agregue un nuevo estilo a la hoja de estilo interna: <estilo> a{ color: #207EBF; } </estilo> Este estilo es tan genérico como parece. Se aplicará a todos <un>etiqueta en la página. Es un buen lugar para comenzar, ya que configura el aspecto general de los enlaces de la página. Agregará más estilos que le permitirán identificar vínculos en áreas específicas de la página. Ahora es el momento de eliminar ese viejo y aburrido subrayado debajo del enlace. 4.Agregartexto-decoración: ninguno;al estilo que acaba de crear. Esto elimina el subrayado, pero también hace que el enlace sea menos visible en la página. Recuerde: siempre debe hacer algo para que los enlaces se destaquen y los visitantes de su sitio puedan hacer clic en ellos. 318 Css3: el manual perdido www.it-ebooks.info Tutorial: ENLACES DE ESTILO Figura 9-9 Aquí hay una página web básica con enlaces en su configuración de navegador estándar, subrayada y azul (o violeta, si son enlaces a páginas visitadas anteriormente). En este caso, algunos enlaces apuntan a otras páginas del sitio, algunos apuntan a otros sitios y uno es una dirección de correo electrónico. En este tutorial, diseñará cada uno de estos enlaces de manera diferente. 5.Agregarpeso de fuente: negrita;haciaaestilo. Ahora los enlaces aparecen en negrita (otro texto también puede aparecer en negrita). A continuación, reemplazará el subrayado, pero lo hará de forma un poco más creativa, usando un borde en lugar del decoración de textopropiedad. 6.Agrega unbordedeclaración al estilo, por lo que se ve así: a{ color: #207EBF; texto-decoración: ninguno; fuente-peso: negrita; borde inferior: 2px sólido #F60; } Capítulo 9:MEJORANDO LA NAVEGACIÓN DE SU SITIO www.it-ebooks.info 319 Tutorial: ENLACES DE ESTILO Los enlaces realmente se destacan, y el uso de un borde en lugar del subrayado normal que se aplica a los enlaces le permite cambiar el color, el tamaño y el estilo de la línea (Figura 9-11, izquierda). Ahora cambiará el aspecto de los enlaces visitados. 7.Agrega un :visitadoEstilo de pseudoclase para enlaces visitados: a: visitado { color: #6E97BF; } Este estilo cambia el aspecto de los enlaces visitados a un tono más claro y gris del color del enlace principal, una forma sutil de desviar la atención de una página ya visitada. Si obtiene una vista previa de la página, haga clic en uno de los enlaces (pruebe uno en la parte central de la página) y luego regrese a laenlaces.htmlpágina. Debería ver que el enlace se vuelve más claro en color. También notará que permanece en negrita y continúa teniendo el subrayado naranja que asignó alaestilo en el Paso 6. Esa es la cascada en acción (Capítulo 5)—ela: visitadoEl estilo es más específico que un simple selector, por lo que su propiedad de color anula el color asignado por elaestilo. Es hora de ir un paso más allá agregando un efecto de rollover, de modo que el fondo del enlace cambie de color cuando el mouse se mueva sobre él. 8.Agrega un :flotarestilo de pseudoclase a la hoja de estilo: a: pasar el cursor { color: #FFF; color de fondo: #6E97BF; bordefondo-color: #6E97BF; } Esta pseudoclase se aplica solo cuando el mouse está sobre el enlace. La calidad interactiva de los rollovers les permite a los visitantes saber que el enlace hace algo (Figura 9-10). Figura 9-10 Con un par de estilos, puede cambiar la apariencia de cualquier enlace. Con el :flotarpseudo-clase, incluso puede cambiar a un estilo diferente cuando el mouse se mueve sobre el enlace. 320 Css3: el manual perdido www.it-ebooks.info Agregar una imagen de fondo a un enlace El enlace de correo electrónico en la parte inferior de la página no se ve diferente a los otros enlaces en la Tutorial: ENLACES DE ESTILO página (Figura 9-11, arriba). Sin embargo, tiene otros planes para ese enlace mailto. Dado que apunta a una dirección de correo electrónico, hacer clic en él no lleva al visitante a otra página, sino que inicia un programa de correo electrónico. Para proporcionar una señal visual que enfatice este punto, agregará un lindo ícono de correo electrónico. 1.Agregue un selector descendiente a la hoja de estilo interna delenlaces.htmlarchivo: a[href^="correo a:"] { color: #666666; borde: ninguno; fondo: url(images/email.gif) sin repetición centro izquierdo; } Este es un selector de atributos avanzado, que selecciona cualquier enlace que comience con correo a,: (en otras palabras, selecciona enlaces de correo electrónico). Elborde: ningunoajuste elimina el subrayado definido por elaestilo que creó en el paso 6: busca un aspecto sutil aquí. El fondoLa propiedad agrega una imagen en el borde izquierdo del enlace. Finalmente, elsin repeticiónEl valor obliga al gráfico a aparecer una sola vez. El problema es que el gráfico se encuentra directamente debajo del enlace, por lo que es difícil leer el texto (encerrado en un círculo en la imagen del medio en la Figura 9-11). 2.Agregue 20 píxeles de relleno izquierdo alatributoestilo que acaba de crear: relleno-izquierda: 20px; Recuerde que el relleno ajusta el espacio entre el contenido y su borde. Entonces, agregar un poco de relleno izquierdo mueve el texto más de 20 píxeles pero deja el fondo en su lugar. Un último toque: aleja un poco todo el enlace del aviso de derechos de autor. 3.Agregue 10 píxeles de margen izquierdo al estilo, para que finalmente quede así: a[href^="enviar a:"] { color: #666666; borde: ninguno; fondo: url(images/email.gif) sin repetición centro izquierdo; relleno-izquierda: 20px; margen izquierdo: 10px; } Este pequeño ajuste visual deja en claro que el ícono está relacionado con el enlace y no es parte del aviso de derechos de autor (Figura 9-11, abajo). Capítulo 9:MEJORANDO LA NAVEGACIÓN DE SU SITIO www.it-ebooks.info 321 Tutorial: ENLACES DE ESTILO Figura 9-11 Solo unos pocos toques sutiles pueden ayudar a que el propósito de un enlace sea obvio. En este caso, un enlace simple (arriba) se vuelve claramente identificable como un enlace de correo electrónico (abajo). Resaltar diferentes enlaces En ocasiones, es posible que desee indicar que un enlace apunta a otro sitio web. De esta manera, puede dar a sus visitantes una pista visual de que hay información adicional en otro lugar de Internet o advertirles que saldrán de su sitio si hacen clic en el enlace. Además, es posible que desee identificar vínculos que apunten a archivos descargables u otros documentos que no sean de la página web. En la página web en la que está trabajando, la barra lateral de "Recursos" de la derecha contiene diferentes tipos de enlaces que resaltará con iconos: un icono diferente para cada tipo de enlace. Primero, configurará un estilo básico que se aplique a todos esos enlaces. 1.Agregue este estilo a laenlaces.htmlhoja de estilo interna: . recursos un { borde inferior: ninguno; } Dado que todos los enlaces que desea formatear están dentro de un <div>con los recursos de la clase, el selector descendiente.recursos unapunta solo a esos enlaces. Este estilo elimina el subrayado que agregó el estilo de enlace genérico. 322 Css3: el manual perdido www.it-ebooks.info A continuación, agregará un icono junto a los enlaces externos. 2.Agregue otro estilo al final de laenlaces.htmlhoja de estilo interna: Tutorial: ENLACES DE ESTILO . recursos a[href^='http://'] { fondo: url(images/globe.png) arriba a la derecha sin repetición; } Este es un estilo de selector descendente que utiliza el selector de atributos avanzado que se analiza en la página 317. Básicamente, apunta a cualquier enlace que comience conhttp://(pero solo aquellos que también están dentro del elemento con la claserecursos).Al igual que con el estilo de enlace de correo electrónico que creó anteriormente, este estilo agrega una imagen de fondo. Coloca la imagen en el lado derecho del enlace. Sin embargo, este estilo tiene un problema similar al estilo de enlace de correo electrónico: la imagen se encuentra debajo del texto del enlace. Afortunadamente, la solución es la misma: solo agregue algo de relleno para mover la imagen fuera del camino del texto. Sin embargo, en este caso, en lugar de agregar el relleno izquierdo, agregará el relleno derecho (ya que el ícono aparece en el lado derecho del enlace). Además, dado que cada enlace en el cuadro de recursos tendrá un icono de tamaño similar, puede guardar algo de código agregando el relleno al archivo .recursos unestilo que creó en el Paso 1. 3.Edite el .recursos unestilo para que se vea así: . recursos un { borde inferior: ninguno; relleno derecho: 22px; } Si guarda la página y obtiene una vista previa en un navegador web, verá pequeños iconos de globo terráqueo a la derecha de los dos enlaces inferiores en la barra lateral. Es hora de formatear los otros enlaces. 4.Agregue tres estilos más a la hoja de estilo interna: . recursos a[href$='.pdf'] { fondo: url(images/acrobat.png) arriba a la derecha sin repetición; } . recursos a[href$='.zip'] { fondo: url(images/zip.png) arriba a la derecha sin repetición; } . recursos a[href$='.doc'] { fondo: url (imágenes/palabra.png) arriba a la derecha sin repetición; } Estos tres estilos analizan cómo elhreftermina el atributo; identifica enlaces a archivos de Adobe Acrobat (.pdf), archivos zip (.zip) o documentos de Word (.doc); y asigna un icono diferente en cada caso. Capítulo 9:MEJORANDO LA NAVEGACIÓN DE SU SITIO www.it-ebooks.info 323 Tutorial: Creando un navegación Bar 5.Finalmente, agregue un estado flotante para los enlaces de recursos: . recursos a: hover { color: #000; color de fondo: rgba(255,255,255,.8); } Este estilo cambia el color del texto y agrega un color de fondo (vea la Figura 9-12). Puede encontrar una versión terminada de este tutorial en el09_terminado/enlaces/enlaces . html archivo. Figura 9-12 Con los selectores de atributos avanzados, puede identificar y diseñar fácilmente diferentes tipos de enlaces: enlaces externos, enlaces a archivos PDF, documentos de Word y archivos zip. Tutorial: creación de una barra de navegación En este ejercicio, convertirá una simple lista antigua de enlaces en una barra de navegación espectacular, completa con efectos de rollover y un efecto de botón "Está aquí". 1.En un editor de texto, abra09→barra_navegación→barra_navegación.html. Como puede ver, todavía no hay mucho en este archivo. Hay una hoja de estilo interna con los estilos básicos de restablecimiento discutidos en la página 115, y una regla que establece algunas propiedades básicas para <cuerpo>etiqueta. El HTML consta de una lista desordenada con seis enlaces. Se ve como el ejemplo #1 en la Figura 9-13. Su primer paso es agregar algo de HTML para que pueda orientar su CSS para formatear los enlaces en esta lista. 2.Localiza la apertura <ul>etiquetar y agregarclase="navprincipal"a él, por lo que se ve así: <ul class="mainNav"> El atributo de clase identifica esta lista como el área de navegación principal. Use esta clase para crear selectores descendientes para formatear solo estos enlaces, y no solo cualquier enlace antiguo en la página. 324 Css3: el manual perdido www.it-ebooks.info Tutorial: Creando un navegación Bar Figura 9-13 Si bien puede parecer una gran cantidad de pasos, transformar una simple lista desordenada de enlaces en una barra de navegación sofisticada requiere solo unos pocos estilos. 3.Bajo elcuerpoestilo en la hoja de estilo interna, agregue un nuevo estilo: . navegación principal { margen: 0; relleno: 0; estilo de lista: ninguno; } Este estilo se aplica solo a una etiqueta con una clase denavegación principal—en este caso, el <ul> etiqueta. Elimina la sangría y las viñetas que los navegadores aplican a las listas desordenadas, como se muestra en el n.º 2 de la figura 9-13. A continuación, comenzará a formatear los enlaces. 4.Agregue un selector descendente para formatear los enlaces en la lista: . navegación principal a { color: #000; tamaño de fuente: 11px; transformación de texto: mayúsculas; texto-decoración: ninguno; } Este estilo define el formato de texto básico para los enlaces. Establece el color y el tamaño de la fuente, convierte todas las letras en mayúsculas y elimina la línea que generalmente se encuentra debajo de los enlaces (#3 en la Figura 9-13). Ahora empieza a hacer que los enlaces parezcan botones. Capítulo 9:MEJORANDO LA NAVEGACIÓN DE SU SITIO www.it-ebooks.info 325 Tutorial: Creando un navegación Bar 5.Hacia .mainNav aestilo, agregue lo siguientebordeyrellenopropiedades: borde: 1px punteado #999; relleno: 7px 5px; Si obtiene una vista previa del archivo ahora, verá algunos problemas (#4 en la Figura 9-13): Los bordes se superponen y los cuadros no tienen el mismo ancho. Eso es porque el <un> La etiqueta es un elemento en línea, por lo que el ancho del cuadro es tan ancho como el texto del enlace. Además, el relleno superior e inferior no agrega altura a los cuadros en línea, por lo que los bordes se superponen. (Consulte la página 200 para obtener una discusión sobre los cuadros en línea). Puede solucionar estos problemas cambiando la forma en que un navegador muestra estos enlaces. 6.Agregarbloqueo de pantalla;hacia .mainNav aestilo. Has cambiado la visualización básica del <un>etiqueta para que actúe como un párrafo u otro elemento a nivel de bloque, con los enlaces perfectamente apilados uno encima del otro. El único problema ahora es que también se extienden por toda la longitud de la ventana del navegador, un poco demasiado anchas para un botón. Puede solucionar esto restringiendo el ancho de <ul>estilo de la etiqueta. 7.En la hoja de estilo interna, busque el archivo .mainNavestilo y agregarancho: 175px; lo: . navegación principal { margen: 0; relleno: 0; estilo de lista: ninguno; ancho: 175px; } Con el ancho de la lista ahora establecido en 175 píxeles, los enlaces aún se expanden, pero están limitados al ancho de su contenedor (el <ul>etiqueta). En muchos casos, tendrá una lista de enlaces dentro de algún elemento de diseño (como una barra lateral) que ya tiene un ancho establecido, por lo que podrá omitir este paso. (Aprenderá cómo agregar barras laterales en la Parte Tres). Ahora viene la parte divertida. 8.Agregue propiedades de fondo al archivo .mainNav aestilo, así: . navegación principal a { color: #000; tamaño de fuente: 11px; transformación de texto: mayúsculas; texto-decoración: ninguno; borde: 1px punteado #999; relleno: 7px 5px; bloqueo de pantalla; color de fondo: #E7E7E7; imagen de fondo: url(images/nav.png); repetición de fondo: sin repetición; posición de fondo: 0 2px; } 326 Css3: el manual perdido www.it-ebooks.info Estas líneas agregan un color de fondo gris a los enlaces y una imagen que no se repite en el borde izquierdo de cada botón (#5 en la Figura 9-13). Todavía tiene un par de cosas que Tutorial: Creando un navegación Bar corregir: el texto del enlace se superpone al icono y el borde entre cada botón tiene un grosor de 2 píxeles. (Técnicamente, los bordes todavía tienen un grosor de solo 1 píxel, pero los bordes inferior y superior de los enlaces contiguos crean una línea de 2 píxeles). CONSEJOUtilizando elfondopropiedad abreviada, puede escribir el código en el Paso 8 de esta manera:fondo: # E7E7E7 url(images/nav.png) sin repetición 0 2px;. 9.Retire el borde inferior y ajuste el relleno para el .mainNav aestilo, por lo que se ve así: . navegación principal a { color: #000; tamaño de fuente: 11px; transformación de texto: mayúsculas; texto-decoración: ninguno; borde: 1px punteado #999; borde inferior: ninguno; relleno: 7px 5px 7px 30px; bloqueo de pantalla; color de fondo: #E7E7E7; imagen de fondo: url(images/nav.png); repetición de fondo: sin repetición; posición de fondo: 0 2px; } El texto de cada enlace queda fuera del ícono y los bordes se ven muy bien... excepto por una cosa. El borde inferior del último enlace ya no está. (¡A veces CSS se siente como dos pasos adelante, un paso atrás!) Pero hay algunas formas de solucionar este problema. Una forma es crear un estilo de clase con elborde inferiorconfiguración y luego aplicarlo solo a ese último enlace. Pero sería más fácil aplicar un borde inferior al <ul>etiqueta que contiene la lista de enlaces. (Dado que no hay relleno en esa etiqueta, no hay espacio que separe la parte superior de <ul>desde la parte superior de ese primer enlace). 10Agregue un borde inferior al archivo .mainNavestilo para que se vea así: . navegación principal { margen: 0; relleno: 0; estilo de lista: ninguno; ancho: 175px; borde inferior: 1px punteado #999; } Ahí lo tiene: una barra de navegación básica que usa bordes, relleno, color de fondo e imágenes (#6 en la Figura 9-13). Capítulo 9:MEJORANDO LA NAVEGACIÓN DE SU SITIO www.it-ebooks.info 327 Tutorial: Creando un navegación Bar Adición de rollovers y creación de enlaces "Usted está aquí" Ahora es el momento de agregar algunas funciones interactivas y avanzadas a esta barra de navegación. Primero, agregará un efecto de rollover a los botones en su barra de navegación principal. De esa forma, los botones cambian para mostrar a su visitante en qué botón está a punto de hacer clic. También es considerado informar a su visitante en qué página de su sitio se encuentra. Usando la misma barra de navegación HTML que ya tiene, puede hacer que esta interactividad suceda automáticamente. Simplemente haga que el formato del botón cambie para que coincida con la sección de la página. Suena simple, pero requiere un poco de planificación y configuración, como verá en los siguientes pasos. El efecto de rollover es fácil, así que sáquelo del camino primero: 1.En elbarra_navegación.htmlarchivo, agregue el siguiente estilo al final de la hoja de estilo: . mainNav a: hover { font-weight: negrita; color de fondo: #B2F511; posición de fondo: 3px 50%; } Este estilo establece el estado de desplazamiento del botón. Pone el texto dentro del botón en negrita y cambia el color de fondo a un verde vibrante. Además, utiliza la técnica CSS Sprites que se analiza en la página 314. Se utiliza la misma imagen que en el paso 8 de la página 326; sin embargo, esa imagen en realidad contiene tres iconos diferentes (consulte la figura 9-14). En este caso, la imagen se centra dentro del botón y muestra el icono del medio en el archivo. Ahora, mover el mouse sobre cualquiera de los botones cambia instantáneamente su apariencia. (Abra la página en su navegador web y pruébelo usted mismo). Figura 9-14 Con algo de CSS básico, es fácil crear efectos de rollover interactivos para los botones de navegación. Incluso puede resaltar automáticamente la sección del sitio en la que se encuentra la página actual. Para acelerar la descarga de los gráficos de la barra de navegación, puede usar el método CSS Sprites descrito en la página 314. Básicamente, usa una imagen (marcada con un círculo en la parte superior derecha) y ajusta su posición para los diferentes estados de cada botón (fila inferior). 328 Css3: el manual perdido www.it-ebooks.info A continuación, haga que su barra de navegación sea más informativa resaltando el botón que coincide con la sección en la que se encuentra la página. Para hacerlo, debe identificar dos Tutorial: Creando un navegación Bar cosas en el HTML de la barra de navegación: la sección a la que pertenece una página y la sección a la que apunta cada enlace. Para este ejemplo, suponga que la página en la que está trabajando es la página de inicio. NotaComo alternativa, puede crear un estilo de clase que cambie la apariencia de un vínculo y aplicarlo al vínculo que representa la sección de la página. Para una página de horóscopo, aplicaría la clase al enlace Horóscopo en la barra de navegación: <a href="/horóscopos/" class="current">Horóscopos</a>. 2.Localice el <cuerpo>etiquetar y luego agregarclase="casa",al igual que: <body class="casa"> Ahora que sabe a qué sección pertenece esta página, puede usar un selector descendente para crear reglas CSS especiales que se aplican solo a las etiquetas en las páginas dentro de la sección Características. A continuación, debe identificar la sección a la que se aplica cada enlace, lo que logra agregando algunas clases a esos enlaces. 3.En el código HTML de la barra de navegación, ubique el enlace Inicio y luego agregueclase = "enlace de inicio"por lo que la etiqueta se ve así: <a href="/index.html"clase = "enlace de inicio">Inicio</a> Esta clase identifica este enlace y proporciona la información que necesita para crear un estilo que se aplique solo a ese enlace. También debe agregar una clase a los otros enlaces en la barra de navegación. 4.Repita el Paso 3 para cada uno de los otros enlaces usando las siguientes clases: FeatureLink, ExpertLink, QuizLink, ProjectLink,yHoróscopoEnlace. Ha terminado con la parte HTML de este ejercicio. Ahora es el momento de crear algo de CSS. Debido a que proporcionó clases para identificar los diferentes enlaces, es fácil crear un selector descendiente para resaltar el enlace Funciones. 5.Agregue otro estilo a la hoja de estilo de la página: . home .homeLink { color de fondo: #FFFFFF; posición de fondo: 97% 100%; relleno derecho: 15px; relleno-izquierda: 30px; fuente-peso: negrita; } Has visto todas estas propiedades antes. Nuevamente, está utilizando el método CSS Sprites para ajustar la posición de la imagen de fondo. Esta vez, la imagen se mueve hacia la derecha un 97 por ciento (es decir, el punto del 97 por ciento de la imagen coincide con el punto del 97 por ciento del botón), y la parte inferior de la imagen se coloca en la parte inferior de la botón. En otras palabras, muestra la Capítulo 9:MEJORANDO LA NAVEGACIÓN DE SU SITIO www.it-ebooks.info 329 Tutorial: Creando un navegación Bar en la parte inferior de la imagen (consulte la Figura 9-14). Consulte la página 249 para ver una discusión sobre cómo funcionan los valores porcentuales con imágenes de fondo. La parte más interesante es el selector—.inicio .homeLink.Es un selector muy específico que se aplica solo a un enlace con una clase deenlace de inicioeso estambiéndentro de una <cuerpo>etiqueta con una clase dehogar.Si cambia la clase de la página aprueba,por ejemplo, el enlace a la página de inicio ya no está resaltado. Obtenga una vista previa de la página en un navegador para ver el efecto: el enlace Inicio ahora tiene un fondo blanco y un icono de clip. Para hacer que esto funcione para los otros enlaces, necesitas expandir este selector un poco... OK, haz que sea unlote. 6.Edite el selector para el estilo que acaba de agregar, así: . casa .homelink, . función .featurelink, . experto .experlink, . cuestionario .quizlink, . proyecto .projectlink, . horoscopo .horoscopoLink { color de fondo: #FFFFFF; posición de fondo: 97% 100%; relleno derecho: 15px; relleno-izquierda: 30px; fuente-peso: negrita; } Sí, eso es mucho CSS. Pero su trabajo de configuración aquí tiene una gran recompensa. Este estilo ahora se aplica a todos los enlaces en la barra de navegación, pero solo bajo ciertas condiciones, que es exactamente como desea que se comporte. Cuando cambias elclase atributo del <cuerpo>etiquetar aprueba,el enlace al Cuestionario se resalta en lugar del enlace a la sección Características. Es hora de tomar su trabajo para una prueba de manejo. NotaEste selector extenso es un ejemplo del selector de grupo que se analiza en la página 62. 7.Cambiar elclaseatributo del <cuerpo>etiquetar acaracterísticacomo esto: <body class="característica"> Obtenga una vista previa de la página y ¡zas! El vínculo Función ahora está resaltado con un fondo blanco y un icono de clip (Figura 9-14). El secreto en este punto es simplemente cambiar la clase en el <cuerpo>etiqueta para indicar a qué sección del sitio pertenece una página. Para una página de horóscopo, cambie la clase aclase = "horóscopo"en el <cuerpo>etiqueta. 330 Css3: el manual perdido www.it-ebooks.info Nota¿Listo para llevar este diseño más allá? Intente agregar un efecto de rollover para complementar el estilo que creó en el paso 6. (Sugerencia: use el :flotarpseudo-clase como parte del selector como este: .prueba .quizLink: pasar el mouse.) También intente agregar un Tutorial: Creando un navegación Bar gráfico diferente para el enlace Inicio. (Usted tiene uncasa.pngarchivo en la carpeta de imágenes para usar). Para ver la versión completa de esta barra de navegación, consulte el archivo09_terminado→barra de navegación→nav_bar_vertical.html. De vertical a horizontal Suponga que desea una barra de navegación horizontal que se encuentra en la parte superior de la página. No hay problema: usted hizo la mayor parte del trabajo duro en la última parte de este tutorial. Simplemente modifique esa página un poco para distribuir los botones a lo largo de una sola línea. (Usarás elbarra_navegación. htmlarchivo que acaba de completar, por lo que si desea mantener la barra de navegación vertical, guarde una copia del archivo antes de continuar). 1.Asegúrese de haber completado todos los pasos anteriores para crear la barra de navegación vertical y tener el archivobarra_navegación.htmlabre en tu editor de texto. Ahora verá lo fácil que es cambiar la orientación de una barra de navegación. Comience por limpiar parte del trabajo que ya hizo. Debe eliminar el ancho que configuró para el <ul>etiqueta en el Paso 7 en la página 326. Ese ancho impedía que los botones de navegación abarcaran toda la longitud de la página. Pero desde el <ul>necesita extenderse mucho más para contener los botones uno al lado del otro, este ancho tiene que desaparecer. 2.Encuentra el .mainNavestilo y, a continuación, elimine elancho: 175px;declaración. Y ahora es el momento del gran secreto de las barras de navegación verticales: colocar los botones uno al lado del otro. 3.Agregue un nuevo estilo a su hoja de estilo (directamente debajo del archivo .mainNavel estilo es un buen lugar): . mainNav li { flotador izquierdo; ancho: 12em; } Este estilo se aplica al <li>etiqueta (los elementos de la lista que contienen cada enlace). La primera declaración hace flotar la etiqueta a la izquierda. De esta forma, cada <li>la etiqueta intenta ajustarse al lado derecho del anterior <li>etiqueta. Además, establecer el ancho de la <li>etiqueta define el ancho de cada botón. Aquí, un valor de 12 ems proporciona suficiente espacio para contener el nombre de enlace más largo: Horóscopos. Cuando trabaja con enlaces más largos, necesita aumentar este valor. Capítulo 9:MEJORANDO LA NAVEGACIÓN DE SU SITIO www.it-ebooks.info 331 Tutorial: Creando un navegación Bar Si obtiene una vista previa de la página ahora, verá que los conceptos básicos están completos. Todo lo que queda son algunas mejoras cosméticas (vea las áreas marcadas con círculos del n.° 1 en la figura 9-15). Primero, el borde inferior que creó en el Paso 10 en la página 327 se extiende por toda la longitud del <ul>etiqueta: más ancha que los propios botones de navegación. Aún más extraño, ese borde inferior ya no está en la parte inferior, ¡está encima de los botones de navegación! Además, dado que los botones se encuentran uno al lado del otro, sus bordes izquierdo y derecho se combinan para crear un borde de 2 píxeles entre cada botón. Ya solucionarás ese problema. Figura 9-15 Cambiar una pila vertical de botones de navegación al formato mucho más corto, uno al lado del otro, de una barra de navegación horizontal solo requiere un par de pasos. La mayor parte de su esfuerzo consiste en ajustar los estilos por consideraciones cosméticas como bordes y fondo colocación de imagen. 4.En el .mainNav aestilo, cambioborde inferior: ninguno;aborde izquierdo: ninguno;. Este cambio elimina el borde izquierdo para que los bordes no se doblen entre los botones y, al mismo tiempo, agrega un borde en la parte inferior de cada botón. Pero eso <ul>el borde inferior de la etiqueta todavía está encima de los botones, y ahora a la barra de navegación le falta un borde en el botón del extremo izquierdo (vea las áreas en círculos del #2 en la Figura 9-15). No hay problema, simplemente cambie el borde en el <ul>etiqueta. 5.Localiza el .mainNavestilo y cambioborde inferior: 1px punteado #999999; a borde izquierdo: 1px discontinuo #999999;. Si obtiene una vista previa de la página ahora, verá que el borde sobre los botones ya no está, pero aún no hay un borde izquierdo (#3 en la Figura 9-15). Estás presenciando una de las complicaciones de usar flotadores. Es decir, hacer flotar los elementos de la lista los elimina del flujo normal del documento, por lo que los navegadores web ya no los ven como parte de <ul> etiqueta, y el <ul>la etiqueta se reduce a casi ninguna altura; esa es la razón por la cual el borde inferior de la UL también apareció en la parte superior. (Si todo este escenario suena confuso, lo es. Es por eso que hay una sección completa del Capítulo 13 dedicada a tratar el problema; consulte la página 425 para obtener más detalles). 332 Css3: el manual perdido www.it-ebooks.info Afortunadamente, si bien el problema es complejo, la solución es simple. Agregue una propiedad CSS a la lista con viñetas. Tutorial: Creando un navegación Bar 6.Agregue una propiedad más al final del .mainNavestilo (los cambios están en negrita): . navegación principal { margen: 0; relleno: 0; estilo de lista: ninguno; borde izquierdo: 1px punteado #999999; desbordamiento: oculto; } Eldesbordamiento: ocultofuerza a la lista desordenada a expandirse. ¿Por qué funciona esta propiedad? Vea la cobertura detallada en la página 222. Finalmente, ese clip alineado con el borde derecho del botón “Usted está aquí” se ve divertido (#4 en la Figura 9-15). Cambiará su posición al borde izquierdo del botón. 7.Localice el estilo “Usted está aquí” que creó en el Paso 6 en la página 330.(Es el que tiene el selector loco y de largo aliento.) Cambie su posición de fondo de 97% 100%a3px 100%.El estilo ahora debería verse así: . casa .homelink, . función .featurelink, . experto .experlink, . cuestionario .quizlink, . proyecto .projectlink, . horoscopo .horoscopoLink { color de fondo: #FFFFFF; posición de fondo: 3px 100%; relleno derecho: 15px; relleno-izquierda: 30px; fuente-peso: negrita; } Obtenga una vista previa de la página y encontrará una barra de navegación horizontal completamente funcional (#5 en la Figura 9-15). Para ver la versión terminada, abra el archivo09_terminado→barra_navegación→ nav_bar_horizontal.html. NotaEs posible que desee centrar el texto dentro de cada botón. Si es así, debe hacer dos cosas: Agregaralineación de texto: centro;hacia .mainNav aestilo y ajustar ese estilorelleno izquierdohasta que el texto se vea absolutamente centrado. Capítulo 9:MEJORANDO LA NAVEGACIÓN DE SU SITIO www.it-ebooks.info 333 www.it-ebooks.info Capítulo 10 10 Transformaciones CSS, Transiciones, y animaciones F o la corta historia de la web, los diseñadores han tenido pocas opciones para agregar animación a sus sitios web. El GIF animado humilde y de aspecto ridículo proporciona una animación básica dentro de una imagen. El programa Flash de Adobe le permite crear animaciones complejas e incluso juegos y aplicaciones web, pero su curva de aprendizaje es empinada y no puede interactuar con el otro código HTML de su página, como las imágenes, los titulares y los párrafos que componen la mayoría de los sitios web. contenido. JavaScript le permite animar cualquier cosa en una página web, pero a costa de aprender un lenguaje de programación completo. Afortunadamente, CSS3 proporciona una forma de mover, transformar y animar cualquier elemento HTML en una página, sin recurrir a ninguna de esas otras tecnologías. Transforma CSS3 introduce varias propiedades que transforman un elemento de página web, ya sea girándolo, escalando, moviéndolo o distorsionándolo a lo largo de sus ejes horizontal y vertical (un proceso llamado sesgar). Puede usar una transformación, por ejemplo, para proporcionar una ligera inclinación (rotación) a una barra de navegación, o hacer que una imagen sea el doble de grande cuando un visitante pasa el mouse sobre ella. Incluso puedes combinar múltiples transformaciones para algunos efectos visuales salvajes. La propiedad CSS básica para lograr cualquiera de estos cambios es el CSStransformar propiedad. Utiliza esta propiedad al proporcionar el tipo de transformación que desea y un valor que indica cuánto transformar el elemento. Por ejemplo, para rotar un elemento, proporciona la palabra clavegirar,seguido del número de grados para girarlo: transformar: rotar (10 grados); 335 www.it-ebooks.info TRANSFORMAR La declaración anterior gira el elemento 10 grados en el sentido de las agujas del reloj. Las transformaciones CSS son relativamente nuevas y, por ese motivo, no son compatibles con todos los navegadores. Mientras que Internet Explorer 9, Safari, Chrome, Firefox y Opera admiten transformaciones 2D, Internet Explorer 8 y versiones anteriores no lo hacen. Además, debe usar prefijos de proveedores para todos los navegadores actuales. Entonces, para que el código anterior funcione, debe reescribirlo así: - transformación de webkit: rotar (10 grados); - transformación moz: rotar (10 grados); - o-transformar: rotar (10 grados); - ms-transform: rotar (10 grados); transformar: rotar (10 grados); NotaAnteriormente en este libro, ha visto otras propiedades de CSS3 que requieren prefijos de proveedores (-webkitlinear- gradiente),Por ejemplo. Hasta ahora, no ha encontrado el prefijo -ms-, que significa Microsoft y está dirigido a Internet Explorer. Internet Explorer 9 no comprende muchas propiedades de CSS3, por lo que normalmente no necesita prefijos de proveedores para ese navegador. Internet Explorer 10 (que puede estar disponible cuando lea esto) no usará prefijos de proveedores para la mayoría de las propiedades de CSS3 que se analizan en este libro. Sin embargo, IE 9haceentender eltransformarpropiedad, por lo que necesita usar el -ms-transformarproperty para que cualquier transformación funcione en ese navegador. Una característica extraña de las transformaciones CSS es que no afectan a otros elementos a su alrededor. En otras palabras, si rota un elemento 45 grados, en realidad puede superponer elementos arriba, abajo o al costado. Los navegadores web comienzan reservando el espacio que normalmente ocuparía el elemento (antes de la transformación), y luego transforman el elemento (girarlo, agrandarlo, moverlo o sesgarlo). Este proceso es evidente cuando aumenta el tamaño de un elemento mediante una transformación escalafunción (página 338). Si aumenta el tamaño de un elemento dos veces, el navegador amplía el elemento transformado pero no quita nada del contenido que lo rodea, lo que generalmente provoca que partes de la página se superpongan (Figura 10-1). En otras palabras, el navegador web conserva todas las demás partes de la página tal como aparecerían si el elemento no se ampliara. Figura 10-1 Sal de mi camino... o no. Los elementos transformados son prácticamente ignorados por otros elementos a su alrededor. agrandando el<div>aquí (el cuadrado grande) simplemente hace que se superponga con el titular que está arriba y abajo. El cuadro en el medio, con el contorno punteado, representa el div antes de que se escalara en dos. 336 Css3: el manual perdido www.it-ebooks.info Girar EltransformarpropiedadgirarLa función es fácil de entender: le das un valor de grado de 0 a TRANSFORMAR 360, y el navegador rota ese elemento el número especificado de grados alrededor de un círculo (ver Figura 10-2). Para especificar un valor de grado, utilice un número seguido de gradoPor ejemplo, para rotar un elemento 180 grados, agregue esta declaración: transformar: rotar (180 grados); NotaPara ahorrar espacio, estos ejemplos no incluyen todos los prefijos de proveedores aquí, pero cuando coloca este código en una hoja de estilo, debe agregar el -webkit-transform, -moz-transform, -o-transform,y - ms-transformarpropiedades también. Incluso puede usar números negativos para rotar el elemento en sentido contrario a las agujas del reloj. Por ejemplo, el elemento en la parte superior central de la Figura 10-2 se gira 45 grados en sentido antihorario de esta manera: transformar: rotar (-45 grados); El valor0 gradosno proporciona rotación, mientras que360 gradoses una rotación completa, y 720 gradosson dos rotaciones completas. Por supuesto, mirar un elemento que se ha girado una, dos o tres veces se verá como un elemento que no se ha girado en absoluto (arriba a la izquierda y abajo a la derecha en la Figura 10-2), por lo que está probablemente se pregunte por qué alguna vez usó un valor de 360 o superior. CSS3 proporciona un mecanismo para animar cambios en las propiedades de CSS. Entonces, por ejemplo, puede hacer que un botón gire cuatro veces cuando un visitante pasa el mouse sobre él comenzando con una rotación inicial de0 grados y añadiendo un:flotarestilo para ese botón que tiene una rotación de1440 grados.Aprenderá a hacer esto en la página 339. Figura 10-2 Dé vuelta a su página en su cabeza. Con el girarfunción puede hacer que cualquier elemento de la página (div, botón, banner, foto o pie de página) gire ligeramente o completamente de forma salvaje. Como siempre, tenga en cuenta a su audiencia y asegúrese de que su página siga siendo legible cada vez que aplique cualquier tipo de transformación CSS. Capítulo 10:TRANSFORMACIONES, TRANSICIONES Y ANIMACIONES DE CSS www.it-ebooks.info 337 TRANSFORMAR Escala También puede cambiar el tamaño de un elemento, haciéndolo más grande o más pequeño usando elescala función (ver Figura 10-3). Por ejemplo, para hacer que un elemento sea el doble de grande, agrega esta declaración: transformar: escala(2); El número que proporcione entre paréntesis es un factor de escala, un número que se multiplica por el tamaño actual del elemento. Por ejemplo,1no hay escala, .5es la mitad del tamaño actual, mientras que4es cuatro veces el tamaño actual. En otras palabras, un número entre 0 y 1 reduce el tamaño de un elemento, mientras que un número mayor que 1 lo hace más grande (un valor de 0 en realidad hace que el elemento sea invisible en la página). Figura 10-3 Utilizar elescalafunción para aumentar el tamaño de cualquier elemento de la página. Tenga en cuenta que cuando amplía un elemento, el navegador no quita otros elementos de la página. De hecho, siempre que aumente la escala de un elemento, lo más probable es que se superponga a otros elementos (el cuadro en la parte superior derecha, por ejemplo). Puede leer más sobre cómo se transforman los navegadores elementos junto con otro contenido de la página en la página 335. El elemento y todo lo que contiene está escalado por este número. Por ejemplo, si escalas un <div> etiquete por un factor de dos, no solo ese div sería el doble de ancho y alto, sino que también el texto dentro sería el doble de grande, al igual que cualquier imagen dentro de él. Por supuesto, es posible que se pregunte por qué alguna vez usaría esto. Después de todo, podría aumentar o disminuir fácilmente el ancho y la altura del elemento, usando el CSS anchoyaltura propiedades, y puede escalar el tamaño del texto hacia arriba o hacia abajo usando eltamaño de fuentepropiedad. El uso más común de la escala es realizar un cambio visual en un elemento de forma dinámica en la página. Por ejemplo, pasar el mouse sobre un botón puede hacer que ese botón sea momentáneamente más grande. Podrías lograr este efecto con:flotarestado. 338 Css3: el manual perdido www.it-ebooks.info Traducido del inglés al español - www.onlinedoctranslator.com Por ejemplo, supongamos que tiene un enlace en una página con la extensión .botónclase aplicada. Puede crear un estilo simple como este para formatear ese botón: TRANSFORMAR . botón { fuente: .9em Arial, Helvetica, sans-serif; borde-radio: .5em; color de fondo: rgb(34,255,23); borde: 1px sólido rgba (0,0,0, .5); relleno: 0,5 em; } Para enfatizar realmente ese botón, puede hacer que se haga un poco más grande cuando un visitante pasa el mouse sobre él, así: . botón: flotar { - transformación de webkit: escala (1.2); - transformación moz: escala (1.2); - o-transformada: escala (1.2); - transformada ms: escala (1.2); transformar: escala (1.2); } Cuando el visitante quita el mouse del botón, la transformación se elimina y el botón vuelve a su tamaño normal. En la página 345, incluso aprenderá cómo puede animar este cambio de tamaño usando transiciones CSS. CONSEJOPuedes usar una idea similar para las imágenes. Muestre una galería de imágenes pequeñas y luego agregue un:flotar estilo para que cuando un visitante pase el mouse sobre la imagen, se haga más grande. Para que esto se vea bien, debe insertar la versión final ampliada de la imagen dentro del HTML, pero establecer su tamaño más pequeño usando CSS o < imagen> etiquetasanchoyalturapropiedades. Incluso puede escalar las dimensiones horizontales y verticales por separado. Para hacer esto, proporcione dos valores separados por una coma dentro de los paréntesis; el primer número es la escala horizontal y el segundo es la escala vertical. Por ejemplo, para hacer que un elemento sea la mitad de ancho pero el doble de alto, use esta declaración: transformar: escala(.5,2); Puede ver el efecto en la parte inferior izquierda de la Figura 10-3. CSS3 también proporciona funciones separadas para la escala horizontal y vertical:escalaX escalas a lo largo del eje horizontal, mientras queescalaYescalas verticalmente. Por ejemplo, para hacer un elemento el doble de alto sin cambiar su ancho, escribirías esto: transformar: escalaY(2); NotaNuevamente, para ahorrar espacio, este ejemplo muestra solo la versión sin prefijo de la propiedad de transformación. Para que esto funcione en todos los navegadores, deberá agregar el prefijo adecuado:kit web, -moz,etcétera. Capítulo 10:TRANSFORMACIONES, TRANSICIONES Y ANIMACIONES DE CSS www.it-ebooks.info 339 TRANSFORMAR Pero para hacer un elemento tres veces y media más ancho, pero no más alto ni más bajo, usaría: transformar: escalaX(3.5); Hay otro truco visual que ofrece el escalado: la capacidad de voltear un elemento al revés y al revés. Nadie está seguro de qué rama de las matemáticas usó el W3C para crear este sistema, pero si usa un número negativo conescala,en realidad le das la vuelta a un elemento. Por ejemplo, aquí se explica cómo voltear un elemento al revés y de izquierda a derecha: transformar: escala (-1); Esto produce la imagen representada en la Figura 10-4, izquierda. También puede voltear el elemento en un solo eje. En la imagen de lucha de la figura 10-4, la imagen se voltea solo sobre su eje horizontal. Voltear el elemento a lo largo de su eje vertical produce la imagen del medio: transformar: escala (-1,1); Produce el efecto de un espejo sostenido al costado del elemento, o como si hubiera volteado el elemento y estuviera mirando a través de su parte posterior. ¡Qué divertido! Figura 10-4 Las formas en que puede usar CSS para confundir y enfurecer a los visitantes de su sitio web no tienen fin. El cuadro de la izquierda se voltea sobre el eje horizontal, el cuadro en el el centro se voltea sobre el eje vertical, y el de la derecha se voltea en ambos sentidos. Por supuesto, si desea crear un sitio de homenaje a Leonardo DaVinci (www . mos.org/sln/ Leonardo/ LeonardoRighttoLeft.html), ¡crear una imagen especular de todo el texto en una página puede ser justo lo que necesitas! Traducir EltransformarpropiedadtraducirLa función simplemente mueve un elemento desde su posición actual una cantidad determinada hacia la izquierda o hacia la derecha y hacia arriba o hacia abajo. Por sí mismo, realmente no es tan útil. Como leyó en la página 335, cuando un navegador web transforma un elemento, no reorganiza la página; presenta la página como si el elemento no tuviera transformación. En consecuencia, cuando mueve un div u otra etiqueta, usando eltraducir función, el navegador deja un espacio vacío donde normalmente aparecería la etiqueta, 340 Css3: el manual perdido www.it-ebooks.info y luego dibuja el elemento en su nueva posición (ver Figura 10-5). Si simplemente quiere colocar un elemento en la página, puede usar el posicionamiento absoluto o relativo como se TRANSFORMAR describe en el Capítulo 15. Figura 10-5 Eltraducirfunción mueve un elemento un número determinado de píxeles, ems o un porcentaje de su lugar normal en una página. Esto a menudo deja un espacio vacío: el área en blanco entre los dos titulares es donde se destaca el<div> normalmente aparecería la etiqueta. Sin embargo,traducires útil cuando desea realizar movimientos sutiles en respuesta a un desplazamiento o clic. Por ejemplo, en muchos diseños de interfaz de usuario, cuando hace clic en un botón, se mueve ligeramente hacia abajo y hacia la izquierda, simulando el aspecto de un botón 3D real que se presiona en un teclado. Puede simular este efecto usando el traducirfunción y el:activoestado de un enlace: . botón: activo { - webkit-traducir(1px,2px); - moz-traducir(1px,2px); - o-traducir(1px,2px); - ms-translate(1px,2px); traducir(1px,2px); } EltraducirLa función toma dos valores: el primero especifica el movimiento horizontal y el segundo el movimiento vertical. En este ejemplo, al hacer clic en un elemento con el . botónclass mueve ese elemento un píxel a la derecha y dos píxeles hacia abajo. Use un número negativo para el primer valor para mover el elemento a la izquierda; use un número negativo para el segundo valor para mover el elemento hacia arriba. Tampoco está limitado a los valores de píxeles. Cualquier valor de longitud de CSS válido:px, em, %,y así sucesivamente funcionará. CSS3 también proporciona dos funciones adicionales para mover un elemento solo hacia la izquierda o hacia la derecha:traducirX—y arriba o abajo—traducirY.Por ejemplo, para mover un elemento hacia arriba 0,5 ems, utilice eltraducirYfuncionar así: transformar: traducirY(-.5em); Capítulo 10:TRANSFORMACIONES, TRANSICIONES Y ANIMACIONES DE CSS www.it-ebooks.info 341 TRANSFORMAR La verdadera diversión con la función de traducción es cuando se usa con transiciones CSS. Con la transición CSS, puede animar el movimiento del elemento para que viaje por la pantalla. Aprenderá cómo hacerlo en la página 345. Sesgar Sesgar un elemento le permite inclinarlo sobre sus ejes horizontal y vertical: esto puede darle a un elemento una sensación tridimensional (vea la Figura 10-6). Por ejemplo, para inclinar todas las líneas verticales de modo que se inclinen hacia la izquierda 45 grados (como en la primera imagen de la Figura 10-6), escribiría este código: transformar: sesgar (45 grados, 0); Para hacer lo mismo a lo largo del eje Y (imagen del medio en la Figura 10-6), escribiría esto: transformar: sesgar (0,45 grados); Puede sesgar un elemento en ambos ejes a la vez. Por ejemplo, aquí está el código usado para producir la tercera imagen en la Figura 10-6: transformar: sesgar (25 grados, 10 grados); El primer valor es un valor de grado de0 gradosa360 grados,procediendo en sentido contrario a las agujas del reloj desde la parte superior del elemento. Por ejemplo, en la primera imagen de la Figura 10-6, los 45 grados están representados por una línea dibujada desde el centro del elemento y rotada 45 grados en sentido antihorario (abajo a la izquierda). Figura 10-6 La función de sesgo es una forma de simular un aspecto 3D. Sin embargo, como verá en el cuadro de la página 345, CSS3 en realidad ofrece una mejor manera de simular tres dimensiones, con transformaciones 3D. NotaRecuerde agregar versiones prefijadas del navegador deltransformarpropiedad a su CSS terminado: - transformación de webkit, -transformación de moz,etcétera. 342 Css3: el manual perdido www.it-ebooks.info El segundo valor es también un valor de grado de0 gradosa360 gradosPero éste procede en el sentido de las agujas del reloj desde la derecha del elemento. Entonces, la imagen del medio en la Figura 10-6 muestra una TRANSFORMAR inclinación de 45 grados de todas las líneas horizontales. CONSEJOVisitahttp://westciv.com/tools/transforms/index.htmlpara jugar con una herramienta en línea para visualizar transformaciones CSS. Al igual que con traducir y escalar, CSS3 ofrece funciones separadas para los ejes x e y: sesgadoXysesgado. NotaCSS3 proporciona otro método de transformación llamadomatriz. Una matriz es una matriz de números, como se usa en álgebra avanzada. Son bastante alucinantes y nada intuitivos a menos que seas Stephen Hawking. Pero si quieres saber cómo funcionan, visitahttp://dev.opera.com/articles/view/understanding-the-css-transformsmatrix/para una explicación lo más lúcida posible. Transformaciones Múltiples No estás limitado a una sola transformación. Puede escalar una imagen y sesgarla; gírelo y tradúzcalo; o use cualquiera de las cuatro funciones de transformación diferentes simultáneamente. Simplemente agregue funciones adicionales altransformarpropiedad, cada uno separado por un espacio. Por ejemplo, así es como puede rotar un elemento 45 grados y agrandarlo al doble de su tamaño normal: transformar: rotar (45 grados) escala (2); Aquí hay un ejemplo con las cuatro transformaciones aplicadas al mismo tiempo: transformar: sesgar (45 grados, 0 grados) escala (.5) traducir (400 px, 500 px) rotar (90 grados); El orden en el que coloca las funciones de transformación es el orden en el que el navegador aplica estos efectos. Por ejemplo, en el segundo ejemplo, el elemento primero se sesga, luego se escala, luego se traslada y finalmente se gira. El orden realmente no importa a menos que estés usandotraducir.Desdetraducirrealmente mueve el elemento, si lo coloca antes de rotar, por ejemplo, el navegador primero mueve el elemento y luego lo rota. Dado que el elemento se movió primero, el punto alrededor del cual gira ha cambiado. Por otro lado, si lo rota primero, entonces está moviendo el elemento rotado una cierta cantidad desde su centro (que ahora está en una nueva ubicación). origen Normalmente, cuando aplica una transformación a un elemento, el navegador web utiliza el centro del elemento como punto de transformación. Por ejemplo, cuando rota un elemento, el navegador lo rota alrededor de su punto central (Figura 10-7, izquierda). Sin embargo, CSS3 te permite cambiar ese punto de transformación, usando eltransformar-origenpropiedad. Funciona igual que elposición de fondopropiedad (página 246); puede proporcionar valores de palabras clave, valores absolutos en píxeles y valores relativos en ems y porcentajes. Capítulo 10:TRANSFORMACIONES, TRANSICIONES Y ANIMACIONES DE CSS www.it-ebooks.info 343 TRANSFORMAR Por ejemplo, para rotar un div alrededor de su punto superior izquierdo (Figura 10-7, centro), puede usar el izquierdayarribapalabras clave, como esta: transformar-origen: arriba a la izquierda; También puede utilizar valores de píxel: transformar-origen: 0 0; O porcentajes: transformar-origen: 0% 0%; Asimismo, para rotar un elemento alrededor de su esquina inferior derecha (Figura 10-7, derecha), use elbienyabajopalabras clave: transformar-origen: abajo a la derecha; Que también es equivalente a: transformar-origen: 100% 100%; Cuando se utilizan valores de píxel, em o porcentaje, el primer número es la posición horizontal y el segundo es la posición vertical. NotaEltransformar-origenLa propiedad no tiene efecto en los elementos que solo se mueven usando el traducirfunción. Figura 10-7 Configuración de latransformarorigenpropiedad cambia el punto en el elemento donde se aplica la transformación. El origen predeterminado es la mitad del elemento (izquierda), pero puede cambiarlo a la parte superior izquierda (centro) o a la parte inferior derecha (derecha). Los cuadrados punteados representan el elemento si no se hubiera girado (su posición habitual en la página). 344 Css3: el manual perdido www.it-ebooks.info TRANSICIONES CLÍNICA DE USUARIOS ELÉCTRICOS Transformaciones 3D CSS3 también ofrece un tipo de transformación mucho más complejo. Las muestra un cubo giratorio, que puede cambiar en un transformaciones 3D le permiten simular un espacio tridimensional en la conjunto giratorio de fichas. pantalla plana de un monitor, tableta o teléfono. • Otra gran demostración de Apple, la galería de imágenes Horizontal Para obtener una breve introducción a las transformaciones 3D, visite 3D (ht tps: //desarrollador. apple.com/safar idemos/ showcase/ http://codificación. smashingmagazine.com/2012/01/06/aventuras-en- gallery/) le permite hojear, como un carrusel, a través de una serie la-tercera-dimensión-css-3-d-transforms/yhttp://blogs.msdn. com/b/ie/ de fotos. archive/2012/02/02/css3-3d-transforms-in-ie10. aspx. Para ver algunos • Pila de nieve: use las teclas de flecha izquierda y derecha para enviar excelentes ejemplos de transformaciones 3D en acción, visite estos una galería interminable de fotos tomadas por:http://www.satine. sitios: org/research/webkit/snowleopard/snowstack.html. • Uno de los primeros ejemplos del poder de las transformaciones 3D, • El sitio web de BeerCamp 2011 (http://2011.beercamp.com) la página Morphing Power Cubes de Apple (www.webki t. org/ blog-files/3d-transforms/morphing-cubes.html) proporciona una forma innovadora de navegar moviendo las páginas "hacia adelante" y "hacia atrás" a través del espacio. Transiciones Si bien las transformaciones pueden ser divertidas (especialmente lasgirarfunción), realmente dan vida a su página cuando se combinan con una transición CSS3. Atransiciónes simplemente una animación de un conjunto de propiedades CSS a otro conjunto durante un período de tiempo específico. Por ejemplo, puede hacer que un banner gire 360 grados en el transcurso de dos segundos. Para que una transición funcione, necesita algunas cosas en su lugar: • Dos estilos.Un estilo representa el aspecto inicial del elemento, por ejemplo, un botón de navegación rojo, mientras que el segundo estilo es el aspecto final, un botón de navegación azul. El navegador web se encargará del proceso de animar el cambio entre los dos estilos (cambiar el botón de rojo a azul, por ejemplo). • Eltransiciónpropiedad.CSS3 agrega eltransiciónpropiedad: la salsa secreta que hace posible la animación. En general, se aplica eltransición propiedad al estilo original, el estilo que define el aspecto de un elemento antes de que comience la animación. • Un gatillo.El disparador es la acción que provoca el cambio entre los dos estilos. Con CSS, puede usar varias pseudoclases para activar una animación. El más común es el:flotarpseudo-clase. Con él, puede animar el cambio entre la apariencia normal de un elemento y cómo se ve cuando un visitante pasa el mouse sobre él. Verás un ejemplo de eso en solo un minuto. Además, Capítulo 10:TRANSFORMACIONES, TRANSICIONES Y ANIMACIONES DE CSS www.it-ebooks.info 345 tienes :activo (cuando se hace clic con el mouse en un elemento), :objetivo (cuando un elemento TRANSICIONES es el destino del enlace), y:enfocar (cuando se tabula un enlace, o se hace clic en un campo de formulario o se tabula). Más allá de eso, puede usar JavaScript para cambiar dinámicamente el estilo de cualquier etiqueta (consulte el cuadro en la página 351). Cuando el activador ya no se aplica, cuando el visitante quita el mouse de un botón de navegación, por ejemplo, el navegador devuelve la etiqueta a su estilo anterior. y anima todo el proceso. En otras palabras, solo necesita establecer una transición a un elemento una vez, y el navegador se encarga de animar de un estilo a otro y volver al estilo original. Un navegador web no puede animar todas las propiedades de CSS, pero todavía tiene una larga lista de propiedades para elegir. Además derotar, escalar, traducir, ysesgar transformaciones sobre las que acaba de leer, también puede animarcolor, color de fondo, color de borde, ancho de borde, tamaño de fuente, alto, ancho, espacio entre letras, alto de línea, margen, opacidad, relleno, espacio entre palabras;las propiedades de posicionamiento —arriba, izquierda, derecha,yabajo-del que aprenderá en el Capítulo 15; y muchas otras propiedades. Puede encontrar una lista completa enwww.w3.org/TR/css3-transitions/ #animatable-properties. NotaLas transiciones CSS3 funcionan en la mayoría de los navegadores. Desafortunadamente, cuando se trata de Internet Explorer, solo la versión 10 y posteriores comprenden las transiciones CSS. Debido a esto, es mejor usar las transiciones simplemente como una forma de agregar emoción visual. En general, esto está bien: IE 9 y versiones anteriores, en la mayoría de los casos, podrán cambiar entre dos estilos (por ejemplo, mostrar unflotarestilo) sin animar ese cambio. Agregar una transición El corazón de las transiciones CSS son cuatro propiedades que controlan qué propiedades animar, cuánto dura la animación, el tipo de animación utilizada y un retraso opcional antes de que comience la animación. Aquí hay un ejemplo simple. Supongamos que desea que el color de fondo de un botón de navegación cambie de naranja a azul cuando un visitante pasa el mouse sobre él. Primero, comienza con los dos estilos necesarios para cambiar entre estos dos colores. Por ejemplo, puede aplicar una clase de .Botón de navegaciónal enlace y luego crea dos estilos, así: . botón de navegación { color de fondo: naranja; } . botón de navegación: hover { color de fondo: azul; } Estos estilos funcionarán en cualquier navegador; Al pasar el cursor sobre el botón de navegación, el fondo cambiará de naranja a azul. Sin embargo, el cambio es instantáneo. Para hacer que el color se anime durante un segundo, agregue dos nuevas propiedades al archivo .Botón de navegación estilo, así: 346 Css3: el manual perdido www.it-ebooks.info . botón de navegación { color de fondo: naranja; propiedad de TRANSICIONES transición: color de fondo; transiciónduración: 1s; } . botón de navegación: hover { color de fondo: azul; } La primera propiedad—propiedad de transición—especifica qué propiedades animar. Puede especificar una sola propiedad (como en el ejemplo anterior), use la palabra clavetodo para animar todas las propiedades CSS que cambian, o use una lista separada por comas para especificar más de una (pero no todas) propiedades. Por ejemplo, supongamos que crea un:flotarestilo para que el color del texto, el color de fondo y el color del borde cambien. Enumeras las tres propiedades de esta manera: propiedad de transición: color, color de fondo, color de borde; O, para simplificar, utilice eltodopalabra clave como esta: propiedad de transición: todos; En la mayoría de los casos, usandotodofunciona bien, ya que cada cambio de CSS está animado, lo que crea un efecto visual agradable. Para especificar cuánto tarda en completarse la animación, utilice elduración de la transición propiedad. Esta propiedad toma un valor en segundos o milisegundos (milésimas de segundo). Por ejemplo, para que una transición tarde medio segundo en completarse, puede utilizar cualquiera de las siguientes opciones: duración de la transición: 0,5 s; O: transición-duración: 500ms; Incluso es posible establecer tiempos separados para cada propiedad animada. Por ejemplo, cuando un visitante pasa el mouse sobre un botón, es posible que desee que el color del texto cambie rápidamente, que el color de fondo cambie un poco más lentamente y que el color del borde cambie muy lentamente. Para hacerlo, necesita listar las propiedades animadas, usandopropiedad de transicióny luego enumere los tiempos, usandoduración de la transición,como esto: propiedad de transición: color, color de fondo, color de borde; duración de la transición: 0,25 s, 0,75 s, 2 s; El orden en que enumera las horas debe coincidir con el orden en que enumera las propiedades. Entonces, en el ejemplo anterior, .25sva con elcolorpropiedad, .años 75con el color de fondopropiedad, y la2scon elcolor del bordepropiedad. Si mueve las propiedades, su tiempo cambia. Capítulo 10:TRANSFORMACIONES, TRANSICIONES Y ANIMACIONES DE CSS www.it-ebooks.info 347 TRANSICIONES Desafortunadamente, como muchas propiedades de CSS3, las transiciones requieren prefijos de proveedores para funcionar. En otras palabras, el .Botón de navegaciónEl ejemplo anterior no funcionará en la mayoría de los navegadores hasta que agregue los prefijos de proveedores adecuados, por lo que debe volver a escribir ese estilo de esta manera: . botón de navegación { color de fondo: naranja; - propiedad de transición de webkit: color de fondo; - moz-transition-property: color de fondo; - o-transición-propiedad: color de fondo; propiedad de transición: color de fondo; - webkit-transition-duration: 1s; - moz-transición-duración: 1s; - o-transition-duration: 1s; transición-duración: 1s; } No necesitas un -EMel prefijo del proveedor para Internet Explorer desde IE 9 y versiones anteriores no entienden las transiciones, e IE 10 entiende las versiones sin prefijo de las propiedades de transición. NotaA partir de este escrito, las versiones actuales de Firefox y Opera ya no requieren prefijos de proveedores para las transiciones. Pero para asegurarse de que sus animaciones aún funcionen en versiones anteriores de esos navegadores, es mejor seguir usando el -mozy -oprefijos de proveedores por el momento. Tiempo de transición Para tener una transición animada que funcione, solo necesita configurarpropiedad de transición yduración de la transición.Sin embargo, puede controlar la velocidad de la animación usando elfunción de temporización de transiciónpropiedad. Esta propiedad puede resultar un poco confusa: no controla el tiempo que tarda la animación (eso es lo queduración de la transiciónpropiedad es para). En cambio, controla la velocidad.durantela animación. Por ejemplo, puede comenzar la animación lentamente y luego completarla rápidamente, creando un efecto donde el color de fondo cambia casi imperceptiblemente al principio y luego completa rápidamente su cambio de color. Elfunción de temporización de transiciónLa propiedad puede tomar una de cinco palabras clave: lineal, facilidad, facilidad de entrada, facilidad de salida,yfacilidad de entrada y salida.Si no especifica una función de temporización, el navegador utiliza elfacilidadmétodo, que comienza la animación lentamente, se acelera en el medio y se ralentiza al final, proporcionando un cambio más orgánico. El linealLa opción proporciona un cambio constante a lo largo de toda la duración de la animación. Ninguna opción es realmente mejor que la otra, solo brindan diferentes apariencias, así que pruébalas para ver cuál te gusta más. 348 Css3: el manual perdido www.it-ebooks.info Para usarlo, simplemente agregue elfunción de temporización de transiciónpropiedad y el método que le gustaría usar: TRANSICIONES función de temporización de transición: facilidad de entrada y salida; Por supuesto, al igual que con todas estas propiedades de transición, también debe agregar prefijos de proveedores. Entonces, para que esta línea de código funcione en tantos navegadores como sea posible, deberá reescribirla como: - webkit-transition-timing-function: facilidad de entrada y salida; - moz-transition-timing-function: facilidad de entrada y salida; - o-transition-timing-function: facilidad de entrada y salida; función de temporización de transición: facilidad de entrada y salida; NotaEs mucho más fácil ver las diferentes funciones de temporización que describirlas. Visitawww.el-arte-de-la-web . com/css/timing-function/para ver una excelente comparación lado a lado de los cinco métodos de cronometraje. También puede usar lo que se llama uncubic-beziervalor para elfunción de temporización de transiciónpropiedad. La curva de Bezier traza el progreso de la animación a lo largo del tiempo (consulte la Figura 10-8). Si ha utilizado un programa de dibujo como Adobe Illustrator, probablemente esté familiarizado con las curvas de Bezier. Al ajustar dos puntos de control, puede controlar cómo se curva la línea: cuanto más inclinada sea la línea, más rápida será la animación, cuanto más plana sea la línea, más lenta. Por ejemplo, la curva de Bézier que se muestra en la figura 10-8 comienza empinada (la animación comienza rápidamente), luego se aplana en el medio (la animación se ralentiza) y luego vuelve a ser empinada (la animación avanza rápidamente hasta su estado final). Para crear este tipo de animación, agregue esta línea de código: función de temporización de transición: cubic-bezier (.20, .96, .74, .07); Las curvas cúbicas de Bezier no son algo que se te pueda ocurrir de la cabeza. Es mejor que utilice una de las muchas herramientas en línea para crear y probar diferentes funciones de temporización. La herramienta César de Mathew Lein es una de las mejores:http:// matthewlein.com/ceaser/. Al igual que con elduración de la transiciónpropiedad, puede aplicar diferentes tiempos a diferentes propiedades. Capítulo 10:TRANSFORMACIONES, TRANSICIONES Y ANIMACIONES DE CSS www.it-ebooks.info 349 TRANSICIONES Figura 10-8 La creación de una curva Bézier cúbica le permite crear una amplia gama de funciones de temporización interesantes para sus animaciones. Puede hacer que comiencen muy lentamente y terminen rápidamente, o viceversa. La herramienta César en línea hace que la creación de curvas Bézier cúbicas sea muy fácil: simplemente tome el controlador en el punto inferior izquierdo y arrastre para cambiar la pendiente de la línea, y luego arrastre el punto de control en el punto superior derecho. Cuanto más inclinada sea la línea, más rápido será el progreso de la animación en esa etapa. En este ejemplo, la línea comienza relativamente plana, lo que significa que la animación se moverá lentamente al principio, luego aumentará abruptamente al final, lo que significa que la animación progresará rápidamente hasta el final al final de la duración de la transición. 350 Css3: el manual perdido www.it-ebooks.info TRANSICIONES CLÍNICA DE USUARIOS ELÉCTRICOS Uso de JavaScript para desencadenar transiciones Las transiciones CSS3 son animaciones fáciles de usar integradas directamente en los las transiciones funcionan cada vez que cambia una propiedad CSS, incluso si navegadores web (al menos en la mayoría de los navegadores web). Puede crear efectos cambia la propiedad CSS usando JavaScript. complejos simplemente definiendo un conjunto de propiedades CSS para comenzar y JavaScript es un lenguaje de programación que le permite agregar un conjunto de propiedades CSS para terminar, y luego dejar de lado y dejar que el interactividad a las páginas web, crear interfaces de usuario dinámicas y navegador web se encargue del resto. muchas otras cosas. Pero también puede usar JavaScript para Desafortunadamente, está limitado a solo un puñado de selectores de CSS para simplemente agregar o eliminar una clase de un elemento, o cambiar activar esas transiciones. Más comúnmente, usará el:flotarpseudo-clase para cualquier propiedad de CSS que desee. Con JavaScript, puede agregar hacer que un elemento cambie cuando se pasa el mouse sobre él. También una clase a una imagen cuando un visitante hace clic en el enlace puede utilizar el:enfocarpseudo-clase en un elemento de formulario para "Mostrar imagen más grande". Esa nueva clase simplemente escala la animarlo cuando un usuario hace clic dentro de él (por ejemplo, puede hacer imagen (usando elescala transformación discutida en la página 367). Al que un área de texto de varias líneas crezca en altura cuando se enfoca, luego agregar una transición a la imagen, tendrá una animación instantánea. se reduce a unas pocas líneas cuando un visitante hace clic fuera de él) ). JavaScript es un gran tema digno de su propio libro... da la casualidad de que hayJavaScript y jQuery: El manual perdidode Por ejemplo, CSS no tiene un:hacer clicpseudo-clase, por lo que si desea este autor que vale la pena leer. Pero si desea comenzar con la activar una transición cuando alguien hace clic en un elemento, no forma más sencilla de usar las transiciones CSS activadas por puede hacerlo con CSS. Del mismo modo, si desea pasar el cursor sobre JavaScript, lea este breve tutorial:www.netmagazine.com/ un elemento pero desencadenar una animación en otro elemento, no tutorials/getmore-out-your-css-transitions-jquery. tendrá suerte... si solo está utilizando CSS. Pero CSS Retrasar el inicio de una transición Finalmente, puede evitar que una transición se anime de inmediato con eltransiciónretraso propiedad. Por ejemplo, si desea esperar medio segundo antes de que comience la animación, puede agregar este código: transición-retraso: .5s; Y, por supuesto, esta propiedad requiere prefijos de proveedores, por lo que para que este código funcione en la mayoría de los navegadores, debe escribir: - webkit-transition-delay: .5s; - moz-transición-retraso: .5s; - o-transition-delay: .5s; transición-retraso: .5s; Capítulo 10:TRANSFORMACIONES, TRANSICIONES Y ANIMACIONES DE CSS www.it-ebooks.info 351 TRANSICIONES La mayoría de las veces, no querrá usar un retraso para todas las propiedades, ya que socava el potencial de interactividad de la transición. Después de todo, es más como un truco cruel hacer que sus visitantes esperen un segundo antes de ver algún cambio visual cuando pasan el mouse sobre su botón. Sin embargo, si está animando varias propiedades, es posible que desee hacer que una propiedad espere hasta que las demás finalicen antes de que comience su animación. Por ejemplo, supongamos que tiene un botón cuyo color de fondo y color de texto desea cambiar, y luego el color del borde cambia repentinamente después de que las otras dos propiedades hayan terminado. Así es como podrías hacerlo: . botón de navegación { de color negro; color de fondo: #FF6603; borde: 5px sólido #660034; propiedad de transición: color, color de fondo, color de borde; transición-duración: 1s, 1s, .5s; transición-retraso: 0, 0, 1s; } . botón de navegación: hover { color blanco; color de fondo: #660034; color del borde: #FF6603; } Al igual que con la propiedad de duración de la transición, puede especificar diferentes valores de retraso para cada propiedad. El orden en el que enumera los tiempos debe coincidir con el orden de las propiedades enumeradas parapropiedad de transición.Por ejemplo, en el código anterior, no hay demora para la transición entre el color y el color de fondo, pero hay una demora de un segundo antes de que cambie el color del borde. CONSEJOPor lo general, coloca las propiedades de transición en el estilo inicial (por ejemplo, .Botón de navegaciónen la página 348), no el estilo final (.Botón de navegación: pasar el mouse).Sin embargo, aquí hay un truco para usar con los menús desplegables de CSS (vea el cuadro en la página 313). Un problema con los menús desplegables en CSS es que, por lo general, desaparecen muy rápidamente si accidentalmente se sale del menú con el mouse. Sin embargo, puede hacer que el menú aparezca rápidamente pero desaparezca lentamente usando eltransición-retrasopropiedad. Para hacerlo, agregue el siguiente código al estilo original: transición-retraso: 5s; Luego no agregue ningún retraso a:flotarestilo: transición-retraso: 0; Es un poco contradictorio, pero este código básicamente hace que:flotarla transición ocurre de inmediato, sin demora. Pero volver al estilo normal (donde desaparece el menú) tarda 5 segundos. Durante ese tiempo, un visitante tiene suficiente tiempo para mover su mouse errante sobre el menú antes de que desaparezca. 352 Css3: el manual perdido www.it-ebooks.info Taquigrafía de transición Escribiendo todas las diferentes propiedades:transición-propiedad, transición-duración, TRANSICIONES transición-tiempo-función,yduración de la transición-puede volverse bastante agotador. Especialmente cuando considera que también necesita crear versiones prefijadas por el proveedor de cada uno de ellos. Afortunadamente, existe una forma más rápida de crear transiciones: la transiciónpropiedad. Esta propiedad agrupa todas las demás propiedades en una sola. Para usarlo, simplemente enumere la propiedad, la duración, la función de tiempo y la duración en una lista separada por espacios. Por ejemplo, para animar todas las propiedades CSS durante un segundo usando elfacilidad enfunción de temporización, con un retraso de medio segundo, escriba lo siguiente: transición: todo 1s-in .5s; Necesitas enumerar cualquieratodoo una sola propiedad CSS y una duración, pero la función de temporización y el retraso son opcionales. Por defecto, la función de temporización esfacilidad eny no hay demora. Entonces, si simplemente desea animar la transición de todas las propiedades CSS durante un segundo, escriba esto: transición: todo 1s; Si solo desea animar el cambio en el color de fondo, enumere esa propiedad: transición: color de fondo 1s; Solo puede enumerar una sola propiedad CSS aquí, por lo que si desea animar varias propiedades CSS (pero no todas), puede escribir una lista separada por comas de propiedades de transición separadas por espacios. Tome el ejemplo de la página 347, donde elcolor del bordeLa propiedad se anima por separado del color y el color de fondo. Puedes reescribir ese código así: transición: color 1s, color de fondo 1s, color de borde .5s 1s; Para que el código sea más fácil de leer, muchos diseñadores web colocan cada transición en una línea separada, como esta: transición: color 1s, color de fondo 1s, borde-color .5s 1s; Esto es perfectamente legal siempre que recuerde separarlos con una coma y terminar todo el asunto con un punto y coma. Y, por supuesto, también debe crear versiones con prefijo de proveedor: - transición de webkit: color 1s, color de fondo 1s, borde-color .5s 1s; - transición moz: color 1s, color de fondo 1s, borde-color .5s 1s; Capítulo 10:TRANSFORMACIONES, TRANSICIONES Y ANIMACIONES DE CSS www.it-ebooks.info 353 ANIMACIONES - o-transición: color 1s, color de fondo 1s, borde-color .5s 1s; transición: color 1s, color de fondo 1s, borde-color .5s 1s; animaciones CSS3 proporciona otro mecanismo más rico en funciones para crear animaciones. Con las transiciones CSS, solo puede animar de un conjunto de propiedades CSS a otro. CSS3animacionesle permite animar de un conjunto de propiedades a otro conjunto a otro conjunto y así sucesivamente. Además, puede hacer que una animación se repita, hacer una pausa cuando un visitante pasa el mouse sobre ella e incluso invertirse una vez que la animación llega a su fin. Las animaciones CSS3 son un poco más complicadas que las transiciones, pero tienen el beneficio adicional de que no necesariamente necesitan un disparador para comenzar la animación. Si bien puede agregar una animación a un:flotarestado para que la animación se reproduzca cuando el mouse pasa sobre un elemento, también puede hacer que una animación comience cuando se carga la página. Este efecto le permite llamar la atención sobre un banner o logotipo al animarlo en la página cuando un visitante ingresa por primera vez a su sitio. NotaLas animaciones CSS3, como las transiciones, no funcionan en Internet Explorer 9 o versiones anteriores. Sin embargo, son compatibles con la mayoría de los demás navegadores actuales. El primer paso para crear una animación es crear un conjunto de fotogramas clave. En animación, un fotograma clavees un solo cuadro de una animación que dicta cómo se ve la escena. Supongamos que el primer fotograma clave muestra una pelota en un lado de un campo de fútbol. Al agregar un segundo fotograma clave, puede definir un punto final para la animación, como la pelota dentro de la portería al otro lado del campo de fútbol. Luego, un navegador web proporciona la animación entre los dos fotogramas clave al dibujar todos los pasos intermedios: la pelota que viaja por el campo en su camino hacia la portería. Si está pensando en transiciones, use una idea similar, tiene razón. En una transición, define dos estilos y deja que el navegador anime el cambio de un estilo a otro. De esta forma, podría pensar en cada uno de esos estilos como un fotograma clave. Sin embargo, las animaciones CSS3 te permiten definirmúltiplefotogramas clave, para que pueda crear efectos animados mucho más complejos: una pelota de fútbol que viaja desde un lado del campo, a un jugador, a otro jugador y luego a la portería, por ejemplo. Hay dos pasos para crear una animación: 1.Defina la animación.Esto implica configurar fotogramas clave que enumeran las propiedades CSS para animar. 354 Css3: el manual perdido www.it-ebooks.info 2.Aplicar la animación a un elemento.Una vez definida, puede aplicar la animación a cualquier número de elementos en una página. Incluso puede configurar tiempos, retrasos y otras ANIMACIONES propiedades de animación independientes para cada elemento. Por lo tanto, puede usar la misma animación con configuraciones ligeramente diferentes varias veces en una página. Definición de fotogramas clave El primer paso es configurar sus fotogramas clave. La sintaxis involucrada puede parecer un poco extraña, pero esta es la estructura básica: @keyframes nombre de animación { de { /* enumera las propiedades CSS aquí */ } a{ /* enumera las propiedades CSS aquí */ } } Empiezas con @fotogramas clave,seguido de un nombre. El nombre es como llamas a la animación. Terminará usando ese nombre más adelante cuando aplique la animación a un elemento en la página, así que hágalo descriptivo, como "fundido de salida" o "fundido de entrada". Nota El término @fotogramas claveno es una propiedad CSS, se llamaen la regla. Otras reglas en CSS incluyen el @importardeclaración para cargar una hoja de estilo externa desde otra hoja de estilo (página 42), y @medios de comunicaciónpara definir estilos para diferentes tipos de medios, como una impresora (página 523) o diferentes tamaños y resoluciones de pantalla (página 547). Luego agrega al menos dos fotogramas clave. En el ejemplo actual, las palabras clavede yase utilizan para crear el fotograma clave inicial (desde) y el fotograma clave final (hasta). Dentro de cada fotograma clave, agrega una o más propiedades CSS, como si estuviera creando un estilo. De hecho, puede pensar en cada fotograma clave como un estilo CSS con una o más propiedades CSS. Por ejemplo, supongamos que desea crear una animación que desvanezca un elemento a la vista. Podrías empezar con unopacidadvalor de0 (invisible), y terminar con un valor de1 (totalmente visible): @keyframes se desvanecen{ de { opacidad: 0; } a{ opacidad: 1; } } Capítulo 10:TRANSFORMACIONES, TRANSICIONES Y ANIMACIONES DE CSS www.it-ebooks.info 355 ANIMACIONES Tampoco está limitado a solo dos fotogramas clave. Puede utilizar valores porcentuales para definir varios fotogramas clave. El porcentaje representa en qué parte de la duración total de la animación debe ocurrir el cambio. Por ejemplo, suponga que desea crear un efecto en el que el fondo de un elemento cambie de amarillo a azul y luego a rojo. Puedes escribir esto: @keyframes fondoGlow { de { color de fondo: amarillo; } 50% { color de fondo: azul; } a{ color de fondo: rojo; } } En este caso, el fondo azul aparecerá a la mitad de la animación. Si desea que el amarillo dure más y el azul aparezca después de que se completen las tres cuartas partes de la animación, use75%en lugar de50%.Puede continuar agregando fotogramas clave adicionales de esta manera (por ejemplo, en25%, 66%,etcétera). NotaPuedes reemplazar eldepalabra clave con0%y elapalabra clave con100%. Tampoco está limitado a una sola propiedad CSS. Puede colocar cualquier número de propiedades animables (página 346) dentro de cada fotograma clave:color de fondo, opacidad, ancho, alto,etcétera: @keyframes growAndGlow { de { color de fondo: amarillo; } 50% { transformar: escala (1.5); color de fondo: azul; } a{ transformar: escala(3); color de fondo: rojo; } } 356 Css3: el manual perdido www.it-ebooks.info En el ejemplo anterior, el color de fondo no solo pasa por tres colores, sino que también aumenta su tamaño hasta que es tres veces su tamaño original. ANIMACIONES También puede ser bastante complicado con los valores porcentuales agregando múltiples valores porcentuales para un conjunto de propiedades CSS. Esto es útil en un par de casos: primero, es bueno si desea animar hasta cierto punto, hacer una pausa y luego continuar. Por ejemplo, digamos que le gustaría comenzar con un color de fondo amarillo para un <div>etiqueta. Luego, le gustaría cambiar ese color a azul, quedarse en azul por un tiempo y luego terminar con un color rojo. En otras palabras, desea una especie de pausa en el medio mientras el color de fondo permanece constante antes de cambiar nuevamente. Puedes hacerlo con este código: @keyframes brillan { de { color de fondo: amarillo; } 25%, 75% { color de fondo: azul; } a{ color de fondo: rojo; } } Observe la25%, 75%en la línea 5. Eso significa25%del camino a través de la animación, el color de fondo del elemento debe ser azul. Sin embargo, debe ser azul. 75%del camino también. En otras palabras, desde el25%marcar a la75%marca, el fondo permanecerá azul sólido, antes de finalmente volverse rojo. Si esta animación se ejecutó durante 4 segundos, durante los 2 segundos centrales de la animación, el fondo del elemento permanecería en azul sólido. También puede usar porcentajes cuando desee usar el mismo conjunto de propiedades CSS para diferentes partes de la animación. Por ejemplo, digamos que desea animar el color de fondo nuevamente, pero esta vez vaya de amarillo a azul a naranja a azul a naranja a rojo. El azul y el naranja aparecen dos veces, por lo que en lugar de escribir sucolor de fondo propiedades varias veces, en su lugar puede hacer esto: @keyframes brillan { de { color de fondo: amarillo; } 20%, 60% { color de fondo: azul; } 40%, 80% { color de fondo: naranja; } Capítulo 10:TRANSFORMACIONES, TRANSICIONES Y ANIMACIONES DE CSS www.it-ebooks.info 357 a{ ANIMACIONES color de fondo: rojo; } } En este caso, el color de fondo se volverá azul en el20%marca, naranja en el40% marca, luego azul de nuevo en el60%marca, y naranja por última vez en el80%marca antes de finalmente ponerse rojo. Una desventaja de las animaciones CSS3 es que requieren prefijos específicos del proveedor (como muchas propiedades CSS3). En otras palabras, necesita repetir sus fotogramas clave paracada navegador. Entonces, para escribir esta animación de aparición gradual simple para que funcione en tantos navegadores como sea posible, debe escribir esto: @-webkit-keyframes fadeIn { de { opacidad: 0; } a{ opacidad: 1; } } @-moz-keyframes fadeIn{ de { opacidad: 0; } a{ opacidad: 1; } } @-o-keyframes fadeIn{ de { opacidad: 0; } a{ opacidad: 1; } } @keyframes se desvanecen{ de { opacidad: 0; } 358 Css3: el manual perdido www.it-ebooks.info a{ ANIMACIONES opacidad: 1; } } Observe los dos guiones: uno entre la @ y el prefijo del proveedor y otro entre el prefijo del proveedor y la palabrafotogramas clave NotaNo necesitas el -EM-prefijo de proveedor para Internet Explorer en este caso. IE 9 y versiones anteriores no entienden las animaciones CSS de todos modos, y IE 10 es compatible con @fotogramas clavesintaxis sin prefijo. Aplicar una animación Una vez que haya completado un conjunto de fotogramas clave, la animación estará lista. Sin embargo, para que funcione, debe aplicarlo a un elemento de su página. Puede agregar una animación a cualquier estilo para cualquier elemento de una página. Si simplemente agrega la animación a un estilo que se aplica inmediatamente a un elemento, por ejemplo, unh1estilo de etiqueta: la animación se aplicará cuando se cargue la página. Puede usar esta técnica para agregar una animación introductoria a una página que hace que un logotipo se amplíe en su lugar en la parte superior izquierda de la página, o que brille un cuadro de contenido en particular para llamar la atención sobre él. Además, puede aplicar una animación a una de las pseudoclases, incluidas :flotar, :activo, :objetivo,o :enfocar para hacer que se ejecute una animación cuando un visitante pasa el mouse sobre un enlace, por ejemplo, o hace clic en un campo de formulario. Finalmente, puede aplicar la animación a un estilo de clase y usar JavaScript para aplicar dinámicamente esa clase en respuesta a un visitante que hace clic en un botón o en algún otro elemento de la página (consulte el cuadro en la página 351). CSS3 proporciona un puñado de propiedades relacionadas con la animación para controlar cómo y cuándo se reproduce una animación (así como una versión abreviada que abarca todas las propiedades individuales). Como mínimo, para ejecutar una animación, debe proporcionar el nombre que le dio a la animación original (en el @fotogramas clavecomo se describe en la página 355) y una duración para la animación. Aquí hay un ejemplo simple. Digamos que desea que un div con un anuncio importante se desvanezca cuando se cargue la página. Le has dado a ese div un nombre de clase deanuncio: - <div class="anuncio">. 1.Cree la animación de aparición gradual con @fotogramas claveregla: @keyframes se desvanecen { de { opacidad: 0; } a { opacidad: 1; } } Capítulo 10:TRANSFORMACIONES, TRANSICIONES Y ANIMACIONES DE CSS www.it-ebooks.info 359 ANIMACIONES CONSEJOSi solo está animando una sola propiedad, puede ser más fácil de leer si coloca los fotogramas clave en una sola línea: de { opacidad: 0; } Sin embargo, si está animando muchas propiedades, es más fácil de leer (y escribir) si distribuye ese código en varias líneas: de { opacidad: 0; color rojo; ancho: 50%; } 2.Aplique esa animación al estilo para el <div>etiqueta: . anuncio { nombre-animación: fadeIn; animación-duración: 1s; } Elnombre-de-animaciónLa propiedad simplemente le dice al navegador qué animación usar. Es el mismo nombre que proporcionó cuando creó la animación en el Paso 1. El duración de la animaciónLa propiedad establece el tiempo que tarda la animación de principio a fin. En este ejemplo, estas son las únicas dos propiedades de animación enumeradas, pero también puede (y probablemente lo hará) incluir otras propiedades que no sean de animación en el estilo. Por ejemplo, en el mundo real, probablemente agregaría propiedades comoancho, color de fondo, borde,y así sucesivamente a esto.anuncioestilo. NotaPoner el nombre de la animación entre comillas...fundirse'-no es técnicamente necesario y no se hace en este ejemplo, pero hacerlo puede evitar cualquier conflicto que pueda surgir si usa una palabra clave de CSS para el nombre de una animación. Al igual que con el @fotogramas claveregla, cada una de las propiedades de animación requiere prefijos específicos del proveedor, por lo que el anterior.anuncioEl estilo debería escribirse de la siguiente manera para que funcione en tantos navegadores como sea posible: . anuncio { nombre-animación: fadeIn; animación-duración: 1s; - nombre-animación-webkit: fadeIn; - webkit-animation-duration: 1s; - moz-animation-name: fadeIn; - moz-animación-duración: 1s; - o-animation-name: fadeIn; - o-animación-duración: 1s; nombre-animación: fadeIn; animación-duración: 1s; } 360 Css3: el manual perdido www.it-ebooks.info Puede parecer un poco molesto definir la animación en un solo lugar con el @fotogramas clave regla y luego aplicarla en otra (el estilo); sin embargo, una vez que haya definido la animación, puede ANIMACIONES usarla cualquier cantidad de veces en cualquier cantidad de estilos. Por ejemplo, puede crear un tipo de animación de aparición gradual genérica y aplicarla a diferentes elementos. Además, puede controlar la animación de forma independiente para cada estilo; por ejemplo, hacer que el encabezado aparezca gradualmente durante medio segundo, pero que otro elemento de la página aparezca gradualmente durante cinco segundos. Además, puede aplicar más de una animación a un elemento. Digamos que creas una animación llamadafundirsepara hacer que un elemento se desvanezca y otra animación llamadaparpadearpara hacer que el color de fondo parpadee salvajemente. Para aplicar ambas animaciones al elemento, proporcione una lista de nombres separados por comas como esta: nombre de la animación: fundido de entrada, parpadeo; Para dar a las animaciones tiempos separados, proporcione una lista de tiempos separados por comas: nombre de la animación: fundido de entrada, parpadeo; animación-duración: 1s, 3s; El orden en el que coloca los tiempos se aplica al nombre de la animación en el mismo orden. Por ejemplo, la primera animación aparece en la lista por primera vez. En el ejemplo anterior, fundirse tarda un segundo en completarse, mientras queparpadeartarda tres segundos. También puede aplicar varias otras propiedades de animación útiles. sigue leyendo Temporización de la animación Ya has visto que elduración de la animaciónLa propiedad le permite controlar la duración de una animación. Al igual que con las transiciones, puede usar milisegundos (750ms,por ejemplo) o segundos (.75,por ejemplo) para especificar la duración. Al igual que con las transiciones, también puede establecer un tipo específico de función de tiempo para controlar la velocidad de la animación a lo largo de esa duración. Por ejemplo, puede iniciar la animación lentamente y terminarla rápidamente, usando una curva de Bézier cúbica (página 349) o usando uno de los métodos de palabras clave integrados:lineal, facilidad, facilidad de entrada, facilidad de salida, facilidad de entrada y salida.Estos funcionan igual que losfunción de temporización de transiciónpropiedad discutida en la página 348. Puedes usar elfunción de temporización de animaciónpara controlar toda la animación o solo fotogramas clave específicos. Por ejemplo, para aplicar elFacilitarsefunción de temporización para el fundirseanimación presentada anteriormente (Paso 1 en la página 359), agregue la función de temporización al estilo .announcement (Paso 2 en la página 360): . anuncio { nombre-animación: fadeIn; animaciónduración: 1s; función de temporización de animación: salida fácil; } Sin embargo, también puede controlar la función de temporización de la animación entre fotogramas clave. Por ejemplo, imagina que creas una animación que tiene tres fotogramas clave con tres colores de fondo diferentes. El navegador web se animará a partir de un color. Capítulo 10:TRANSFORMACIONES, TRANSICIONES Y ANIMACIONES DE CSS www.it-ebooks.info 361 ANIMACIONES a otro y luego a un tercero. Tal vez desee que se mueva lentamente del primer al segundo color usando una curva Bézier cúbica y luego se mueva en un tiempo uniforme desde el medio hasta el final. Puede hacerlo agregando dos funciones de temporización, una al primer fotograma clave (que controla la animación desde el fotograma clave 1 al 2) y otra en el segundo fotograma clave para controlar la animación desde el fotograma clave 2 al 3: @keyframes crecer y brillar { de { color de fondo: amarillo; función de temporización de animación: cubic-bezier (1, .03, 1, .115); } 50% { transformar: escala (1.5); color de fondo: azul; función de temporización de animación: lineal; } a{ transformar: escala(3); color de fondo: rojo; } } También puede retrasar el comienzo de la animación utilizando la propiedad. Funciona igual que la propiedad Transition-Delay para transiciones (página 351) y simplemente espera una cantidad específica de milisegundos o segundos antes de que comience la animación. Por ejemplo, si desea esperar un segundo antes de que aparezca el div "anuncio", puede reescribirlo.anuncioclase como esta: . anuncio { nombre-animación: fadeIn; animación-duración: 1s; animación-retraso: 1s; } Agregar un retraso a una animación es una excelente manera de captar la atención de las personas y agregar sorpresa a una página. NotaElfunción de temporización de animaciónyanimación-retrasolas propiedades requieren prefijos de proveedores, así que asegúrese de agregar el apropiado:webkit-animation-timing-function, -mozanimationtiming-function,y así sucesivamente a sus estilos animados. 362 Css3: el manual perdido www.it-ebooks.info Terminando la Animación Con CSS, puede controlar algunos aspectos adicionales de una animación, incluido si repetir una animación, en qué dirección se ejecuta la animación si se anima más de una vez y también cómo el navegador debe formatear el elemento cuando se completa la animación. ANIMACIONES Las transiciones son animaciones que solo se ejecutan una vez: pase el mouse sobre un botón y el botón crece, por ejemplo. Las animaciones, sin embargo, pueden ejecutarse una, dos o continuamente, gracias a la recuento de iteraciones de animaciónpropiedad. Si desea que una animación se ejecute 10 veces (quizás, aparezca y desaparezca 10 veces), agregue este código al estilo que está animando: número de iteraciones de animación: 10; Normalmente, un navegador solo reproduce la animación una vez, y si eso es todo lo que busca, omita esta propiedad de conteo de iteraciones. Si desea que la animación se reproduzca continuamente, elrecuento de iteraciones de animaciónpropiedad acepta una palabra clave:infinito. Así que para ejecutar elfundirseanimación un número infinito de veces en el anuncio div, puede crear este estilo: . anuncio { nombre-animación: fadeIn; animaciónduración: .25s; animación-iteraciónrecuento: infinito; } Eso, sin embargo, molestaría muchísimo a sus visitantes, así que por favor no lo haga. Sin embargo, podría usar un estilo como este para un efecto de "pulso" simple donde un botón "regístrese hoy" brille suavemente (al animar elsombra de la cajapropiedad discutida en la página 210). Normalmente, cuando una animación se ejecuta más de una vez, un navegador web literalmente inicia la animación desde el principio. Entonces, si animó un color de fondo de amarillo a azul y lo repitió dos veces, el navegador mostraría un cuadro amarillo que se vuelve azul, y luego, de repente, el cuadro amarillo regresaría y luego se animaría a azul una vez más. Este efecto puede ser bastante discordante. En este caso, se vería mejor si, por segunda vez a través de la animación, el navegador simplemente invirtiera el efecto. Así es como funcionan las transiciones: por ejemplo, cuando pasa el mouse sobre un elemento, el navegador anima la transición del estado normal al estado de rollover. Cuando mueve el mouse fuera del elemento, el navegador simplemente invierte la animación para volver al estado normal. Para hacer que una animación avance en ejecuciones impares y retroceda en ejecuciones pares, utilice elanimación-direcciónpropiedad y laalternopalabra clave. Por ejemplo, para hacer que un elemento desaparezca y luego vuelva a aparecer, puede crear una animación llamada desvanecerse,como esto: @keyframes se desvanecen { de {opacidad: 1; } a { opacidad: 0; } } Capítulo 10:TRANSFORMACIONES, TRANSICIONES Y ANIMACIONES DE CSS www.it-ebooks.info 363 ANIMACIONES Luego, reproduzca esa animación dos veces, invirtiendo su dirección la segunda vez: . desteñir { nombre-animación: fadeOut; animación-duración: 2s; número de iteraciones de animación: 2; animación-dirección: alternativa; } Este código le dice al navegador web que ejecute eldesvanecerseanimación sobre cualquier elemento con la clase dedesteñir.La animación debe ejecutarse durante dos segundos y luego repetirse. debido a laalternovalor poranimación-dirección,la animación se desvanecerá la primera vez (pasará de totalmente opaca, una opacidad de1—a invisible—una opacidad de 0), pero correrá hacia atrás la segunda vez (desde0a1opacidad), lo que hace que se desvanezca de nuevo a la vista. CONSEJOPara que una animación se ejecute varias veces pero termine en el estado inicial, use un número par de iteraciones y configure elanimación-direcciónpropiedad aalterno. No importa cuántas veces haga que un navegador web ejecute una animación, una vez que se completa la animación, el navegador muestra el elemento animado en su estado original anterior a la animación. Por ejemplo, supongamos que anima una imagen para que crezca lentamente hasta el doble de su tamaño. Una vez que se completa la animación, el navegador web vuelve a ajustar la imagen a su tamaño original, creando un efecto visual discordante. Afortunadamente, puede indicarle al navegador que mantenga el elemento animado con el mismo formato que cuando finalizó la animación configurando elmodo de relleno de animaciónpropiedad ahacia adelante. modo de relleno de animación: adelante; Aplique esta propiedad al elemento que está animando, junto con elnombre-animación, duración-animación,y otras propiedades de animación. Taquigrafía de animación Como puede ver, hay muchas propiedades de animación, y escribirlas todas además de todas las versiones prefijadas por el proveedor es una receta para el síndrome del túnel carpiano. Si bien todavía necesita versiones prefijadas por el proveedor, puede simplificar las cosas usando el animaciónpropiedad abreviada. Esta única propiedad combinanombre-de-animación, duración-deanimación, función-de-tiempo-de-animación, número-de-iteraciones-de-animación, dirección-deanimación, retraso-de-animación,ymodo de relleno de animaciónen una sola propiedad. Por ejemplo, puedes tomar este código: . desteñir { nombre-animación: fadeOut; animación-duración: 2s; función de temporización de animación: entrada y salida fácil; 364 Css3: el manual perdido www.it-ebooks.info número de iteraciones de animación: ANIMACIONES 2; animación-dirección: alternativa; animación-retraso: 5s; modo de relleno de animación: adelante; } Y reescribirlo así: . desteñir { animación: desvanecimiento 2 s entrada y salida 2 5 s alternativos hacia adelante; } ¡Esa es una línea de código en lugar de siete! Debe enumerar los valores de propiedad en el orden utilizado anteriormente: nombre, duración, función de tiempo, conteo, dirección, retraso y modo de relleno. Además, asegúrese de que cada valor esté separado por un espacio. Solo se requiere el nombre y la duración. Los otros valores son opcionales. Si desea aplicar más de una animación a un elemento, simplemente use listas de propiedades de animación separadas por comas. Por ejemplo, para aplicar dos animaciones (digamos desvanecerseybrillo)hacia .desteñirestilo, escribe esto: . desteñir { animación: FadeOut 2s Facilidad de entrada y salida 2 Alternar 5s adelante, brillo 5s; } Por supuesto, en el uso real, también necesitaría usar prefijos de proveedores: . desteñir { - animación de webkit: fadeOut 2s facilidad de entrada y salida 2 5s alternativos hacia delante, brillo 5s; - moz-animation: fadeOut 2s facilidad de entrada y salida 2 5s alternativos hacia adelante, brillo 5s; - o-animación: fadeOut 2s facilidad de entrada y salida 2 5s alternativos hacia adelante, brillo 5s; animación: FadeOut 2s Facilidad de entrada y salida 2 Alternar 5s adelante, brillo 5s; } En general, debe optar por usar la abreviatura de animación: es mucho más concisa y más suave con los dedos y el teclado. Pausar una animación CSS3 incluye otra propiedad de animación:estado-de-reproducción-de-animación—para controlar la reproducción de una animación. Acepta solo una de dos palabras clave:correropausadoPara pausar una animación, simplemente aplique esta declaración a un estilo: animación-reproducir-estado: en pausa; Capítulo 10:TRANSFORMACIONES, TRANSICIONES Y ANIMACIONES DE CSS www.it-ebooks.info 365 Tutorial Sin embargo, solo hay una forma de aplicar eso usando CSS: una pseudoclase. Al igual que con las transiciones, necesita algún tipo de disparador para pausar una animación. Una forma de hacer esto es pausar cualquier animación cuando un visitante pasa el mouse sobre la animación. Aquí hay un ejemplo usando el .desteñirestilo de clase: . desteñir { animación: FadeOut 2s Facilidad de entrada y salida 2 Alternar 5s adelante, brillo 5s; } Este código ejecuta dos animaciones:desvanecerseybrillo-en cualquier elemento con la clase de fundido aplicada. Digamos que desea permitir que los visitantes pausen esta animación simplemente pasando el mouse sobre ella. Solo necesitaría agregar un estilo más: . desvanecerse: flotar { animación-reproducir-estado: en pausa; } Por supuesto, también necesitará todas las versiones prefijadas del proveedor. Una forma más poderosa de pausar una animación sería aplicar dinámicamente elestado-de-reproducción-de-animación propiedad al elemento usando JavaScript. De esta forma, puede crear una animación compleja y agregar un botón Pausa que pausa la animación cuando se hace clic. Consulte el cuadro en la página 351 para obtener más información sobre las animaciones JavaScript y CSS. Animación al pasar el mouse Hasta ahora, todas las animaciones que has visto aquí se ejecutan cuando se carga la página. Tiene algunas otras opciones, incluidas varias pseudoclases y el uso de JavaScript, para activar una animación CSS. La pseudoclase más común para la animación es:flotar.Con él, puede ejecutar una animación cuando un visitante pasa el mouse sobre cualquier elemento; por ejemplo, puede hacer que un logotipo haga gimnasia elegante, salga de la página y luego retroceda nuevamente. Para animar un elemento cuando el mouse de un visitante pasa sobre él, comience creando una animación con @fotogramas clave(Paso 1 en la página 359). Luego, crea un:flotar pseudoclase para cualquier elemento que desee animar. En ese estilo, simplemente agrega las propiedades de animación (Paso 2 en la página 360). Ahora la animación se ejecuta solo cuando el visitante se desplaza sobre el elemento. Tutorial En este ejercicio, agregará transformaciones, animaciones y transiciones a un banner. Para comenzar, descargue los archivos del tutorial del sitio web complementario de este libro en www.sawmac.com/css3. Haga clic en el enlace del tutorial y descargue los archivos. Todos los archivos están encerrados en un archivo zip, por lo que primero debe descomprimirlos. (Encontrará instrucciones detalladas en el sitio web). Los archivos de este tutorial se encuentran dentro del10carpeta. 366 Css3: el manual perdido www.it-ebooks.info 1.En un editor de texto, abra10-banner.html. Tutorial La página incluye un banner con un gráfico de logotipo, un título y un conjunto de botones de navegación (consulte la Figura 10-9). Primero, agregará una transformación para que cuando un visitante pase el mouse sobre un botón, aumente su tamaño. Figura 10-9 Un banner normal y estático que espera cobrar vida con animaciones, transformaciones y transiciones. 2.Localiza la apertura y el cierre <estilo>cerca de la parte superior de la página y agregue la siguiente regla a la hoja de estilo: nav a: hover { - webkit-transform:escala(1.2); - transformación moz: escala (1.2); - o-transformada: escala (1.2); - transformada ms: escala (1.2); transformar: escala (1.2); } Los botones de la página están contenidos dentro de un elemento de navegación HTML5. Este selector descendente apunta a enlaces dentro de <navegación>etiqueta en su estado de desplazamiento (es decir, cuando un visitante pasa el mouse sobre el enlace). El estilo aplica la escala(página 338) para agrandar un poco el botón. Desafortunadamente, debe agregar cinco líneas de código para que funcione en Safari, Chrome, Firefox, Opera e Internet Explorer 9, así como en futuros navegadores que no requerirán un prefijo de proveedor. NotaPara que los pasos de este tutorial sean más fáciles de seguir, está colocando los estilos dentro de una hoja de estilo interna en la página web. Sin embargo, si lo prefiere, puede agregar este código a la hoja de estilo externa que ya se aplicó a esta página. (Se llamaestilos.cssy está en la misma carpeta que la página web). 3.Guarde la página y obtenga una vista previa en un navegador web.Pase el mouse sobre los enlaces debajo del título. Cuando pasa el mouse sobre un botón, se hace más grande, casi saliendo de la página (Figura 10-10). Muy bueno, pero se vería aún mejor si agregara una animación al efecto. NotaInternet Explorer 8 y versiones anteriores no entienden las transformaciones, por lo que no verá ningún efecto en esos navegadores. Capítulo 10:TRANSFORMACIONES, TRANSICIONES Y ANIMACIONES DE CSS www.it-ebooks.info 367 Tutorial Figura 10-10 Pop va el botón. Al agregar una transformación de escala al estado de desplazamiento de la parte inferior, puede hacer que casi salte de la página. El botón ampliado no afecta el contenido que lo rodea (por ejemplo, no empuja los otros botones fuera del camino). Este es un aspecto único de todas las transformaciones CSS. 4.Agregue otro estilo antes delnav a: hoverestilo que acaba de crear: navegar un { - transición de webkit: todos los .5; - transición moz: todos los .5s; - o-transición: todos los .5s; transición: todos .5s; } Nuevamente, debe agregar las versiones prefijadas del proveedor. (IE 9 no entiende las transiciones, y dado que IE 10 entiende la versión sin prefijo, no necesita un -mstransiciónpropiedad.) Aquí, está instruyendo al navegador web para animar todos los cambios en las propiedades CSS de <un>etiquetas dentro del <navegación> y hacer que la animación dure.5 s.Para hacer las cosas más interesantes, agregará un color de fondo al estado de desplazamiento. 5.Localiza elnav a: hoverestilo y agregarcolor de fondo: rojo,por lo que el estilo final se ve así: nav a: hover { color de fondo: - webkit-transform:escala(1.2); - transformación moz: escala (1.2); - o-transformada: escala (1.2); - transformada ms: escala (1.2); transformar: escala (1.2); } Si guarda la página y obtiene una vista previa ahora, verá que los botones no solo aumentan de tamaño cuando pasa el cursor sobre ellos, sino que también se vuelven rojos. Pero ahora agregará tiempos separados a estas transiciones, por lo que el botón primero crece y luego se vuelve rojo. 368 Css3: el manual perdido www.it-ebooks.info 6.Cambiar elnav unstyle para incluir dos transiciones, una para la transformación y otra para el color de fondo, así (los cambios están en negrita): Tutorial navegar un { - webkit-transición:-webkit-transformar .5s, color de fondo 1s facilidad de entrada .5s; - moz-transición:-moz-transformar .5s, color de fondo 1s facilidad de entrada .5s; - o-transición:-o-transformar .5s, color de fondo 1s facilidad de entrada .5s; transición:transformar .5s, color de fondo 1s facilidad de entrada .5s; } La primera parte-transformar .5s—informa al navegador que desea animar cualquier cambio en la propiedad de transformación en el transcurso de medio segundo. La segunda parte-fondo-color 1s entrada lenta .5s—indica que desea animar el cambio de color de fondo en el transcurso de un segundo, utilizando el método de temporización gradual (página 361), pero espere medio segundo antes de comenzar. Eso . 5sal final es importante ya que coincide con el .5sde la animación de transformación. En otras palabras, el navegador esperará hasta que eltransformarla transición se completa antes de cambiar el color de fondo. 7.Guarde la página y obtenga una vista previa en un navegador web. Pase el mouse sobre un botón. Primero, el botón se hace más grande. Mantenga el mouse sobre el botón y luego se volverá rojo. Por supuesto, puede ajustar el tiempo, por ejemplo, eliminar el retraso de lacolor de fondotransición, y el cambio de color comenzará al mismo tiempo que el cambio de tamaño. Sin embargo, dado que el cambio de color dura un segundo, continuará después de que el botón haya alcanzado su tamaño final. Agregar una animación Ahora es el momento de probar las animaciones CSS3. Comenzará simplemente girando y escalando la imagen del logotipo. El primer paso para crear una animación CSS es usar @fotogramas clave regla para configurar los fotogramas clave de la animación. Este ejemplo comienza con una animación simple y solo dos fotogramas clave. CONSEJODebido a que las animaciones CSS requieren una buena cantidad de código, es una buena idea comenzar usando solo el prefijo del proveedor para el navegador que usa con más frecuencia. Pruebe la página en ese navegador y, una vez que haya perfeccionado la animación, agregue el código para los otros navegadores. Capítulo 10:TRANSFORMACIONES, TRANSICIONES Y ANIMACIONES DE CSS www.it-ebooks.info 369 Tutorial 1.Agregue el siguiente estilo a la hoja de estilo interna de la página, después delnav a: hoverestilo: @-webkit-keyframes logo { de { - webkit-transform: rotar (0) escala (.5); } a{ - webkit-transform: rotar (-720 grados) escala (1); } } Este ejemplo usa la sintaxis de WebKit, lo que significa que funcionará en Chrome y Safari. Si está utilizando Firefox como su navegador principal, reemplace @-webkit-keyframes con @moz-fotogramas clave. (Usar @-o-fotogramas clavepara ópera; para IE 10, omita los prefijos). Este código le dice al navegador que debe iniciar el elemento sin rotación— rotar(0)—y a la mitad de su tamaño—escala (.5).A continuación, debe animar el cambio de ese estado al estado "a" de la animación, en este caso, rotarlo 720 grados, que son tres rotaciones en sentido contrario a las agujas del reloj, y volver a escalarlo hasta su tamaño normal. En otras palabras, esta animación hará girar un elemento y lo hará crecer. Ahora, debe aplicarlo a cualquier elemento de la página. 2.Cree un nuevo estilo después del que acaba de agregar: . logotipo { - animación webkit: logo 1s; } El logo en el banner tiene una clase delogoaplicado a él, por lo que este selector de clase le agrega una animación. ElanimaciónLa propiedad puede tomar muchos valores, pero solo necesita el nombre y la duración. Aquí, está especificando la animación que creó en el último paso:logo-y decirle a un navegador web que haga que la animación dure un segundo. 3.Guarde el archivo y obtenga una vista previa en Chrome o Safari (o cualquier navegador para el que haya utilizado el prefijo). El logotipo debe girar, aumentar de tamaño y luego detenerse. Si no es así, vuelva a verificar su código y asegúrese de obtener una vista previa de la página en el navegador adecuado. Si todo sale según lo planeado, esta animación debería verse muy bien, pero sería aún mejor si se moviera desde fuera de la página y luego se detuviera en el lugar correcto en el banner. Para hacer eso, simplemente animará la posición del elemento en la página. 370 Css3: el manual perdido www.it-ebooks.info 4.Edita la @fotogramas claveregla para que se vea así (adición en negrita): @-webkit-keyframes logo { Tutorial de { - webkit-transform: rotar (0) escala (.5); izquierda: 120%; } a{ - webkit-transform: rotar (-720 grados) escala (1); izquierda: 0; } } Aquí, comienza la posición del logotipo a la derecha del banner y los botones de navegación en el borde de la pantalla (básicamente, está colocando el borde izquierdo del logotipo 1,2 veces el ancho del banner). Para que esto funcione, debe aprovechar el CSSposiciónpropiedad. Lo aprenderá en profundidad en el Capítulo 15, pero por ahora solo necesita saber que CSS le brinda el poder de colocar cualquier elemento en cualquier lugar de la ventana del navegador, incluso fuera de la ventana del navegador. El fotograma clave final coloca el logotipo en la posición 0, donde normalmente aparecería en la página en el lado izquierdo del banner. 5.Guarde la página y obtenga una vista previa en Chrome o Safari. Luciendo bien. Pero aún puedes hacerlo mejor. Agregue otro fotograma clave para que el logotipo se coloque en su lugar y luego gire en la dirección opuesta a medida que crece. 6.Cambie el código que agregó en el Paso 4 para que se vea así: @-webkit-keyframes logo { de { - webkit-transform: rotar (0) escala (.5); izquierda: 120% } 50% { - webkit-transform: rotar (-720 grados) escala (.5); izquierda: 0; } a{ - webkit-transform: rotar (0) escala (1); } } Ahora tiene tres fotogramas clave: uno al principio, otro justo en el medio y un tercero al final. El navegador animará las propiedades a medida que cambien del cuadro 1 al cuadro 2 al cuadro 3. Capítulo 10:TRANSFORMACIONES, TRANSICIONES Y ANIMACIONES DE CSS www.it-ebooks.info 371 Tutorial El primer fotograma clave es el mismo que el del Paso 4: el logotipo no está rotado, tiene la mitad de su tamaño y está colocado en el lado derecho. El segundo fotograma clave mantiene el logotipo en el mismo tamaño, lo gira tres veces y lo mueve al lado izquierdo del banner. Finalmente, una vez que el logotipo está en su lugar, el navegador lo amplía mientras lo gira hacia atrás desde la posición de -720 grados a la posición de 0 grados; en otras palabras, el logotipo ahora gira tres veces en el sentido de las agujas del reloj. 7.Guarde la página y obtenga una vista previa en Chrome o Safari. El logotipo debe rodar desde el lado derecho de la pancarta hacia la izquierda, detenerse, crecer y girar en el sentido de las agujas del reloj. Si no funciona, verifique dos veces su código con el de arriba. Desafortunadamente, la animación es un poco demasiado rápida. Esa es una solución fácil. 8.Edite el .logostyle para que la animación dure tres segundos en lugar de uno: . logotipo { - animación webkit: logo 3s; } Ahora viene la parte tediosa: hacer que funcione en otros navegadores agregando todos los prefijos de proveedores. Abordarás el @fotogramas claveregla primero. 9.Agregar versiones con prefijo de proveedor para @fotogramas claveregla, por lo que su código se ve así: @-webkit-keyframes logo { de { - webkit-transform: rotar (0) escala (.5); izquierda: 120% } 50% { - webkit-transform: rotar (-720 grados) escala (.5); izquierda: 0; } a{ - webkit-transform: rotar (0) escala (1); } } @-moz-keyframes logotipo { de { - transformación moz: rotar (0) escala (.5); izquierda: 120% } 50% { - moz-transform: rotar (-720 grados) escala (.5); izquierda: 0; 372 Css3: el manual perdido www.it-ebooks.info } Tutorial a{ - transformación moz: rotar (0) escala (1); } } logotipo de @-o-keyframes { de { - o-transformar: rotar (0) escala (.5); izquierda: 120% } 50% { - o-transformar: rotar (-720 grados) escala (.5); izquierda: 0; } a{ - o-transformar: rotar (0) escala (1); } } logotipo de @keyframes { de { transformar: rotar (0) escala (.5); izquierda: 120% } 50% { transformar: rotar (-720 grados) escala (.5); izquierda: 0; } a{ transformar: rotar (0) escala (1); } } Eso es mucho código y, desafortunadamente, eso es lo que tienes que hacer en este punto para usar animaciones CSS. En algún momento, en un hermoso futuro, todos los navegadores utilizarán el @ único sin prefijofotogramas claveregla y un no prefijadotransformar propiedad. Pero, en este punto, estás atascado escribiendo todo este código. Afortunadamente, agregando el @fotogramas claveLa regla es la parte más difícil. Agregando la animación al .logoel estilo no es tanto trabajo. Capítulo 10:TRANSFORMACIONES, TRANSICIONES Y ANIMACIONES DE CSS www.it-ebooks.info 373 Tutorial 10Edite el .logoestilo agregando tres nuevas líneas: . logotipo { - animación webkit: logo 3s; - animación moz: logo 3s; - o-animación: logo 3s; animación: logotipo 3s; } 11Guarde la página y compruébelo en Firefox, Chrome, Safari y Opera. El logo debe rodar a lo largo de la página y agrandarse en todos esos navegadores. Por supuesto, en Internet Explorer 9 y versiones anteriores, no verá ninguna animación. Sin embargo, el logotipo aún se colocará correctamente y la página se verá bien. Encontrará una versión terminada de este tutorial en el10_terminadocarpeta. Para llevar esto más lejos, agregue una animación que haga que uno de los botones de navegación brille cuando el mouse se coloca sobre él. (Sugerencia: cree una animación que recorra diferentes sombras de cuadro. Use elrecuadrovalor para agregar la sombra dentro del cuadro como se describe en la página 211. Luego agregue esa animación alnav a: hover estilo, por lo que solo se reproduce cuando el mouse pasa sobre un botón). Figura 10-11 Los libros pueden hacer mucho, pero desafortunadamente no pueden mostrarte la increíble animación que acabas de crear. Este es el aspecto que debería tener la página cuando la animación haya seguido su curso y pase el mouse sobre el botón Inicio. 374 Css3: el manual perdido www.it-ebooks.info Capítulo 11 11 Formateo de tablas y Formularios T Los poderes de formato de CSS van mucho más allá del texto, las imágenes y los enlaces. Puede hacer que las tablas de información, como horarios, resultados deportivos y listas de reproducción de música, sean más fáciles de leer agregando bordes, fondos y otras mejoras visuales. De manera similar, puede usar CSS para organizar los elementos de un formulario para ayudar a sus visitantes a través del proceso de pedido de artículos, suscribirse a su boletín informativo o usar su aplicación web más reciente. Este capítulo le muestra cómo mostrar tablas y formularios con HTML y cómo diseñarlos y diseñarlos usando CSS. En dos tutoriales al final del capítulo, creará una tabla y un formulario, usando los trucos que ha aprendido en el camino. Usar tablas de la manera correcta Las tablas HTML han tenido mucho uso en la corta historia de la Web. Originalmente creadas para mostrar datos en un formato similar a una hoja de cálculo, las tablas se convirtieron en una popular herramienta de diseño. Enfrentados a las limitaciones de HTML, los diseñadores se volvieron creativos y utilizaron filas y columnas de tablas para colocar elementos de página como encabezados de banners y barras laterales. Como verá en la Parte Tres de este libro, CSS hace un trabajo mucho mejor en el diseño de páginas web. Puede concentrarse en usar (y formatear) tablas para su propósito original: mostrar datos (Figura 11-1). 375 www.it-ebooks.info USO DE TABLAS La direccion correcta Figura 11-1 Puede hacer todo el diseño y el diseño de su página con CSS y usar tablas para lo que fueron diseñadas: mostrando filas y columnas de información. CSS creó las atractivas fuentes, bordes y colores de fondo en esta tabla sobre cortadoras de césped de interior, pero la estructura subyacente es todo gracias a HTML. HTML (y xHTML) tiene una sorprendente cantidad de etiquetas dedicadas a la creación de tablas. Este fragmento de HTML crea la tabla muy simple que se muestra en la figura 11-2. <tabla> <caption align="bottom"> Tabla 1: Resumen de cortacéspedes de interior de CosmoFarmer.com </título> <grupocol> <col class="marca" /> <col clase="precio" /> <col class="poder" /> </colgroup> <cabeza> <tr> <th alcance="col">Marca</th> 376 Css3: el manual perdido www.it-ebooks.info USO DE TABLAS <th scope="col">Precio</th> <th La direccion correcta scope="col">Fuente de energía</th> </ tr> </thead> <tbody> <tr> <td>Cortacésped para interiores Chinook Push-o-matic</ td> <td>$247.00</td> <td>Mecánica</td> </tr> <tr> <td>Segadora de lujo para apartamentos Sampson</ td> <td>$370.00</td> <td>Mecánica</td> </tr> </tbody> </tabla> Incluso con solo tres filas y tres columnas, la tabla usa nueve etiquetas HTML únicas: <tabla>, <título>, <colgroup>, <col>, <thead>, <tbody>, <tr>, <th>,y <td>.En general, más HTML no es bueno, y no necesita todas estas etiquetas: puede salirse con la suya solo con <tabla>, <tr>,y < td>etiquetas (y generalmente <th>también). Sin embargo, las diversas etiquetas de una tabla le brindan muchos ganchos útiles para colgar estilos CSS. Los encabezados de cada columna: el <th>etiquetas: pueden tener un aspecto diferente al de otras celdas de la tabla si crea un < th>estilo de etiqueta, y puede usar el <colgroup>etiqueta como una manera fácil de establecer el ancho de una columna de tabla. Esto le ahorra la molestia de tener que crear muchas clases, como .encabezado de tabla—y luego aplicarlos a mano a las celdas individuales de la tabla. En la siguiente sección, verá ejemplos de cómo puede usar estas diferentes etiquetas para su beneficio. Figura 11-2 Las tablas de datos, como esta, generalmente tienen encabezados creados con el<th>etiqueta. Las celdas de encabezado anuncian qué tipo de información aparece en una fila o columna. El precio le dice que encontrará el costo de cada cortadora de césped en las celdas a continuación. Los datos reales presentados en una tabla están encerrados en<td>etiquetas Capítulo 11:FORMATO DE TABLAS Y FORMULARIOS www.it-ebooks.info 377 ESTILO Mesas NotaPara obtener un artículo detallado sobre el HTML utilizado para crear tablas, visitewww.456bereastreet.com/ archive/200410/bring_on_the_tables. Mesas de estilo Puede usar muchas de las propiedades CSS sobre las que ha leído para mejorar la apariencia de una tabla y su contenido. Puedes usar elcolorpropiedad, por ejemplo, para establecer el color del texto de una tabla, como en cualquier otro lugar. Sin embargo, encontrará algunas propiedades que son particularmente útiles con las tablas, así como un par dirigido específicamente a formatear tablas. Debido a que las tablas se componen de varias etiquetas HTML, es útil saber a qué etiqueta aplicar una propiedad CSS en particular. Aplicar relleno a un <mesa>la etiqueta, por ejemplo, no tiene ningún efecto. Las siguientes secciones cubren las propiedades de CSS para formatear tablas y con qué etiquetas HTML se llevan bien. Agregar relleno Como leyó en la página 195, el relleno es el espacio entre el borde de un elemento y su contenido. Puede usar el relleno para proporcionar un pequeño espacio entre los bordes del texto de un párrafo y su borde. Cuando se trata de tablas, los bordes son losbordes de una celda, por lo que el relleno agrega espacio alrededor de cualquier contenido que haya colocado dentro de una celda de la tabla (vea la Figura 11-2). Funciona muy parecido al viejo.relleno celularatributo, que ya no es válido en HTML5, con el beneficio adicional de que puede controlar individualmente el espacio entre el contenido de una celda y cada uno de sus cuatro bordes. Aplica relleno a un encabezado de tabla o a una etiqueta de celda de tabla, peronoa la <mesa> etiquetarse a sí mismo. Entonces, para agregar 10 píxeles de espacio al interior de todas las celdas de la tabla, use este estilo: td, th { relleno: 10px; } También puede controlar el espaciado por separado para cada borde. Para agregar 10 píxeles de espacio en la parte superior de cada celda de datos de la tabla, 3 píxeles en la parte inferior de esa celda y 5 píxeles en los lados izquierdo y derecho, cree este estilo: td { acolchado superior: 10px; relleno derecho: 5px; relleno inferior: 3px; relleno-izquierda: 5px; } O bien, utilice elrellenopropiedad de acceso directo: td { relleno: 10px 5px 3px 5px; } 378 Css3: el manual perdido www.it-ebooks.info CONSEJOSi coloca una imagen en una celda de tabla usando el <imagen>etiqueta y observe que hay un espacio no deseado debajo de la imagen, luego configure sumostrarpropiedad (página 202) abloquear.Para más información, verhttp:// ESTILO Mesas desarrollador. mozilla.org/en/docs/Images,_Tables,_and_Mysterious_Gaps. Ajuste de la alineación vertical y horizontal Para controlar dónde se coloca el contenidodentrouna celda de la tabla, use eltexto alineadoy alineación verticalpropiedades. Texto alineadocontrola el posicionamiento horizontal y se puede configurar paraizquierda, derecha, centro, yjustificar (consulte la Figura 11-3). Es una propiedad heredada. (Consulte el Capítulo 4 para obtener más información sobre la herencia). Cuando desee alinear a la derecha el contenido de todas las celdas de la tabla, cree un estilo como este: tabla { texto-alinear: derecha; } Esta propiedad es útil con <th>etiquetas, ya que los navegadores generalmente las alinean al centro. Un estilo simple comoº { texto-alinear: izquierda; }hace que los encabezados de las tablas se alineen con las celdas de la tabla. Figura 11-3 Cuando se aplica a las celdas de una tabla, el CSStexto alineadola propiedad funciona como el<td>atributo de alineación de la etiqueta. Saltar el HTML alinear atributo, sin embargo, ya que ya no es válido en HTML5, y CSS le permite almacenar la información de estilo en una hoja de estilo externa. De esa manera, si decide que necesita cambiar la alineación en las celdas de su tabla de derecha a izquierda, entonces necesita actualizar solo la hoja de estilo externa, no 10,000 individuales.<td> etiquetas Las celdas de la tabla también tienen una altura. Los navegadores web normalmente alinean el contenido verticalmente en el medio de una celda de la tabla (vea el ejemplo del medio en la Figura 11-4). Puede controlar este comportamiento utilizando elalineación verticalpropiedad. Utilice uno de estos cuatro valores: arriba, línea de base, medio,oabajo. Arribaempuja el contenido a la parte superior de la celda,medio contenido de los centros, yabajoempuja la parte inferior del contenido a la parte inferior de la celda.Base funciona igual quearriba,excepto que el navegador alinea la línea de base de la primera línea de texto en cada celda de una fila (Figura 11-4). A menos que sea un verdadero perfeccionista, ni siquiera notará la sutileza de la opción de línea de base. Más importante aún, sus visitantes tampoco lo harán. A diferencia de texto alineado,elalineación verticalLa propiedad no se hereda, por lo que solo puede usarla en estilos que se aplican directamente a <th>y <td>etiquetas Capítulo 11:FORMATO DE TABLAS Y FORMULARIOS www.it-ebooks.info 379 ESTILO Mesas NotaHasta ahora, el formato de tabla que ha aprendido se aplica atodotus mesas Cuando desee diseñar tablas individuales (o celdas de tabla), cambie el selector que utiliza. Para aplicar un diseño especial a una tabla determinada, asígnele un nombre de clase—<clase de tabla="acciones">—y crear selectores descendientes como .las existencias tdolas existenciaspara formatear celdas individuales de forma única. Si desea aplicar un estilo diferente a una celda en particular que a otras celdas de una tabla, luego aplique una clase a la etiqueta—<td class="subtotal">—y cree un estilo de clase para formatear esa celda. Figura 11-4 Elalineación verticalproperty es el equivalente CSS de (ahora obsoleto) <td>etiquetasvaleroso atributo. Cuando se aplica relleno a una celda, el contenido nunca se alinea con las líneas del borde inferior o superior: siempre hay un espacio igual a la configuración del relleno. Puede controlar el tamaño del relleno (consulte la página 195). Creación de bordes el cssbordeproperty (página 202) funciona prácticamente igual con las tablas que con otros elementos, pero debe tener en cuenta un par de cosas. Primero, aplicar un borde a un estilo que formatea el <mesa>etiqueta describe solo la tabla, no ninguna de las celdas individuales. En segundo lugar, aplicar bordes a las celdas (td { borde: 1px negro sólido; })lo deja con un espacio visual entre las celdas, como se muestra en la Figura 11-5, arriba. Para obtener el control de cómo aparecen los bordes, debe comprender cómo los navegadores web normalmente dibujan las celdas de las tablas y el CSS.borde-colapsopropiedad. • Controlar el espacio entre las celdas de la tabla.A menos que se indique lo contrario, los navegadores separan las celdas de la tabla en un par de píxeles. Esta brecha es realmente notable cuando aplica un borde a las celdas de la tabla. CSS te da laespaciado de bordes propiedad para controlar este espacio. Aplique esta propiedad a la tabla en sí, y si desea eliminar el espacio que los navegadores normalmente colocan entre las celdas, configure el espaciado de bordespropiedad a0: mesa { espaciado de borde: 0; } 380 Css3: el manual perdido www.it-ebooks.info Por supuesto, si te gusta el espacio entre las celdas, agrega espacio: mesa { ESTILO Mesas espaciado de borde: 2px; } • Eliminación de bordes dobles.Incluso si elimina el espacio entre celdas de una tabla, los bordes aplicados a las celdas de la tabla se duplican. Es decir, el borde inferior de una celda se suma al borde superior de la celda colgante, creando una línea que es dos veces más gruesa que la configuración del borde (Figura 11-5, centro). La mejor manera de eliminar esto (y eliminar el espacio entre celdas al mismo tiempo) es usar elborde-colapso propiedad. Acepta dos valores—separadoycolapsar.ElseparadoLa opción es normalmente cómo se muestran las tablas, con los espacios de las celdas y los bordes duplicados. Al contraer los bordes de una tabla, se eliminan los espacios y los bordes duplicados (Figura 11-5, abajo). Aplica elcolapsarvalor a un estilo que formatea una tabla, así: tabla { borde-colapso: colapsar; } NotaSi configura elborde-colapsopropiedad acolapso, espaciado de bordesno tiene efecto. • Esquinas redondeadas.Puedes usar elborde-radio(página 207) para agregar esquinas redondeadas a las celdas de la tabla (pero no a las tablas en sí). Por ejemplo, si desea delinear las celdas de la tabla y darles esquinas redondeadas, puede crear este estilo: td { borde: 1px negro sólido; borde-radio: 5px; } Tenga en cuenta que si configura elborde-colapsopropiedad acolapsar,entonces los navegadores ignoran cualquierborde-radioha configurado para las celdas de la tabla; simplemente dibujarán esquinas cuadradas regulares. NotaIncluso puedes aplicar elsombra de la cajapropiedad (página 210) a tablas y celdas. Si lo aplica a una tabla, la sombra aparecerá fuera de toda la tabla, pero si aplica la sombra a celdas individuales, cada celda tendrá su propia sombra paralela. Estilo de filas y columnas Agregar rayas, como las de la Figura 11-6, es una técnica de diseño de mesa común. Al alternar la apariencia de cada fila de datos, facilita que las personas detecten los datos en cada fila. Afortunadamente, CSS ofrece una forma de hacerlo. Utilizando elenésimo de tiposelector, sobre el que leyó en la página 78, puede agregar diferentes fondos a las filas pares e impares: tr: enésimo tipo (impar) { color de fondo: rojo; } tr: enésimo de tipo (par) { color de fondo: azul; } Capítulo 11:FORMATO DE TABLAS Y FORMULARIOS www.it-ebooks.info 381 ESTILO Mesas Si no desea aplicar el mismo fondo a las filas impares de todas sus tablas, simplemente agregue un nombre de clase a la tabla que desea orientar (productos,para una tabla con información de productos, por ejemplo), luego use un selector descendente como este: . productos tr: enésimo de tipo (impar) { color de fondo: rojo; } . productos tr: enésimo de tipo (par) { color de fondo: azul; } Figura 11-5 Los navegadores normalmente insertan espacio entre cada celda de la tabla. (Probablemente no notará este espacio adicional a menos que haya agregado un borde, como se muestra aquí en la parte superior). Si configura el espaciado de bordesa0para eliminar el espacio adicional, le quedan líneas de borde dobles donde se tocan los bordes contiguos (centro). Elborde-colapsoLa propiedad resuelve ambos dilemas (abajo). Tampoco estás limitado a los colores. Puede usar imágenes de fondo (consulte la página 240) o incluso degradados lineales (página 260) para crear apariencias más sofisticadas, como la ligera gradación en la fila del encabezado de la tabla de la Figura 11-6. (Verá un ejemplo similar de esto en el tutorial en la página 393). También puede usar un selector descendente para seleccionar celdas en esa fila. Esta técnica es excelente para diseñar todas las celdas de una columna con su propio aspecto: <td clase="precio">,Por ejemplo. NotaElenésimo de tiposelector no es compatible con Internet Explorer 8 o anterior. 382 Css3: el manual perdido www.it-ebooks.info ESTILO Mesas Formatear columnas es un poco más complicado. HTML proporciona el <colgroup>y <columna> etiquetas para indicar grupos de columnas y columnas individuales, respectivamente. incluyes uno <col>etiqueta para cada columna de la tabla y puede identificarlas con una clase o ID. (Consulte el código HTML en la página 376). Solo funcionan dos conjuntos de propiedades en estas etiquetas: anchoy las propiedades de fondo (color de fondo, imagen de fondo, etcétera). Pero pueden ser muy útiles. Cuando desee establecer el ancho de todas las celdas en una columna, puede omitir cualquier atributo HTML y simplemente diseñar la columna, usando un estilo aplicado a <columna>etiqueta. Por ejemplo, supongamos que tiene este bit de HTML: <col clase="precio">.Puede agregar este estilo a una hoja de estilo para establecer el ancho de cada celda en esa columna en 200 píxeles: . precio { ancho: 200px; } Figura 11-6 Alternando la espaldael color de fondo de una fila a otra en una tabla facilita la identificación rápida de los datos de cada fila. Para resaltar una columna, puede usar las propiedades de fondo. Nuevamente, suponga que tiene un <columna>etiqueta con una clase deprecioaplicado a ella: . precio { color de fondo: #F33; } Sin embargo, tenga en cuenta que los fondos de las columnas aparecen debajo de las celdas de la tabla, por lo que si establece un color de fondo o una imagen para <td>o <th>etiquetas, el fondo de la columna no será visible. Capítulo 11:FORMATO DE TABLAS Y FORMULARIOS www.it-ebooks.info 383 ESTILO FormularioMS NotaPor lo general, los navegadores web muestran el borde y el color de fondo de cualquier celda de tabla vacía. Si desea ocultar esas celdas vacías, CSS se lo permite. Solo agregaceldas vacías: ocultara un estilo aplicado a una tabla: mesa { celdas vacías: ocultar; } Sin embargo, una advertencia: si configura elborde-colapsopropiedad (página 380) acolapsar,los navegadores ignoran elceldas vaciaspropiedad y mostrar los bordes y fondos incluso de las celdas vacías. Formas de estilo Los formularios web son la forma principal en que los visitantes interactúan con un sitio web. Al proporcionar información en un formulario, puede unirse a una lista de correo, buscar en una base de datos de productos, actualizar su perfil personal en Facebook o pedir el juego Star Wars Lego que le ha gustado. No hay ninguna razón por la que sus formularios deban parecerse a todos los demás en Internet. Con un poco de CSS, puede diseñar campos de formulario para compartir el mismo formato que otros elementos del sitio, como fuentes, colores de fondo y márgenes. No hay propiedades CSS específicas para los formularios, pero puede aplicar casi cualquier propiedad de este libro a un elemento de formulario. Los resultados, sin embargo, pueden ser mixtos (ver Figura 11-7). Los navegadores varían en la forma en que manejan el estilo de los elementos del formulario. La siguiente sección le dice qué propiedades funcionan mejor con qué etiquetas de formulario y también enumera qué navegadores las interpretan correctamente. Hasta la velocidad Mantenerse fiel a la forma Aparte de la compatibilidad variable del navegador con los formularios de Agregar un borde punteado a un campo de formulario puede convertir un campo de estilo CSS, existen buenas razones para andar con cuidado al modificar el texto fácilmente reconocible en un cuadro que se omite fácilmente. (Vea los ejemplos en aspecto de los elementos de la interfaz universalmente reconocidos, como los la parte inferior derecha y en la parte inferior central de la Figura 11-7.) Si ese cuadro de botones de envío y los menús desplegables. La mayoría de los internautas ya texto está destinado a capturar direcciones de correo electrónico para su boletín están muy familiarizados con el aspecto y el funcionamiento de los formularios. informativo, puede perder algunos visitantes que lo salten directamente. Como mínimo, El aspecto genérico de un botón de envío es el mismo de un sitio a otro. asegúrese de que las personas puedan reconocer los formularios de sus sitios como Cuando las personas lo ven, saben instantáneamente qué hace ese botón y formularios. cómo usarlo. Si modifica el aspecto de un formulariotambiénmucho, puede dificultar que los visitantes completen su formulario correctamente. 384 Css3: el manual perdido www.it-ebooks.info ESTILO FormularioMS Figura 11-7 Los navegadores varían en la forma en que manejan el estilo de los campos de formulario. Internet Explorer 9 (arriba) no admite esquinas redondeadas ni sombras paralelas en un área de texto (consulte el área de Texto en el panel Bordes a la derecha). Tampoco comprende el degradado lineal aplicado al botón Enviar en el panel de Fondos del medio. Las diferencias entre Chrome (segundo desde arriba), Firefox (segundo desde abajo) y Safari (abajo) no son tan drásticas, pero todavía hay algunas inconsistencias visuales entre ellos. Lo mejor que puede hacer es diseñar sus formularios con cuidado y no esperar que se vean igual en todos los navegadores. Capítulo 11:FORMATO DE TABLAS Y FORMULARIOS www.it-ebooks.info 385 ESTILO FormularioMS Elementos de formulario HTML Una variedad de etiquetas HTML lo ayudan a crear formularios. Puede formatear algunos de ellos (como campos de texto) con más éxito que otros (botones de opción). Aquí hay algunas etiquetas de formulario comunes y los tipos de propiedades con las que se llevan bien: • Conjunto de campos.El <conjunto de campos>preguntas de formulario relacionadas con grupos de etiquetas. La mayoría de los navegadores hacen un buen trabajo al mostrar colores de fondo, imágenes de fondo y bordes para esta etiqueta. Sin embargo, Internet Explorer permite que el fondo fluya hacia arriba y sobre la línea superior del conjunto de campos. (Mire el panel central de la imagen superior en la Figura 11-7.) El relleno coloca espacio desde los bordes del conjunto de campos hasta el contenido dentro de él. Aunque, lamentablemente, Internet Explorer ignora el relleno superior, puede simularlo agregando un relleno superiormargenal primer elemento dentro del fieldset. • Leyenda.El <leyenda>la etiqueta sigue el HTML para el <conjunto de campos>etiqueta y proporciona una etiqueta para el grupo de campos. La leyenda aparece centrada verticalmente en el borde superior de un conjunto de campos. Si los elementos del formulario para recopilar una dirección de envío aparecen dentro del conjunto de campos, puede agregar una leyenda como esta: <leyenda>Dirección de envío</leyenda>.Puedes usar CSS para cambiar el <leyenda>las propiedades de fuente de la etiqueta, agregue colores e imágenes de fondo y agregue sus propios bordes. • Campos de texto.El <tipo de entrada="texto">, <tipo de entrada"contraseña">,y <área de texto> las etiquetas crean cuadros de texto en un formulario. Estas etiquetas le brindan el control CSS de navegador cruzado más consistente. Puede cambiar el tamaño de fuente, la familia de fuentes, el color y otras propiedades de texto para los cuadros de texto, así como agregar bordes, colores de fondo e imágenes. Puede establecer el ancho y alto de estos campos usando el CSSancho yalturapropiedades. • Botones.Botones de formulario, como <tipo de entrada="enviar">—permita que sus visitantes envíen un formulario, restablezcan su contenido o activen alguna otra acción. La mayoría de los navegadores le permiten volverse loco con el formato del texto, los bordes, los fondos, las sombras paralelas y las esquinas redondeadas. También puede alinear el texto del botón a la izquierda, al centro o a la derecha con eltexto alineadopropiedad. Los degradados lineales (página 260) se ven especialmente bien en los botones. • Menús desplegables.Menús desplegables creados por <seleccionar>La etiqueta también le brinda una buena cantidad de control de estilo. La mayoría de los demás navegadores también le permiten configurar la fuente, el tamaño de la fuente, el color de fondo, la imagen y los bordes. Sin embargo, los fondos y las imágenes de fondo no siempre se agregan al menú desplegable cuando se expande para mostrar todas las opciones del menú. • Casillas de verificación y botones de radio.La mayoría de los navegadores no permiten formatear estos elementos. Opera, sin embargo, le permite establecer un color de fondo que apareceadentro la caja o el botón. Internet Explorer agrega un color de fondoalrededorla caja o el botón. Debido a que los navegadores varían mucho en la forma en que tratan estos elementos, es mejor dejarlos solos. 386 Css3: el manual perdido www.it-ebooks.info ESTILO FormularioMS CLÍNICA DE USUARIOS ELÉCTRICOS Atributo: el selector de campo de formulario definitivo Cuando se trata de dar estilo a los formularios, los estilos de etiquetas simplemente no determinar qué tipo de elemento de formulario <entrada>produce la etiqueta. cortan la mostaza. Después de todo, los cuadros de texto, los botones de radio, las El valor de tipo para un campo de texto de formulario estexto.Para crear un casillas de verificación, los campos de contraseña y los botones comparten la misma estilo que haga que el color de fondo de todos los campos de texto de una sola etiqueta HTML: <entrada>.Si bien un ancho de 200 píxeles tiene sentido para un cuadro línea sea azul, debe crear este selector y estilo: de texto, probablemente no desee que sus casillas de verificación sean tan grandes, por entrada[tipo="texto"] { lo que no puede usar el <entrada>etiqueta para dar formato al ancho. Por ahora, la forma más compatible con todos los navegadores de formatear solo campos de texto sería agregar un nombre de clase a cada campo de texto como <tipo de entrada="texto" color de fondo: azul; } clase="campo de texto" nombre="correo electrónico">—y luego cree un estilo de clase Cambiandotextoen el ejemplo anterior paraentregarcrea un estilo solo para formatearlo. para los botones de envío, y así sucesivamente. Sin embargo, puede aprovechar el selector de atributos Todos los navegadores actuales, incluso Internet Explorer 7, entienden los (página 72) para ajustar el estilo de su formulario sin recurrir selectores de atributos, así que siéntete libre de usarlos para diseñar tus a las clases. formularios con precisión. Un selector de atributos apunta a una etiqueta HTML en función de uno de los atributos de la etiqueta. Eltipoatributo es responsable de Diseño de formularios usando CSS Todo lo que se necesita para crear un formulario es agregar un montón de etiquetas y otros elementos de formulario a una página web. Visualmente, sin embargo, puede terminar con un desorden caótico (consulte la Figura 11-8, a la izquierda). Los formularios generalmente se ven mejor cuando las preguntas y los campos del formulario están organizados en columnas (Figura 11-8, derecha). Puede lograr este efecto de un par de maneras. El enfoque más sencillo es con una tabla HTML. Aunque las etiquetas y los campos de los formularios no son estrictamente datos de tabla, se prestan maravillosamente a un formato de fila/columna. Simplemente coloque sus etiquetas ("Nombre", "Número de teléfono", etc.) en una columna y campos de formulario en una segunda columna. Usando CSS, también puede crear un formulario de dos columnas como la Figura 11-8 (con el beneficio adicional de menos código HTML). Aquí está el enfoque básico: 1.Envuelva cada etiqueta en una etiqueta. La opción obvia para una etiqueta es <etiqueta>,ya que está diseñado para identificar etiquetas de formulario. pero no puedessiempreusar <etiqueta>etiquetas para todas las etiquetas. Los botones de radio suelen tener una pregunta como "¿Cuál es tu color favorito?" seguido por separado <etiqueta>etiquetas para cada botón. Entonces, ¿qué etiqueta usas para la pregunta? En este caso, debe recurrir a envolver la pregunta en un <lapso>etiqueta: <span>¿Cuál es tu color favorito?</span>.Luego agregue una clase a cada una de estas etiquetas—<abarcan clase="etiqueta">—y también agregue la clase solo a esos <etiqueta>etiquetas que desea que aparezcan en la columna de la izquierda (en la Figura 11-8, serían las etiquetas para "Nombre", "Apellido", etc., pero no el <etiqueta>etiquetas para los botones de opción). Capítulo 11:FORMATO DE TABLAS Y FORMULARIOS www.it-ebooks.info 387 ESTILO NotaVisitawww.htmldog.com/guides/htmladvanced/formspara obtener una descripción general rápida de <etiqueta>etiqueta. FormularioMS Figura 11-8 Las diferentes formas y tamaños de los cuadros de texto, los botones de opción y otros objetos de formulario no se alinean bien de forma natural con el texto, lo que a menudo provoca un patrón en zigzag poco elegante. Esta forma no es solo fea; es difícil de leer (izquierda). La solución es organizar sus formularios en columnas (derecha), usando ya sea una tabla HTML o estilos CSS. 2.Establezca la propiedad de visualización enbloque en línea,y establecer un ancho. Normalmente el <etiqueta>y <lapso>Las etiquetas son elementos en línea, que normalmente ignoran muchas de las configuraciones disponibles para bloquear elementos, incluyendoancho, alto, ytexto alineado.Sin embargo, si convierte la etiqueta en unbloque en línea,todavía puede sentarse al lado (esa es la parte "en línea") del campo de formulario. ElanchoEl valor debe proporcionar suficiente espacio para acomodar toda la etiqueta en una línea si es posible. Puede crear un estilo de clase que se vea así: . etiqueta { pantalla: bloque en línea; ancho: 20em; } Elanchoybloque en líneaLa configuración convierte las etiquetas en pequeños bloques de tamaño uniforme y proporciona un borde izquierdo limpio con el que se alinean todos los campos del formulario. 3.Ajusta el estilo. Solo un par de mejoras más completan el trabajo. Quiere configurar el alineación verticalpropiedad (página 379) aarriba,para que la parte superior del texto de la etiqueta se alinee con la parte superior del campo de formulario. También debe alinear el texto de la etiqueta a la derecha, de modo que cada etiqueta aparezca junto a cada campo de formulario. Finalmente, al agregar un poco de margen derecho, puede crear un espacio en blanco agradable entre las etiquetas y los campos de formulario. 388 Css3: el manual perdido www.it-ebooks.info Traducido del inglés al español - www.onlinedoctranslator.com ESTILO NotaVisitawww.htmldog.com/guides/htmladvanced/formspara obtener una descripción general rápida de <etiqueta>etiqueta. FormularioMS Figura 11-8 Las diferentes formas y tamaños de los cuadros de texto, los botones de opción y otros objetos de formulario no se alinean bien de forma natural con el texto, lo que a menudo provoca un patrón en zigzag poco elegante. Esta forma no es solo fea; es difícil de leer (izquierda). La solución es organizar sus formularios en columnas (derecha), usando ya sea una tabla HTML o estilos CSS. 2.Establezca la propiedad de visualización enbloque en línea,y establecer un ancho. Normalmente el <etiqueta>y <lapso>Las etiquetas son elementos en línea, que normalmente ignoran muchas de las configuraciones disponibles para bloquear elementos, incluyendoancho, alto, ytexto alineado.Sin embargo, si convierte la etiqueta en unbloque en línea,todavía puede sentarse al lado (esa es la parte "en línea") del campo de formulario. ElanchoEl valor debe proporcionar suficiente espacio para acomodar toda la etiqueta en una línea si es posible. Puede crear un estilo de clase que se vea así: . etiqueta { pantalla: bloque en línea; ancho: 20em; } Elanchoybloque en líneaLa configuración convierte las etiquetas en pequeños bloques de tamaño uniforme y proporciona un borde izquierdo limpio con el que se alinean todos los campos del formulario. 3.Ajusta el estilo. Solo un par de mejoras más completan el trabajo. Quiere configurar el alineación verticalpropiedad (página 379) aarriba,para que la parte superior del texto de la etiqueta se alinee con la parte superior del campo de formulario. También debe alinear el texto de la etiqueta a la derecha, de modo que cada etiqueta aparezca junto a cada campo de formulario. Finalmente, al agregar un poco de margen derecho, puede crear un espacio en blanco agradable entre las etiquetas y los campos de formulario. 388 Css3: el manual perdido www.it-ebooks.info ESTILO . etiqueta { FormularioMS flotador izquierdo; ancho: 20em; alineación vertical: superior; alineación de texto: derecha; margen derecho; 15 píxeles; } En este punto, tienes una forma simple y ordenada. Puede realizar otras mejoras si lo desea, como poner las etiquetas en negrita y de un color diferente. El tutorial que comienza en la página siguiente proporciona un ejemplo paso a paso de esta técnica. CLÍNICA DE USUARIOS ELÉCTRICOS Formar pseudo-clases Hay un puñado de pseudoclases destinadas a diseñar formularios. El : un campo de texto deshabilitado o active una casilla de verificación enfocarpseudo-clase le permite crear un selector que cambia la deshabilitada. Solo puede cambiar el estado de un elemento de formulario (de apariencia de un campo de texto cuando un visitante hace clic o tabula deshabilitado a habilitado, por ejemplo) usando JavaScript, por lo que deberá dentro de él (esto se denomina dar al campoenfocar). Puede usar esto aprender eso para aprovechar realmente:activadoo :desactivadopseudo-clases. para cambiar el tamaño, el color de fondo, la fuente y otras propiedades Sin embargo, pueden ser útiles. Por ejemplo, supongamos que tiene un CSS del campo. Verá un ejemplo en acción en el tutorial de la página formulario de pedido con campos de dirección de "facturación" y "envío". Si 395. agregó una casilla de verificación "igual que la dirección de facturación" junto a El :comprobadopseudo-clase funciona con botones de radio y casillas de verificación. Su objetivo es permitirle diseñar esos elementos, pero los navegadores web generalmente mantienen un estricto control visual sobre estos campos, y la mayoría de las propiedades de CSS no se aplican. Sin embargo, si quiere probarlos, simplemente puede crear un estilo llamado los campos de dirección de envío, un visitante puede hacer clic en esta casilla. Usando JavaScript, puede deshabilitar los campos de dirección de envío para que nadie los escriba accidentalmente. Para dejar en claro que el usuario no puede completarlos, puede cambiar su estilo para que se vean "atenuados" o atenuados, así: :comprobadoy agréguele algunas propiedades CSS. Tenga en cuenta que solo :desactivado { se aplicará a los botones de radio y casillas de verificación de un formulario. Si color de fondo: #333; } desea diseñar una casilla de verificación en particular cuando está marcada, puede crear un estilo de clase: Incluso hay más pseudoclases destinadas a trabajar con algunas de las . especial: marcado funciones de formulario especiales de HTML5, como la validación de formulario integrada u otras propiedades especiales. Para obtener más información sobre Y luego aplique esa clase solo a esa casilla de verificación: <tipo de entrada="casilla de verificación" clase="especial"... Los elementos de formulario también se pueden habilitar o deshabilitar. Cuando está estos, visitehttp://html5doctor.com/css3-pseudo-classes-and-html5-forms/. Sin embargo, tenga en cuenta que muchos navegadores aún no son compatibles con estas funciones de formulario HTML5. deshabilitado, el campo no se puede cambiar: por ejemplo, no se puede escribir en Capítulo 11:FORMATO DE TABLAS Y FORMULARIOS www.it-ebooks.info 389 Tutorial: ESTILIZANDO UN Mesa Tutorial: aplicar estilo a una tabla HTML es excelente para crear tablas, pero necesita CSS para darles estilo. Como puede ver en la página 375, se necesita bastante HTML para construir una tabla simple. Por suerte para ti, este libro viene con una tabla HTML preconstruida para que practiques tu CSS. En este tutorial, dará formato a las filas, columnas y celdas de la tabla y le dará una fuente y un color de fondo atractivos. Para comenzar, descargue los archivos del tutorial que se encuentran en el sitio web complementario de este libro en www.sawmac.com/css3/. Haga clic en el enlace del tutorial y descargue los archivos. Todos los archivos están encerrados en un archivo zip, por lo que primero debe descomprimirlos. (Visite el sitio web para obtener instrucciones detalladas). Los archivos de este tutorial se encuentran en el11→mesacarpeta. 1.Inicie un navegador web y abra el archivo.11→mesa→tabla.html. Esta página contiene una tabla HTML simple. Tiene un título, una fila de encabezados de tabla y nueve filas de datos contenidos en las celdas de la tabla (Figura 11-9). además, el <col>La etiqueta se usa tres veces para identificar las tres columnas de datos. Como verás en un momento, <columna>es una etiqueta útil para diseñar, ya que le permitirá establecer el ancho de todas las celdas en una columna. Figura 11-9 Dar formato a una tabla con bordes, fondo colores y otras propiedades de CSS no solo hacen que una tabla HTML monótona (arriba) se vea genial, sino que también hace que los datos de la tabla sean más fáciles de leer (abajo). 390 Css3: el manual perdido www.it-ebooks.info Tutorial: ESTILIZANDO UN 2.abiertotabla.htmlen un editor de texto. Mesa Comenzará creando un estilo que establezca el ancho de la tabla y la fuente del texto. Esta tabla tiene una clase deinventarioaplicado a él, por lo que puede usar un selector de clase para formatear solo esta tabla. NotaYa hay una hoja de estilo externa adjunta a esta página, pero agregará sus nuevos estilos a una hoja de estilo interna. 3.Haga clic entre la apertura y el cierre <estilo>etiquetas y, a continuación, agregue el siguiente estilo: . inventario { familia de fuentes: "Trebuchet MS", Arial, Helvetica, sans-serif; ancho: 100%; margen superior: 25px; } A menos que establezca el ancho de una tabla, crece y se reduce para ajustarse al tamaño del contenido que contiene. En este caso, ha establecido un ancho del 100 por ciento, por lo que la tabla se estira para ajustarse al ancho completo de su contenedor. (En este caso, es el <cuerpo>etiqueta en sí misma, con un ancho establecido yautomárgenes izquierdo y derecho para centrarlo en la ventana del navegador). Configuración de la familia de fuentes en el <mesa>usa la herencia para dar a todas las etiquetas dentro de la tabla la misma fuente—<título>,encabezados de tabla (<th>),celdas de la tabla (< td>),etcétera. Finalmente, elmargen superiorLa propiedad desliza la tabla hacia abajo desde el título que se encuentra arriba. A continuación, diseñará el título de la tabla. 4.Agregue otro estilo debajo del estilo de tabla que acaba de crear: . título de inventario { text-align: right; tamaño de fuente: 1,3 em; margen inferior: 10px; } Este selector descendente solo afecta a <subtítulo>etiqueta que aparece dentro de otra etiqueta con el ID deinventario (ese es el <mesa>en esta página). un <subtítulo>La etiqueta indica de qué se trata una tabla. En este caso, no debería ser el centro de atención, por lo que mantuvo el texto pequeño y lo movió hacia el borde derecho, fuera del camino. El margen inferior agrega un poco de espacio entre el título y la tabla. Cuando lee información en una fila de la tabla, es fácil perder la noción de qué fila está mirando. Las buenas guías visuales son esenciales. Agregar bordes alrededor de las celdas, lo que hará a continuación, delinea visualmente la información. Capítulo 11:FORMATO DE TABLAS Y FORMULARIOS www.it-ebooks.info 391 Tutorial: ESTILIZANDO UN Mesa 5.Agregue el siguiente estilo de grupo a la hoja de estilo interna: . inventario td, .inventario th { tamaño de fuente: 1.1em; borde: 1px sólido #DDB575; } Este selector de grupo formatea el encabezado de la tabla (<th>)y celda de la tabla (<td>)etiquetas de esta tabla con un tipo más grande y dibuja un borde alrededor de cada encabezado y cada celda. Los navegadores normalmente insertan espacios entre cada celda, por lo que en este punto hay pequeños espacios entre los bordes (Figura 11-10, dentro de un círculo). Entre los huecos y los bordes, toda la mesa parece demasiado cuadrada. Arreglarás eso a continuación. 6.Añade elborde-colapsopropiedad al estilo de tabla que creó en el Paso 3 para que se vea así: . inventario { familia de fuentes: "Trebuchet MS", Arial, Helvetica, sans-serif; ancho: 100%; margen superior: 25px; borde-colapso: colapso; } Elborde-colapsoLa propiedad elimina el espacio entre las celdas. También fusiona bordes que se tocan, lo que evita bordes gruesos y poco atractivos. Sin colapso de fronteras,el borde inferior del encabezado de una tabla y el borde superior de la celda de la tabla se duplicarían para formar un borde de dos píxeles. Si obtiene una vista previa de la tabla ahora, verá que los datos están mejor organizados visualmente, pero la información en cada celda se ve un poco apretada. Agregue algo de relleno para arreglar eso. 7.Agregue relleno al selector de grupo que creó en el Paso 5: . inventario td, .inventario th { tamaño de fuente: 1.1em; borde: 1px sólido #DDB575; relleno: 3px 7px 2px 7px; } Aunque la fila superior del encabezado de la tabla se destaca por su texto en negrita, hay algunas cosas que puede hacer para que se destaque aún más y mejore su apariencia. 8.Cree un nuevo estilo debajo del archivo .inventario td, .inventario thestilo para formatear solo celdas de encabezado de tabla: . inventario th { texttransform:mayúsculas; alineación de texto: izquierda; acolchado superior: 5px; parte inferior del relleno: 4px; } 392 Css3: el manual perdido www.it-ebooks.info Tutorial: Este estilo es un ejemplo perfecto de cascada eficaz. El selector de grupotd, thdefine las propiedades de formato comunes entre los dos tipos de celdas. Al presentar estees-solo estilo, ESTILIZANDO UN Mesa puede modificar aún más el aspecto dejustolos encabezados de la tabla. por ejemplo, el acolchado superioryfondo acolchadolas configuraciones aquí anulan las mismas configuraciones definidas en el selector en el Paso 7. Sin embargo, dado que no anula las configuraciones de relleno izquierda o derecha, el <th>Las etiquetas conservarán los siete píxeles de relleno izquierdo y derecho definidos en el Paso 7. Este estilo también cambia todo el texto a mayúsculas y lo alinea con el borde izquierdo de la celda de la tabla. Los encabezados de la tabla todavía no tienen suficiente empuje y la tabla parece retroceder al fondo de la página. Un gráfico de fondo puede proporcionar el impulso necesario. Figura 11-10 La visualización normal de un navegador de una tabla inserta un espacio entre cada celda (arriba). También permite que los bordes se dupliquen donde se tocan las celdas. Configuración de laborde-colapso propiedad acolapsarresuelve ambos problemas (abajo). 9.Editar elelestilo agregando un degradado lineal al fondo y cambiando el color del texto: . inventario th { texttransform:mayúsculas; alineación de texto: izquierda; acolchado superior: 5px; parte inferior del relleno: 4px; fondo: rgb(229,76,16); fondo: -webkit-linear-gradient(rgb(229,76,16), rgb(173,54,8)); fondo: -mozlinear-gradient(rgb(229,76,16), rgb(173,54,8)); fondo: -o-lineargradient(rgb(229,76,16), rgb(173,54,8)); Capítulo 11:FORMATO DE TABLAS Y FORMULARIOS www.it-ebooks.info 393 Tutorial: fondo: gradiente lineal (rgb (229,76,16), rgb (173,54,8)); color ESTILIZANDO UN Mesa blanco; } Comienza simplemente agregando un color RGB al fondo; de esa forma, Internet Explorer 9 y versiones anteriores (que no entienden de gradientes) al menos tienen un color sólido. Las siguientes tres líneas agregan las versiones del degradado lineal con el prefijo del proveedor, mientras que la penúltima línea es la versión oficial.gradiente linealsintaxis. Finalmente, el color del texto se cambia a blanco. Cuando las tablas tienen muchos datos en muchas filas y columnas, a veces es difícil identificar rápidamente qué datos pertenecen a cada fila. Afortunadamente, puedes usar elenésimo de tipoSelector para apuntar rápidamente a filas alternas. 10Agregue un estilo más a la hoja de estilo interna de la página web: . inventario tr:nth-of-type(even){ backgroundcolor: rgba(255,255,255,.1); } . inventario tr:nth-of-type(odd){ backgroundcolor: rgba(229,76,16,.1); } Como se puede leer en la página 78, elenésimo de tiposelector se utiliza para seleccionar elementos secundarios que siguen un patrón numérico; por ejemplo, cada quinto párrafo. En este caso, el primer estilo selecciona cada par <tr>etiqueta, mientras que el segundo selecciona cada impar <tr>etiqueta. Finalmente, ajustará el ancho de las celdas que se encuentran debajo de las columnas Precio y Calificación. Una técnica es agregar meticulosamente nombres de clase a esas celdas y crear un estilo de clase con un ancho establecido. Sin embargo, un mejor enfoque es aprovechar el < columna>etiqueta, que le permite asignar una clase o ID a las celdas de una columna. Como puede ver en la Figura 11-9, esas dos columnas tienen un ID de precioyclasificación.Puede configurar fácilmente el ancho de estas dos columnas con un selector de grupo. 11Agregue un estilo más a la hoja de estilo interna de la página web: # precio, #calificación { ancho: 15%; } Obtenga una vista previa de la página en un navegador web para ver los resultados. Su página debe parecerse a la imagen inferior de la Figura 11-9. También encontrarás el ejercicio completo en el 11_terminado→mesacarpeta. 394 Css3: el manual perdido www.it-ebooks.info Tutorial: ESTILIZANDO UN Tutorial: aplicar estilo a un formulario Forma Este tutorial le brinda práctica en el uso de CSS para organizar un formulario y hacerlo más atractivo. si abres11→forma→formulario.htmlen un navegador web, verá que contiene un formulario simple para suscribirse al sitio web ficticio, CosmoFarmer.com (Figura 11-11). El formulario hace varias preguntas y utiliza una variedad de elementos de formulario para la entrada, incluidos cuadros de texto, botones de opción y un menú desplegable. En lo que respecta a los formularios de suscripción, se ve bien, pero un poco soso. En los pasos de las siguientes páginas, arreglará las fuentes, alineará mejor las preguntas y los cuadros y agregará algunas otras mejoras. 1.abre el archivoformulario.htmlen un editor de texto. Ya hay una hoja de estilo externa adjunta a esta página, pero agregará sus nuevos estilos a una hoja de estilo interna. Comience por reducir el tamaño del tipo en el formulario. 2.Haga clic entre la apertura y el cierre <estilo>etiquetas y, a continuación, agregue el siguiente estilo: . subformulario { tamaño de fuente: 1,2 em; color blanco; familia tipográfica: Tahoma, Ginebra, sans-serif; } El formulario de suscripción tiene una clase desubformularioaplicado a él, por lo que este estilo establece el tamaño del texto, el color y la fuente para todo el texto entre la apertura y el cierre <formulario>etiquetas Es hora de trabajar en el diseño. Para alinear mejor los elementos del formulario, creará la apariencia de dos columnas: una para las preguntas (etiquetas) y otra para las respuestas (campos de formulario). Figura 11-11 Mientras que el HTML<mesa>La etiqueta es una forma común de organizar las preguntas de un formulario, también puede usar CSS para hacer un revoltijo desorganizado de etiquetas y campos de formulario (como los que se muestran aquí) y hacer que el diseño de un formulario sea más claro y atractivo. Capítulo 11:FORMATO DE TABLAS Y FORMULARIOS www.it-ebooks.info 395 Tutorial: ESTILIZANDO UN Forma 3.Agregue otro estilo a la hoja de estilo interna: . subformulario .label { display: inline-block; ancho: 200px; alineación vertical: superior; } Este selector descendiente identifica cualquier elemento con una clase de .etiquetadentro de este formulario. El estilo cambia las etiquetas de elementos en línea (que no aceptan valores de ancho) abloque en líneaelementos. La configuración de ancho establece el área de la etiqueta en 200 píxeles de ancho, mientras que la configuración de alineación vertical asegura que el texto de la etiqueta se alinee con la parte superior de los campos de formulario junto a ellos. Como resultado, cuando aplica este estilo a cada una de las preguntas del formulario, crea una columna de ancho uniforme. Pero para ver el efecto, primero debe aplicar la clase a los elementos de página apropiados. 4.En el HTML de la página, busque este código <etiqueta para="nombre">y añadirclase= "etiqueta",por lo que la etiqueta se ve así: <etiqueta para="nombre" clase="etiqueta"> Debes hacer lo mismo para cada pregunta del formulario, así que… 5.Repita el Paso 5 para las siguientes piezas de código HTML: <etiqueta para="correo electrónico">, < etiqueta para="referir">, <etiqueta para="comentarios">. Hay una pregunta adicional en el formulario:Califica tus habilidades de cultivo de apartamentos. no está dentro de unetiquetatag, ya que su finalidad es introducir una serie de botones de radio, cada uno de los cuales tiene su propia etiqueta. Necesitas agregar un <lapso>etiqueta a este texto para que pueda aplicar laetiquetaestilo a la misma. 6.Encuentra el textoCalifica tus habilidades de cultivo de apartamentos, y luego envuélvalo en un <lapso> etiqueta con una clase deetiqueta,al igual que: <span clase="etiqueta">Califica tus habilidades de cultivo de apartamentos</span> Ahora las preguntas parecen estar en una sola columna (Figura 11-12, arriba). Pero se verían mejor si destacaran más y se alinearan con los campos de formulario correspondientes. 7.Edite el .subformulario .etiquetaestilo que creó en el Paso 4, por lo que se ve así: . subformulario .label { display: inline-block; ancho: 200px; alineación vertical: superior; alineación de texto: derecha; margen derecho: 10px; fuente-peso: negrita; color: rgba(255,255,255,.5); } 396 Css3: el manual perdido www.it-ebooks.info Tutorial: Obtenga una vista previa de la página en un navegador web. El formulario debe parecerse a la imagen inferior ESTILIZANDO UN de la Figura 11-12. Forma El formulario está tomando forma, pero ese botón Suscribirse parece fuera de lugar en el borde izquierdo. A continuación, lo alineará con los otros elementos del formulario. Figura 11-12 A veces, los cambios pequeños y sutiles pueden hacer que un formulario sea más legible. Poner las preguntas en negrita en el formulario y alinearlas con sus elementos de formulario correspondientes (figura inferior) mejora inmediatamente el aspecto del formulario. 8.Agregue otro estilo a la hoja de estilo interna. . entrada de subformulario [tipo = "enviar"] { margen izquierdo: 220px; } Dado que los botones de envío se crean agregandotipo = "enviar"a un <entrada> etiqueta, simplemente puede usar un selector de atributos (página 72) para orientarlos. Esto lo libera de tener que crear un estilo de clase y aplicarlo al botón de enviar. Capítulo 11:FORMATO DE TABLAS Y FORMULARIOS www.it-ebooks.info 397 Tutorial: ESTILIZANDO UN Forma La mayoría de los navegadores también le permiten diseñar botones de otras maneras, así que... 9.Edite el estilo del botón Enviar agregando algunas propiedades más: . entrada de subformulario [tipo = "enviar"] { margen izquierdo: 220px; relleno: 10px 25px; tamaño de fuente: 1em; color blanco; } El relleno agrega espacio entre el texto dentro del botón y los bordes del botón, mientras que eltamaño de fuenteycolorpropiedades afectan el texto en el botón. Ahora puede ser más creativo y agregar un degradado al botón. 10Edite el estilo del botón Enviar de nuevo: . entrada de subformulario [tipo = "enviar"] { margen izquierdo: 220px; relleno: 10px 25px; tamaño de fuente: 1em; color blanco; fondo: rgb(0,102,153); fondo: -webkit-linear-gradient(rgba(255,255,255,.1) 40%, rgba(255,255,255,.5)); fondo: -moz-linear-gradient(rgba(255,255,255,.1) 40%, rgba(255,255,255,.5)); fondo: -o-linear-gradient(rgba(255,255,255,.1) 40%, rgba(255,255,255,.5)); fondo: gradiente lineal (rgba (255,255,255, .1) 40%, rgba (255,255,255, .5)); } Aquí establece un color de fondo estándar (para IE 9 y versiones anteriores) seguido de un degradado lineal. Hay dos paradas de color. El primer color se extiende desde la parte superior hasta el 40 por ciento del camino hacia el botón, luego comienza el degradado (para obtener un resumen de los degradados y las paradas de color, vaya a la página 262). Finalmente, modificará un poco el aspecto. Eliminará el borde estándar, redondeará las esquinas y agregará un resplandor alrededor del cuadro. 11Edite el estilo del botón Enviar por última vez (cambios en negrita): . entrada de subformulario [tipo = "enviar"] { margen izquierdo: 220px; relleno: 10px 25px; tamaño de fuente: 1em; color blanco; fondo: rgb(0,102,153); fondo: -webkit-linear-gradient(rgba(255,255,255,.1) 40%, 398 Css3: el manual perdido www.it-ebooks.info Tutorial: ESTILIZANDO UN rgba(255,255,255,.5)); fondo: -moz-linear-gradient(rgba(255,255,255,.1) 40%, Forma rgba(255,255,255,.5)); fondo: -o-linear-gradient(rgba(255,255,255,.1) 40%, rgba(255,255,255,.5)); fondo: gradiente lineal (rgba (255,255,255, .1) 40%, rgba (255,255,255, .5)); borde: ninguno; borde-radio: 5px; caja-sombra: 0 0 4px blanco; } Poner el borde enningunoelimina el borde que los navegadores normalmente dibujan alrededor del botón, mientras que elborde-radio(página 207) redondea las esquinas del botón. Finalmente, al agregar una sombra paralela sin compensación horizontal o vertical (esa es la0 0parte), puede agregar un resplandor a un elemento. En este caso, parece un ligero resplandor blanco que sale detrás del botón. NotaPuedes llevar este diseño de botón aún más lejos. Intente crear un estilo de rollover para él—.entrada de subformulario[tipo="enviar"]: pasar el cursor—y cambiar el color de fondo. ¡Incluso puedes animar esa transición usando la información que aprendiste en el capítulo anterior! Tienes las etiquetas de texto y el botón Suscribir que se ven muy bien, pero ¿por qué detenerse ahí? Es hora de animar los campos de formulario. Comience cambiando la fuente y los colores de fondo. 12Agregue un estilo para el menú Seleccionar del formulario: . subformulario seleccione { tamaño de fuente: 1.2em; } Esto solo aumenta un poco el tamaño del texto. Puede elegir una fuente, agregar un color de fondo y realizar otros cambios. Sin embargo, algunos navegadores (como Safari) realmente no le permiten diseñar mucho los menús desplegables, así que asegúrese de probar cualquier cambio de estilo que realice en los menús desplegables. Ahora es el momento de cambiar los campos de texto. 13Cree un nuevo selector de grupo para diseñar los tres cuadros de texto en el formulario: . subformulario entrada[tipo="texto"], .subformulario textarea { border-radius: 5px; borde: ninguno; color de fondo: rgba(255,255,255,.5); color: rgba(255,255,255,1); tamaño de fuente: 1,2 em; box-shadow: inserción 0 0 10px rgba(255,255,255,.75); } Capítulo 11:FORMATO DE TABLAS Y FORMULARIOS www.it-ebooks.info 399 Tutorial: ESTILIZANDO UN Forma Este estilo de grupo selecciona todos los elementos de entrada con el tipo detextoasí como los cuadros de texto multilínea (el <área de texto>etiqueta). Esto agrega varias propiedades con las que ya debería estar familiarizado, comoradio de borde, color de fondo, tamaño de fuente,y sombra de la caja).Los cuadros de texto se ven un poco pequeños, por lo que establecerá sus anchos y agregará un poco de relleno. 14Edite el estilo que acaba de crear estableciendo un ancho y relleno (cambios en negrita): . entrada de subformulario [tipo = "texto"], .subformulario textarea { tamaño de fuente: 1.2em; borde-radio: 5px; borde: ninguno; color de fondo: rgba(255,255,255,.5); color: rgba(255,255,255,1); tamaño de fuente: 1,2 em; box-shadow: inserción 0 0 10px rgba(255,255,255,.75); ancho: 500px; relleno: 5px; } Puede hacer que su formulario sea más fácil de completar para sus visitantes resaltando el elemento de formulario activo con el especial:enfocarpseudo-clase (página 70). Lo agregará en el siguiente paso. 15.Al final de la hoja de estilo interna, agregue un último estilo para el menú desplegable y los tres campos de texto: . entrada de subformulario [tipo = "texto"]: enfoque, .subformulario área de texto: enfoque { color de fondo: blanco; de color negro; } Obtenga una vista previa de la página en un navegador web. Ahora debería verse como la Figura 11-13 Puede encontrar una versión completa de este tutorial en el11_terminado→formacarpeta. 400 Css3: el manual perdido www.it-ebooks.info Tutorial: ESTILIZANDO UN Forma Figura 11-13 Utilizando el:pseudoclase de enfoque, tú puede hacer que sus formularios sean más interactivos resaltando los campos de formulario que utiliza el visitante. Aquí, puede ver que está a punto de escribir en el campo Comentarios debido a su color de fondo blanco. Capítulo 11:FORMATO DE TABLAS Y FORMULARIOS www.it-ebooks.info 401 www.it-ebooks.info PARTE Diseño de página CSS CAPÍTULO 12: Introducción al diseño CSS CAPÍTULO 13: Creación de diseños basados en flotadores CAPITULO 14: Diseño web adaptable CAPÍTULO 15: Posicionamiento de elementos en una página web www.it-ebooks.info 3 www.it-ebooks.info Capítulo 12 12 Introducción al diseño CSS C SS lleva una doble vida. Si bien es excelente para formatear texto, barras de navegación, imágenes y otros fragmentos de una página web, su poder verdaderamente increíble llega cuando está listo para diseñar páginas web completas. Mientras que HTML normalmente muestra el contenido en pantalla de arriba a abajo, con un elemento a nivel de bloque apilado tras otro, CSS le permite crear columnas una al lado de la otra y colocar imágenes o texto en cualquier lugar de la página (incluso en capas sobre otros elementos de la página) , para que pueda crear páginas web mucho más interesantes visualmente. Hay mucho en el diseño de CSS. Los siguientes tres capítulos cubren las técnicas CSS más importantes en detalle. Este capítulo proporciona una breve descripción de los principios detrás del diseño CSS y un puñado de pautas útiles para abordar sus propios desafíos de diseño. Tipos de diseños de página web Ser diseñador web significa lidiar con lo desconocido. ¿Qué tipo de navegadores utilizan sus visitantes? ¿Están viendo su sitio en un teléfono Android o en un iPad? El mayor problema que enfrentan los diseñadores es crear diseños atractivos para diferentes tamaños de pantalla. Los monitores varían en tamaño y resolución: desde pantallas de portátiles de 15 pulgadas y 640 x 480 píxeles hasta monstruosidades de 30 pulgadas que muestran unos 5 000 000 x 4 300 000 píxeles. Sin mencionar las pequeñas pantallas de los teléfonos móviles y las pantallas pequeñas y medianas de las tabletas. Los diseños web ofrecen varios enfoques básicos para este problema. Casi todos los diseños de página que ve pertenecen a uno de dos tipos:ancho fijoolíquido. Los diseños de ancho fijo le brindan el mayor control sobre cómo se ve su diseño, pero pueden incomodar a algunos 405 www.it-ebooks.info TIPOS DE WEB DISEÑOS DE PÁGINA de tus visitantes. Las personas con monitores realmente pequeños tienen que desplazarse hacia la derecha para ver todo, y aquellos con monitores grandes terminan con espacio desperdiciado que podría estar mostrando más de su excelente contenido. Además, los propietarios de teléfonos inteligentes deben pellizcar y hacer zoom para llegar al contenido que buscan. Los diseños líquidos, que crecen o se reducen para ajustarse a las ventanas del navegador, hacen que controlar el diseño sea más desafiante pero ofrecen el uso más eficaz de la ventana del navegador. Una innovación reciente—diseño web adaptable—busca resolver el problema de los anchos de pantalla muy variados, pero a costa de una mayor complejidad. • Ancho fijo.Muchos diseñadores prefieren la consistencia de un ancho establecido, como la página de la Figura 12-1, arriba. Independientemente del ancho de la ventana del navegador, el ancho del contenido de la página sigue siendo el mismo. En algunos casos, el diseño se adhiere al borde izquierdo de la ventana del navegador o, más comúnmente, está centrado en el medio. Con el enfoque de ancho fijo, no tiene que preocuparse por lo que sucede con su diseño en un monitor muy ancho (o pequeño). Muchos diseños de ancho fijo tienen menos de 1000 píxeles de ancho, lo que permite que la ventana y el espacio ocupado por las barras de desplazamiento y otras partes del "cromo" del navegador encajen en un monitor de 1024 x 768 píxeles. Un ancho muy común es de 960 píxeles. Muchos sitios web tienen un ancho fijo, pero eso está cambiando gracias a la adopción generalizada de teléfonos inteligentes y tabletas, que a menudo son mucho más angostos que el diseño de página web promedio de ancho fijo. NotaPara ver ejemplos de diseños de ancho fijo, visitewww.alistapart.com,espn.go.com, owww.nytimes.com. • Líquido.A veces es más fácil seguir la corriente que luchar contra ella. Un diseño líquido se ajusta para adaptarse al ancho del navegador, cualquiera que sea, asignando anchos porcentuales en lugar de valores de píxel absolutos. Su página se vuelve más ancha o más estrecha a medida que su visitante cambia el tamaño de la ventana (Figura 12-1, centro). Si bien este tipo de diseño aprovecha al máximo el espacio disponible de la ventana del navegador, le brinda el desafío adicional de asegurarse de que su diseño se vea bien en diferentes tamaños de ventana. En monitores muy grandes, estos tipos de diseños pueden verse ridículamente anchos, creando líneas de texto muy largas y difíciles de leer. NotaPara ver un ejemplo de un diseño líquido, consultehttp://maps.google.com. • Diseño web responsivo (RWD).Esta nueva técnica, defendida por el diseñador web Ethan Marcotte, ofrece otra forma de abordar el problema que presentan los tamaños de pantalla muy diferentes de los navegadores web de teléfonos inteligentes, tabletas y computadoras de escritorio. En lugar de presentar un diseño único para todos los dispositivos, el diseño web receptivo compensa los diferentes anchos de navegador al cambiar su presentación. Por ejemplo, una página web receptiva puede reducirse de un diseño amplio de varias columnas para monitores de escritorio a un diseño de una sola columna para teléfonos inteligentes. En esto 406 Css3: el manual perdido www.it-ebooks.info TIPOS DE WEB De alguna manera, el diseño web receptivo es muy parecido a los diseños líquidos: el diseño utiliza porcentajes para crecer o reducirse en respuesta al ancho de la ventana del navegador. DISEÑOS DE PÁGINA Sin embargo, va un paso más allá al usar algunos CSS complicados, llamados consultas de medios, para enviar diferentes diseños a navegadores de diferentes anchos, lo que le permite crear diseños de apariencia muy diferentes según el dispositivo que visualiza la página. En los tutoriales al final del próximo capítulo, creará un diseño de ancho fijo y un diseño líquido. En el Capítulo 13, se sumergirá en las técnicas para crear diseños web adaptables. NotaElanchura máximayancho mínimoLas propiedades ofrecen un compromiso entre diseños fijos y líquidos. Consulte la página 219. Figura 12-1 Tiene varias formas de lidiar con los anchos inciertos de las ventanas del navegador web y del navegador. tamaños de fuente Simplemente puede ignorar el hecho de que los visitantes de su sitio tienen monitores de diferentes resoluciones y fuerzan un ancho único e inalterable para su página (arriba), o crean un diseño líquido que fluye para llenar cualquier ventana de ancho encuentra (medio). Un diseño receptivo literalmente se reformatea a sí mismo dependiendo del ancho de la ventana del navegador. El Globo de Boston (www.bostonglobe.com), por ejemplo, el sitio pasa de una columna (izquierda), a dos columnas (centro), a tres columnas (derecha) a medida que se expande la ventana del navegador. Capítulo 12:PRESENTACIÓN DEL DISEÑO CSS www.it-ebooks.info 407 cómo CSS Disposición obras Cómo funciona el diseño CSS Como se discutió en el Capítulo 1, en los primeros días de la Web, las limitaciones de HTML obligaron a los diseñadores a desarrollar formas inteligentes de hacer que los sitios web se vieran bien. La herramienta más común fue el <mesa>etiqueta, que originalmente tenía la intención de crear una pantalla de información similar a una hoja de cálculo compuesta de filas y columnas de datos. Los diseñadores utilizaron tablas HTML para construir una especie de andamiaje para organizar el contenido de una página (consulte la Figura 12-2). Pero porque el <mesa>etiqueta no estaba pensada para el diseño, los diseñadores a menudo tenían que manipular la etiqueta de formas inusuales, como colocar una tabla dentro de la celda deotro mesa, solo para obtener el efecto que querían. Este método requería mucho trabajo, agregaba un montón de código HTML adicional y hacía muy difícil modificar el diseño más adelante. Pero antes de CSS, eso es todo lo que tenían los diseñadores web. Las tablas HTML tienen algo a su favor: proporcionan una cuadrícula bien organizada con una estructura unificada de celdas individuales. Para el diseño de CSS, utiliza etiquetas individuales para contener el contenido que desea colocar en un área de la página. Al agrupar el contenido en muchos contenedores individuales y posicionar esos contenedores, puede crear diseños complejos formados por columnas y filas. Antes de HTML5, tenía una etiqueta en particular para lograr este objetivo: el <div>etiqueta. La etiqueta <div> El diseño de la página web implica colocar fragmentos de contenido en diferentes regiones de la página. Con CSS, un elemento comúnmente utilizado para organizar el contenido es el <div> etiqueta. Como leyó en la página 22, el <div>La etiqueta es un elemento HTML que no tiene propiedades de formato inherentes (además del hecho de que los navegadores tratan la etiqueta como un bloque con un salto de línea antes y después). En su lugar, se utiliza para marcar una agrupación lógica de elementos o unadivisiónen la pagina. Por lo general, envolverá un <div>etiqueta alrededor de un trozo de HTML que va unido. Los elementos que comprenden el logotipo y la barra de navegación en la Figura 12-2 ocupan la parte superior de la página, por lo que tiene sentido envolver un <div>etiqueta alrededor de ellos. Como mínimo, incluiría <div>etiquetas para todas las regiones principales de su página, como el banner, el área de contenido principal, la barra lateral, el pie de página, etc. Pero también es posible envolver un <div>etiqueta alrededor de uno o más divs adicionales. Una técnica común es envolver el HTML dentro del <cuerpo>etiqueta en un <división>.Luego puede establecer algunas propiedades básicas de la página aplicando CSS a esoenvoltura<división>.Puede establecer un ancho general para el contenido de la página, establecer márgenes izquierdo y derecho, centrar todo el contenido de la página en el medio de la pantalla y agregar un color de fondo o una imagen a la columna principal de contenido. Una vez que tenga su <div>etiquetas en su lugar, agregue una clase o ID a cada una, que se convierte en su identificador para diseñar cada <div>por separado. El <div>La etiqueta para el área del banner de una página podría tener este aspecto: <clase div="bandera">.Solo puede usar una ID, pero puede usar la misma ID solo una vez por página, así que cuando tenga un elemento que aparezca varias veces, use una clase. Si tiene varios divs que colocan fotos y sus leyendas, por ejemplo, puede envolver esas etiquetas en un div y agregar una clase como esta: <clase div="foto">. ( Para obtener más información sobre cuándo usar un div, lea el cuadro en la página 60). Además, cuando se trata de la cascada (Capítulo 5), las identificaciones son muy 408 Css3: el manual perdido www.it-ebooks.info cómo CSS poderoso y anula fácilmente otros estilos, lo que a menudo lo obliga a crear selectores extensos como #inicio #banner #navegaciónsolo para anular los selectores creados previamente usando ID. Disposición obras Por esta razón, muchos diseñadores web evitan las identificaciones y se apegan a las clases. Una vez que tenga los divs en su lugar y los haya identificado con precisión con ID o nombres de clase, puede crear estilos CSS para colocar esos divs en la página usando flotantes (Capítulo 13). PALABRA A LOS SABIOS Un delicado acto de equilibrio Aunque los divs son críticos para el diseño de CSS, no te vuelvas loco simplemente use el HTML <cita en bloque>etiqueta. Puede colocar la bombardeando tu página con divs. Una trampa común es creer que etiqueta blockquote usando la propiedad flotante como se explica en la debes envolvertodoen una página web en un <div>etiqueta. Digamos página 220. que su barra de navegación principal es una lista desordenada de enlaces (como la que se describe en la página 304). Debido a que es un elemento importante, puede tener la tentación de envolver un <div>a su alrededor: <div class="mainNav"><ul>…</ul></div>. Dicho esto, tampoco tengas miedo de los divs. Agregar algunos divs adicionales a una página no cambiará sustancialmente el tamaño del archivo ni ralentizará la velocidad de descarga de la página. Si un div lo ayuda a hacer el trabajo, y ninguna otra etiqueta HTML tiene sentido, Pero no hay razón para agregar un <div>cuando el <ul>la etiqueta es entonces, por supuesto, use un div. Además, un div es el único camino a igual de útil. Mientras el <ul>contiene los enlaces de la barra de seguir cuando desea agrupar un montón de etiquetas HTML diferentes navegación principal, simplemente puede agregar su clase a esa en una unidad cohesiva. De hecho, no es nada raro ver un div rodeando etiqueta: <ul class="mainNav">.Un < adicionaldiv>es simplemente un uno o más divs. código innecesario. La regla general básica es que debe tratar de mantener la cantidad de Del mismo modo, no tiene sentido usar un <div>cuando se dispone de HTML en una página al mínimo, pero use tanto HTML como sea otra etiqueta HTML más lógica. Por ejemplo, supongamos que desea necesario. Si agregar algunos divs tiene sentido para el diseño, hágalo. agregar una cita extraída a un pasaje largo de texto: un cuadro alineado O, si está profundizando en HTML5, pruebe los elementos de sección con el borde derecho de la página que muestra una cita emocionante que se describen en la siguiente sección. extraída de la página. En este caso, puede omitir un < extradiv>y Elementos de seccionamiento HTML5 Antes de HTML5, los divs eran la forma principal en que los diseñadores organizaban el contenido. HTML5 presenta muchas etiquetas HTML nuevas destinadas a agrupar ciertos tipos de contenido. Por ejemplo, el <artículo>La etiqueta está pensada para el contenido que constituye una composición única e independiente, por ejemplo, una publicación de blog. Asimismo, el <encabezado>La etiqueta está destinada a proporcionar un título, ayudas de navegación y otro material introductorio para una página o una sección de la página. Luego está el <pie de página>etiqueta que debe contener información final, como un aviso de derechos de autor, el nombre del creador del sitio web, la fecha en que se publicó la página, etc. En pocas palabras, HTML5 proporciona etiquetas que asumen el trabajo de <div>etiqueta para tipos específicos de contenido. (Visitawww.adobe. com/devnet/ dreamweaver/articles/understanding-html5-semantics.htmlpara una introducción rápida a los elementos de seccionamiento de HTML5). NotaSi sigue la ruta de HTML5, no olvide usar la compatibilidad de HTML5 que se describe en el cuadro de la página 24 para asegurarse de que Internet Explorer 8 y versiones anteriores puedan formatear esos nuevos elementos. Capítulo 12:PRESENTACIÓN DEL DISEÑO CSS www.it-ebooks.info 409 cómo CSS Disposición obras Como aprendió en la página 23, los nuevos elementos de HTML5 están destinados a agregar semántica a una página web. Es decir, el nombre de la etiqueta—<encabezado>,por ejemplo, imparte información de identificación sobre lo que hay dentro de esa etiqueta. El <figura>La etiqueta está destinada a encerrar, lo adivinó, una figura. En otras palabras, si desea encerrar un tipo particular de contenido dentro de una etiqueta, vea si una etiqueta HTML5 cumple con los requisitos. Si el contenido es el pie de página de su página, use el <pie de página>etiqueta en lugar de la simple y antigua <división>.En el mundo de HTML5, el < div>la etiqueta todavía existe y es perfectamente válida para usar. Pero en estos días, generalmente se usa para agrupar contenido por razones estilísticas; por ejemplo, si desea agregar un borde alrededor de un grupo de etiquetas o mover esas etiquetas al lado izquierdo de la página usando un flotador, encierre esas etiquetas. en un <división>. (Aprenderá cómo hacer precisamente eso en el Capítulo 13.) Dicho todo esto, más allá de los derechos de fanfarronear en su próxima reunión de diseñadores web, no hay ningún beneficio directo en el uso de HTML5 en este momento. En el futuro, el software podría examinar su HTML e identificar artículos individuales en función de la presencia del <artículo> etiqueta, o use las etiquetas HTML5 de alguna otra manera para analizar mejor su página web. O, si desea preparar sus páginas web para el futuro y estar preparado para el día en que HTML5 gobierne el mundo, puede seguir adelante y usar HTML5 hoy. Sin embargo, si has crecido usando <div> etiquetas y no quiere molestarse en usar JavaScript para hacer que HTML5 funcione en Internet Explorer 8 (vea la nota anterior), es posible que desee quedarse con el <div>etiqueta por ahora. Técnicas para el diseño de CSS La gran mayoría de las páginas web utilizan el CSSflotarpropiedad para el diseño (ver el cuadro en la página 413 para otras opciones de diseño CSS). Ya se encontró con esta propiedad aparentemente simple en el Capítulo 8, donde elflotarLa propiedad se introdujo como una forma de colocar una imagen dentro de una columna de texto, ya sea haciendo flotar la imagen hacia el lado izquierdo o derecho. El mismo concepto se aplica a otras etiquetas: al establecer el ancho de un elemento y hacerlo flotar hacia la izquierda o hacia la derecha, puede crear una columna (el texto que sigue al elemento termina envolviendo el elemento flotante como si fuera otra columna). Al usar elflotar propiedad con varios divs u otras etiquetas, puede lograr diseños de varias columnas. Llevando esta técnica más allá, puede crear rápidamente diseños complejos de varias columnas colocando divs flotantes dentro de divs flotantes. Otra técnica de CSS, el posicionamiento absoluto, le permite colocar un elemento en cualquier lugar de la página con una precisión de nivel de píxel. Puede colocar un elemento a 100 píxeles del borde superior de la ventana del navegador ya 15 píxeles del borde izquierdo, por ejemplo. Los programas de diseño de página como InDesign y Quark xpress funcionan de esta manera. Desafortunadamente, la naturaleza fluida de las páginas web y algunas de las extrañas características del posicionamiento absoluto dificultan el control total del diseño con esta técnica. Como leerá en el Capítulo 14, es posible diseñar una página utilizando el posicionamiento absoluto, pero, en general, esta técnica es más adecuada para tareas más pequeñas, como colocar un logotipo en una ubicación particular de la página. No se preocupe si esto suena bastante abstracto en este momento; verá todas estas técnicas en acción en los próximos tres capítulos. 410 Css3: el manual perdido www.it-ebooks.info cómo CSS Disposición obras Figura 12-2 Reunir correctamente el HTML necesario para convertir una maqueta de Photoshop en una realidad HTML y CSS implica ver la estructura subyacente y envolver grupos relacionados de HTML dentro<div>etiquetas A veces, se pueden necesitar muchos divs para que un diseño cobre vida. Capítulo 12:PRESENTACIÓN DEL DISEÑO CSS www.it-ebooks.info 411 Disposición Estrategias Estrategias de diseño El diseño de páginas web con CSS es más un arte que una ciencia; no hay una fórmula a seguir para marcar su contenido con HTML y crear su CSS. Lo que funciona para un diseño podría no funcionar para otro. Aunque puede que no sea un pensamiento reconfortante: "Oye, compré este libro para aprender estas malditas cosas". sobre diferentes técnicas de diseño, siguiendo tutoriales como los de los próximos dos capítulos y mucha práctica. Sin embargo, definitivamente hay algunas estrategias que puede adoptar a medida que se acerca al diseño CSS. Estas son más pautas que reglas estrictas, pero a medida que comienza a ver sus proyectos a través del diseño visual inicial, comience con estos consejos en mente. Comience con su contenido A muchos diseñadores les gusta pasar directamente a lo bueno: colores, fuentes, íconos e imágenes. Pero comenzar con el diseño visual es poner el carro delante del caballo. Los elementos más importantes de una página web son los contenidos: titulares, párrafos de texto, fotografías impresionantes, enlaces de navegación, videos, y esos son los motivos por los que la gente visitará su sitio. Quieren leer, aprender y experimentar lo que su sitio tiene para ofrecer. El contenido es el rey, así que piensa en lo que quieres decir antes de abordar cómo debería verse. Después de todo, no le servirá de mucho crear un cuadro de barra lateral fantástico con aspecto 3D si no tiene nada significativo que poner en ese cuadro. Además, el mensaje de una página debe dictar su diseño. Si decide que su página de inicio necesita vender los servicios de su empresa y resaltar el excelente servicio al cliente que ofrece, puede decidir que es importante una foto grande de su amable personal, así como una cita de un cliente satisfecho. Dado que ambos elementos son importantes para el mensaje de la página, puede crear el mensaje visual haciendo que tanto la imagen como la cita sean destacadas y convincentes. Móvil primero Del mismo modo, el auge de los teléfonos inteligentes y las tabletas ha llevado a los diseñadores a pensar largo y tendido acerca de reducir su contenido a solo el mensaje y los hechos clave. EsteMóvil primeroEl movimiento se basa en el tamaño de pantalla limitado de los teléfonos inteligentes, así como en la atención limitada de las personas en movimiento. El diseño Mobile First se trata de comenzar con su contenido, pero también se trata de deshacerse del ruido extraño, incluida la información complementaria que se adapta bien a una pantalla de escritorio grande, pero simplemente se interpone en el camino en la pantalla más pequeña y resta valor a la información clave que espera. para entregar. Tenga en cuenta que si su sitio será visitado por una cantidad significativa de personas que usan teléfonos inteligentes o tabletas pequeñas, no todos querrán desplazarse por una página larga de información (o pellizcar y hacer zoom para ver todo lo disponible en una página). En lugar de tratar de llenar hasta el último centímetro cuadrado de un monitor de escritorio de 32", piense en simplificar su contenido para que sea claro, directo y fácil de asimilar. 412 Css3: el manual perdido www.it-ebooks.info NotaEl términoMóvil primerofue acuñado por Luke Wroblewski. De hecho, escribió un fantástico tratado corto sobre el tema que vale la pena leer:www.abookapart.com/products/mobile-first. Disposición Estrategias CLÍNICA DE USUARIOS ELÉCTRICOS Otras opciones de diseño de CSS3 Los diseñadores web inicialmente usaron tablas para crear diseños de varias está bastante bien soportado en muchos navegadores hoy en día. Leerá sobre columnas. Luego, la propiedad flotante de CSS entró en escena y proporcionó la flexión en el recuadro de la página 436. otro método menos intensivo en código para diseñar una página web. Y aunque la mayoría de los diseñadores aún usan la propiedad de flotación para lograr sus diseños, eso puede cambiar en un futuro no muy lejano. Finalmente, elcuadrícula CSSEl módulo de diseño es quizás el intento más ambicioso de cambiar la forma en que los diseñadores diseñan las páginas web. Este método le permite dividir una página en un conjunto de filas y columnas, y luego adjuntar con precisión los elementos de la página a esa El grupo de trabajo de CSS en el W3C está ocupado finalizando planes cuadrícula. Su objetivo es hacer que la creación de aplicaciones web sea más sobre varias otras técnicas para el diseño de CSS. Por ejemplo, el CSS fácil y más parecida a la creación de aplicaciones de escritorio.programas. La multicolumnaEl módulo de diseño proporciona una forma de tomar una cuadrícula CSS es bastante complicada y (en el momento de escribir este columna larga de texto y mostrarla en varias columnas una al lado de la artículo) aún no es compatible con ninguno de los navegadores que se envían otra. Aprenderá sobre esto en el próximo capítulo, en la página 440. actualmente, aunque hay soporte en la versión beta de IE 10. Puede leer más Elcaja flexibleEl módulo de diseño proporciona otra forma de organizar sobre esto enhttp:// blogs .msdn.com/b/ie/archive/2011/04/ 14/ie10-plat cuadros de contenido: vertical, horizontal y en diferentes direcciones y formpreview-and-css-features-for-adaptive-layouts.aspx. órdenes. Y sorprendentemente, este módulo Comience con un boceto Una vez que haya descubierto su contenido, puede pensar en organizarlo visualmente. Algunos diseñadores empiezan codificando a mano el HTML: creando divs, agregando <encabezado>, <artículo>, <pie de página>etiquetas, y así sucesivamente. Este es un buen enfoque, a menudo llamado "diseño en el navegador", ya que le da una ventaja inicial en la construcción de su sitio saltando directamente al HTML. Sin embargo, antes de saltar al código HTML, al menos debe esbozar la ubicación de su contenido. No necesitas nada sofisticado: el papel y el lápiz funcionan bien. Dado que el diseño web se trata de colocar contenido dentro de cuadros (divs y otras etiquetas HTML) y colocarlos en la página, simplemente esbozar un montón de cuadros, dibujar columnas, etc., es una manera rápida y fácil de probar diferentes páginas. diseños Puede tener una idea rápida de dónde debe ir el contenido, qué tan grande debe ser y el tono de color general (claro u oscuro). CONSEJOYahoo ofrece un Stencil Kit gratuito (http://developer.yahoo.com/ypatterns/wireframes) que puede usar en Illustrator, Visio, OmniGraffle y otros programas gráficos para crear maquetas de páginas web. Los elementos de la interfaz de usuario suministrados, como botones, campos de formulario, ventanas y botones de navegación, pueden hacer que esbozar un diseño de página sea tan simple como arrastrar y soltar iconos. Si se siente cómodo con un programa de gráficos como Photoshop, Illustrator o Fireworks, puede usarlo para crear un diseño visual. Si no eres un genio con los gráficos Capítulo 12:PRESENTACIÓN DEL DISEÑO CSS www.it-ebooks.info 413 Disposición Estrategias programas, incluso simplemente dibujar cuadros para indicar la ubicación diferente de los elementos de la página puede ayudarlo a refinar su pensamiento sobre cómo se debe diseñar la página. Es mucho más fácil cambiar un diseño de dos columnas a un diseño de cuatro columnas cambiando el tamaño de los cuadros en Illustrator que reescribiendo HTML y CSS. Sin embargo, si usa un programa de gráficos, no dedique demasiado tiempo a refinar el diseño gráfico. Es mucho trabajo crear la apariencia de muchas propiedades CSS en Photoshop o Illustrator, y solo tendrá que recrear esa apariencia usando código CSS. En otras palabras, intente refinar un aspecto "lo-fi" para su sitio en papel o en un programa de gráficos, y luego salte a su editor de texto para crear el HTML que se ajuste a su contenido y use las propiedades CSS que aprendió en este libro para probar diferentes estilos. identificar las cajas Una vez que haya creado una maqueta visual, es hora de pensar en cómo crear el marcado HTML y CSS para lograr su objetivo de diseño. Este proceso generalmente implica visualizar las diferentes unidades estructurales de una página e identificar elementos que parecen cajas individuales. Por ejemplo, en la Figura 12-2, hay bastantes elementos que parecen recuadros: los más obvios son los tres recuadros de anuncios cerca de la parte inferior (marcados como A en la Figura 12-2). Cada cuadro suele ser un buen candidato para un <div>etiqueta (a menos que haya una etiqueta HTML más apropiada, como se explica en el cuadro de la página 409). A menudo, una pista visual en su maqueta puede ayudarlo a decidir si se necesita un div. Por ejemplo, una línea de borde dibujada alrededor de un título y varios párrafos de texto indica que deberá rodear ese grupo de etiquetas HTML con un <div>etiqueta que tiene un borde aplicado. Además, cada vez que vea fragmentos de texto uno al lado del otro (como los tres fragmentos de contenido en el pie de página en la Figura 12-2), sabrá que necesitará tener cada grupo en su propio <div>etiqueta: las etiquetas HTML generalmente no se ubican una al lado de la otra, por lo que debe usar algo de diseño (como la técnica flotante que se trata en el próximo capítulo) para que eso suceda. También es común agrupar divs (u otras etiquetas) que se encuentran uno al lado del otro en columnas dentro de otro div. Por ejemplo, en la mitad inferior de la Figura 12-2, puede ver el conjunto básico de <div>etiquetas que proporcionan la estructura de la página. La “noticia” <div>y el <pie de página> Las etiquetas son contenedores para su propio conjunto de divs. Si bien esto no siempre es una necesidad, puede proporcionar flexibilidad. Por ejemplo, puede reducir el ancho del área principal (la foto de la mano y el eslogan) y mover el div de noticias hacia el lado derecho para formar su propia columna. Las noticias podrían apilarse una encima de la otra en lugar de sentarse una al lado de la otra. Dejarse llevar Las etiquetas normalmente no se colocan una al lado de la otra ni se apilan una encima de la otra. Normalmente, las etiquetas HTML actúan como texto en un programa de procesamiento de texto: llenan todo el ancho de la página y fluyen de arriba a abajo. Cada etiqueta de nivel de bloque (título, párrafo, lista con viñetas, etc.) se apila sobre la siguiente etiqueta de nivel de bloque. Dado que ese es el enfoque de "negocios como de costumbre" de las etiquetas HTML, por lo general no tiene que hacer ningún tipo de posicionamiento si planea apilar un div sobre el siguiente. 414 Css3: el manual perdido www.it-ebooks.info Por ejemplo, en la figura 12-2, cuatro elementos: el <encabezado>etiqueta, div "principal", el <sección>etiqueta, y el <pie de página>etiqueta: abarcan todo el ancho de su contenedor (el Disposición Estrategias <cuerpo>etiqueta) y sentarse uno encima del otro. Debido a que esta es la forma normal en que funcionan las etiquetas de nivel de bloque, no necesita hacer nada especial con el CSS para que esos cuatro divs se apilen uno encima del otro. Recordar imágenes de fondo Sin duda, ha visto imágenes en mosaico que llenan el fondo de una página web o degradados sutiles que agregan profundidad a un banner. Pero elimagen de fondopropiedad proporciona otra forma de agregar fotos a una página sin recurrir a la <imagen>etiqueta. Poner una imagen en el fondo de una etiqueta HTML existente no solo ahorra los pocos bytes de datos requeridos por <imagen>etiqueta, pero también simplifica algunos desafíos de diseño. Por ejemplo, en la Figura 12-2, la imagen central de las manos que sostienen la Chia Pet (B) es en realidad solo una imagen de fondo. Esto hace que colocar otro div, el que tiene el eslogan "Cuidado compasivo..." (C), sea realmente fácil, ya que simplemente se ubica sobre el fondo de su div principal. Del mismo modo, la imagen del médico en la parte inferior derecha de la página es solo una imagen de fondo colocada en ese div; al agregar un poco de relleno a la derecha, se empuja el texto en ese div fuera del camino de la foto. NotaHay desventajas en el uso de fotos en el fondo de divs (o cualquier etiqueta HTML). En primer lugar, los navegadores web generalmente no imprimen fondos, por lo que si tiene una página con un mapa que contiene indicaciones para llegar a su empresa, inserte el mapa con el <imagen>etiqueta y no como imagen de fondo. Del mismo modo, los motores de búsqueda no buscan CSS, por lo que si cree que la imagen puede ayudar a atraer tráfico a su sitio, use un <imagen>etiquetar e incluir una descripciónalternativa atributo. Piezas de un rompecabezas Este consejo se puede archivar en "resolución creativa de problemas" o "si miro este diseño el tiempo suficiente, se me ocurrirá una solución loca". A menudo, lo que parece un todo único y unificado en realidad está compuesto por varias piezas. Puede ver un ejemplo simple de esto en la Figura 12-2, aunque a primera vista parece una gran caja blanca llena de contenido. En realidad, hay cuatro divs apilados, cada uno con un fondo blanco. Por lo tanto, si tiene problemas para ver cómo combinar un elemento grande en una página (un gráfico muy grande, un arcoíris que abarca varias columnas o simplemente un color de fondo sólido que parece abarcar varias áreas de una página), piense en cómo podría lograr el mismo aspecto dividiendo la unidad grande en piezas más pequeñas que se unen como las piezas de un rompecabezas. Elementos de capas Si es fanático de Photoshop, Illustrator o Fireworks, probablemente esté acostumbrado a la noción de capas. Las capas le permiten crear lienzos separados que flotan uno encima del otro para construir una imagen unificada. En estos programas, es fácil hacer que un logotipo flote sobre un título de texto o colocar una foto sobre otra foto. Si desea una página web que tenga este tipo de efecto, tiene un par de opciones. Capítulo 12:PRESENTACIÓN DEL DISEÑO CSS www.it-ebooks.info 415 Disposición Estrategias A menudo, la forma más fácil de superponer algo sobre una foto es colocar la imagen en el fondo de otra etiqueta (consulte el consejo en la página 415). Debido a que la imagen de fondo está detrás de la etiqueta, cualquier cosa dentro de esa etiqueta (texto, otra foto) se colocará encima de la foto. Pero, ¿qué sucede si desea colocar una foto encima de un texto? En ese caso, recurrirá a la única propiedad de CSS que le permite superponer elementos: laposiciónpropiedad. Aprenderá todo acerca de esa propiedad en el Capítulo 15, ya que colocar algo encima de otra cosa requiere un posicionamiento absoluto. No olvide los márgenes y el relleno Finalmente, a veces la solución más simple es la mejor. No siempre necesita un CSS elegante para mover un elemento de página a su lugar. Recuerde que el relleno y los márgenes (página 195) son solo espacios vacíos y, al usar esas propiedades, puede mover elementos por la página. Por ejemplo, el cuadro del eslogan (C en la Figura 12-2) se coloca simplemente configurando el relleno superior e izquierdo del div principal. Como puede ver en el diagrama de la mitad inferior de la Figura 12-2, el eslogan se coloca dentro de otro div (<div id="principal">). Ese div en realidad no tiene ningún contenido además del eslogan (la foto es solo una imagen de fondo), por lo que agregar relleno mueve el div del eslogan hacia abajo y hacia la derecha. 416 Css3: el manual perdido www.it-ebooks.info Capítulo 13 13 Flotador de construcción- Diseños basados F los diseños basados en lotes aprovechan laflotarpropiedad para colocar elementos uno al lado del otro y crear columnas en una página web. Como se describe en el Capítulo 7 (página 220), puede usar esta propiedad para crear un efecto envolvente para, por ejemplo, una fotografía, pero cuando la aplica a un <div>etiqueta,flotarse convierte en una poderosa herramienta de diseño de páginas. ElflotarLa propiedad mueve un elemento de página a un lado de la página (u otro bloque contenedor). Cualquier código HTML que aparezca debajo del elemento flotante se mueve hacia arriba en la página y se envuelve alrededor del elemento flotante. Elflotarla propiedad acepta uno de tres valores diferentes:izquierda derecha,yninguno.Para mover una imagen al lado derecho de la página, puede crear este estilo de clase y aplicarlo al <imagen>etiqueta: . flotarDerecha { flotar: derecha; } La misma propiedad aplicada a un <div>etiqueta llena de contenido también puede crear una barra lateral: . barra lateral { flotador izquierdo; ancho: 170px; } La figura 13-1 muestra estos dos estilos en acción. NotaElningunoEl valor desactiva cualquier elemento flotante y coloca el elemento como un elemento normal sin flotar. Es útil solo para anular un flotante que ya se aplicó a un elemento. Puede tener un elemento con una clase particular como .barra lateralaplicado a él, con ese elemento flotando a la derecha. Pero en una página puede querer un elemento con esa clase parano float, pero para colocarse dentro del flujo de la página, como este cuadro de nota. Al crear un selector de CSS más específico (consulte la página 480) conflotador: ninguno,puedes evitar que ese elemento flote. 417 www.it-ebooks.info Figura 13-1 Puedes usar elflotarpropiedad para diseñar una página web con varias columnas. En esta página, un bloque de contenido flota hacia el borde izquierdo. La barra lateral tiene un ancho establecido, pero el contenido principal no, lo que hace que este diseño sea fluido. La sección principal de la página simplemente se expande para llenar el ancho de la ventana del navegador. En la esquina superior derecha, la foto de la bañera flota hacia la derecha. Un diseño simple de dos columnas como el de la Figura 13-1 requiere solo unos pocos pasos: 1.Envuelva cada columna en un <div>etiqueta con un ID o atributo de clase. En la Figura 13-1, las noticias enumeradas en la barra lateral izquierda están envueltas en un < div>— <div class="noticias">—y el contenido principal en otro div—<clase div="principal">. 2.Haga flotar la barra lateral <div> a la derecha o a la izquierda. Cuando trabaja con flotantes, el orden de origen (el orden en que agrega HTML a un archivo) es importante. El HTML para el elemento flotante debe aparecerantes el HTML para el elemento que lo envuelve. 418 Css3: el manual perdido www.it-ebooks.info La figura 13-2 muestra tres diseños de dos columnas. Los diagramas del lado izquierdo muestran el orden de origen HTML de la página: A <div>para el banner, seguido de un <div> para la barra lateral y, por último, un <div>para el contenido principal. En el lado derecho, verá el diseño de página real. viene la barra lateralantesel contenido principal en el HTML para que pueda flotar hacia la izquierda (arriba, abajo) o hacia la derecha (centro). 3.Establezca un ancho para la barra lateral flotante. A menos que esté flotando una imagen con un ancho predefinido, siempre debe darle un ancho a sus flotadores. De esta manera, crea un tamaño establecido para el elemento flotante, lo que permite que el navegador deje espacio para que otro contenido se ajuste a su posición. El ancho podría ser un tamaño fijo como170pxo10em.También puede usar porcentajes para un diseño flexible basado en el ancho de la ventana del navegador. (Consulte la página 158 para obtener más información sobre las ventajas y desventajas de las diferentes unidades de medida). Si la barra lateral tiene un 20 por ciento de ancho y la ventana del navegador tiene 700 píxeles de ancho, entonces la barra lateral tendrá 140 píxeles de ancho. Pero si su visitante cambia el tamaño de la ventana a 1000 píxeles, la barra lateral crece a 200 píxeles. Las barras laterales de ancho fijo son más fáciles de diseñar, ya que no tiene que considerar todos los diferentes anchos a los que se puede estirar la barra lateral. Sin embargo, los porcentajes le permiten mantener las mismas proporciones entre las dos columnas, lo que puede ser más agradable a la vista. Además, los porcentajes hacen que sus diseños sean más flexibles, ya que la proporción general de la página se puede ajustar para adaptarse al tamaño de la pantalla, algo que es importante al crear diseños web receptivos, sobre lo que aprenderá en el próximo capítulo. NotaCuando el diseño general de la página tiene un ancho fijo (como se describe en la página 406), los valores de porcentaje de ancho para la barra lateral se basan en el elemento contenedor de ancho fijo. El ancho no se basa en el tamaño de la ventana y no cambiará cuando la ventana del navegador cambie de tamaño. 4.Agregue un margen izquierdo al contenido principal. Si la barra lateral es más corta que el resto del contenido de la página, el texto de la columna principal se envuelve debajo de la barra lateral, lo que arruina la apariencia de dos columnas una al lado de la otra (consulte la Figura 13-16 para ver un ejemplo). Agregar un margen izquierdo que sea igual o mayor que el ancho de la barra lateral sangra el contenido principal de la página, creando la ilusión de una segunda columna: . principal { margen izquierdo: 180px; } Por cierto, suele ser una buena idea hacer que el margen izquierdo sea un poco más grande que el ancho de la barra lateral: esto crea un espacio vacío, un canalón blanco entre los dos elementos. Entonces, cuando use porcentajes para establecer el ancho de la barra lateral, use un valor de porcentaje ligeramente mayor para el margen izquierdo. Capítulo 13:CONSTRUCCIÓN DE DISEÑOS BASADOS EN FLOTADORES www.it-ebooks.info 419 Figura 13-2 Crear un diseño de dos columnas es una simple cuestión de hacer flotar un<div>etiqueta a la izquierda (arriba). Para hacer que una barra lateral se mueva del lado izquierdo al derecho de la página (centro), simplemente cambie el estilo CSS de la barra lateral a flotar derecho. No necesita realizar ningún otro cambio en su CSS o HTML. 420 Css3: el manual perdido www.it-ebooks.info aplicaciónmentiroso Evite establecer un ancho para el div del contenido principal. No es necesario, ya que los navegadores simplemente lo expanden para que se ajuste al espacio disponible. Incluso si desea un diseño de FLOTADORES HACIA Tus DISEÑOS ancho fijo, no necesita establecer un ancho para el div de contenido principal, como verá en la siguiente sección. Aplicar flotantes a sus diseños Ahora que ha aprendido un diseño líquido básico de dos columnas, puede adaptarlo de innumerables maneras. Convertirlo en un diseño de ancho fijo es muy fácil. Simplemente envuelva todas las etiquetas dentro del cuerpo de la página dentrootro<división> (me gusta <clase div="envoltorio">).Luego, cree un estilo para ese nuevo elemento contenedor que tenga un ancho establecido, como 960 píxeles (vea la Figura 13-2, abajo). Esa configuración de ancho restringe todo lo que está dentro de la caja del contenedor. CONSEJOTambién es posible crear una página de ancho fijo sin recurrir al div contenedor adicional: establezca un ancho en <cuerpo>etiqueta. Ya viste un ejemplo de esta técnica en el tutorial de la página 225. Expandirlo a un diseño de tres columnas tampoco es difícil (Figura 13-3). Primero, agregue otro <div>entre las dos columnas y flote hacia la derecha. Luego agregue un margen derecho a la columna del medio, de modo que si el texto en la columna del medio es más largo que la nueva barra lateral derecha, no se ajustará debajo de la barra lateral. El resto de esta sección explora más técnicas de diseño CSS que usan diseños basados en flotantes. Figura 13-3 Un diseño de tres columnas utiliza los mismos conceptos utilizados para crear un diseño de dos columnas. En este caso, haces flotar las barras laterales izquierda y derecha y agregas los márgenes izquierdo y derecho a la columna central. El diagrama de la izquierda muestra el orden del HTML; el lado derecho muestra cómo se ve la página web. Todas las columnas flotantes Es perfectamente posible flotarcadacolumna, no solo las barras laterales izquierda y derecha. Podría hacer flotar la primera barra lateral hacia la izquierda, la columna central hacia la izquierda y la barra lateral derecha hacia la derecha, como se muestra en la Figura 13-4, arriba. Este enfoque le permite poner más Capítulo 13:CONSTRUCCIÓN DE DISEÑOS BASADOS EN FLOTADORES www.it-ebooks.info 421 aplicaciónmentiroso FLOTADORES HACIA Tus DISEÑOS de tres columnas en su diseño. Puede hacer flotar cuatro o más columnas, siempre que haya espacio para que todos los flotadores encajen uno al lado del otro. Cuando flota todas las columnas en un diseño, debe prestar mucha atención a los anchos de cada columna. Si el ancho total de todas las columnas es menor que el espacio disponible, por ejemplo, si la ventana del navegador es más pequeña o las columnas se colocan dentro de otra <div>con un ancho establecido, luego la última columna cae debajo de las demás. (Puedes leer una solución a este problema de caída del flotador en la página 480). Hasta la velocidad No tienes que reinventar la rueda Si términos comodiseño líquidoyelemento contenedorsuena un poco y el CSS que los posiciona. Todo lo que necesita hacer es llenarlos con intimidante, no te rindas. En primer lugar, los tutoriales que comienzan en la sus propios toques de diseño, como estilo de fuente e imágenes. página 440 lo guían paso a paso a través del proceso de diseño de páginas web También hay bastantesgeneradores de diseño—herramientas en línea con CSS. Pero no hay ninguna ley que diga que tienes que crear tus propios que le permiten personalizar los requisitos básicos, como la cantidad de diseños CSS desde cero. En la Web, encontrará muchos diseños preconstruidos columnas que desea, si busca un diseño líquido o fijo, etc. El Gridinador y probados que puede hacer usted mismo. El sitio LayoutGala ofrece 40 diseños (http://gridinator.com) proporciona una herramienta sencilla para crear CSS diferentes que funcionan en todos los navegadores comunes (http:// blog.html.it/layoutgala/). Los diseños son solo esqueletos básicos que consisten en <div>etiquetas un sistema complejo de cuadrícula de varias columnas (consulte el cuadro en la página 430). Luego puede descargar archivos HTML y CSS con el código creado para usted. Además, flotar más que solo las barras laterales le permite cambiar el orden de sus divs en el HTML. Tomemos, por ejemplo, el diagrama de la izquierda en la figura 13-3, que muestra el orden de los < div>etiquetas para esa página. Debido a la forma en que funcionan los elementos flotantes, deben aparecer antes que cualquier contenido que los rodee, por lo que en este ejemplo, el área de contenido principal debe irdespuéslas barras laterales El orden de los <div>las etiquetas en el HTML pueden no parecer un gran problema hasta que intente navegar por la página websinCSS, que es el caso de muchos navegadores alternativos, incluidos los lectores de pantalla que leen el contenido de una página en voz alta a los visitantes con discapacidades visuales. Sin CSS, todo el material de la barra lateral (que a menudo incluye elementos de navegación, anuncios u otra información que no es relevante para el tema principal de la página) aparece antes que el contenido que el visitante llegó a leer en primer lugar. El inconveniente de tener que desplazarse más allá del mismo contenido de la barra lateral en cada página desanimará a algunos visitantes. Además, su página es menos accesible para los visitantes con problemas de visión, que tienen que escuchar a sus lectores de pantalla leer una larga lista de enlaces y anuncios antes de llegar a cualquier información real. Y si eso no te convence, tienes que preocuparte por los motores de búsqueda. La mayoría de los motores de búsqueda limitan la cantidad de HTML que leen cuando buscan en un sitio. En una página web particularmente larga, simplemente se detienen en un punto determinado, posiblemente perdiendo contenido importante quedeberíaser indexado por el motor de búsqueda. Además, la mayoría de los motores de búsqueda dan mayor valor al HTML cerca del comienzo del archivo. Entonces, si le preocupa obtener una buena ubicación en los resultados de los motores de búsqueda, lo mejor es que 422 Css3: el manual perdido www.it-ebooks.info aplicaciónmentiroso interés para asegurarse de que el contenido importante esté lo más cerca posible de la parte superior del código HTML de la página. FLOTADORES HACIA Tus DISEÑOS En el diagrama superior izquierdo de la Figura 13-4, el HTML del contenido principal se encuentra entre las barras laterales izquierda y derecha, lo que es mejor que tenerlo después de ambas barras laterales. Incluso puedes poner el contenido principal antesambosHTML de las barras laterales envolviendo el contenido principal y la barra lateral izquierda en uno <división>,flotando eso <div>izquierda, y luego flotando el contenido principal a la derecha y la barra lateral izquierda a la izquierdadentroeso <división> (Figura 13-4, abajo). Voilà—el HTML de la columna principal cae antes que el otro <div>etiquetas Flotadores dentro de flotadores El diagrama inferior de la figura 13-4 ilustra otra técnica útil: elementos flotantesdentroflota Imagina que el contenido principal (3) y la barra lateral izquierda (4) no existieran, y solo quedaran el contenedor de columna (2) y la barra lateral derecha (5). Tendría solo un diseño básico de dos columnas, con una columna flotando a la izquierda y otra flotando a la derecha. De hecho, sigue siendo un diseño de dos columnas, incluso con los dos divs (3 y 4) colocados dentro del div contenedor de columnas. La diferencia es que la columna de la izquierda está dividida en dos columnas. Figura 13-4 Hay más de una forma de hacer flotar una página. La flexibilidad de CSS proporciona muchas formas de crear un diseño de varias columnas. Utilizando diferentes métodos de flotación, puede cambiar fácilmente el orden de origen del HTML de la página, como puede ver en los diagramas de la izquierda. Los diagramas del lado derecho representan el diseño final de la página web. Capítulo 13:CONSTRUCCIÓN DE DISEÑOS BASADOS EN FLOTADORES www.it-ebooks.info 423 aplicaciónmentiroso FLOTADORES HACIA Tus DISEÑOS Aunque este arreglo es un poco confuso, también es útil en varios casos. Primero, le permite agregar columnas dentro de una columna. El diseño de tres columnas en la parte superior de la Figura 13-5 muestra un pequeño cuadro de Sugerencias en la columna del medio que también tiene dos columnas dentro. Al anidar flotadores dentro de flotadores, puede crear algunos diseños muy complejos. Además, cuando solo tiene un par de elementos flotantes divididos en columnas con elementos flotantes adicionales, es más fácil calcular el ancho de los elementos de la página. Eso es bueno cuando necesita controlar las caídas de flotación (página 480) y otros problemas que ocurren cuando las columnas se vuelven demasiado anchas. Figura 13-5 Arriba: cree columnas dentro de columnas mediante elementos flotantes dentro de otro elemento flotante. En la columna del medio, el cuadro Sugerencias proporciona una nota simple de dos columnas que agrega interés visual a la página. Abajo: no importa en qué dirección flote el contenedor (en este caso, a la derecha), simplemente flote las dos columnas adicionales hacia la izquierda y hacia la derecha. 424 Css3: el manual perdido www.it-ebooks.info superando Flotar problemas CLÍNICA DE USUARIOS ELÉCTRICOS Encontrar orden en la cuadrícula Los diseñadores gráficos utilizaron cuadrículas para proporcionar un orden subyacente a sus diseños mucho antes de que apareciera la Web. Una cuadrícula es simplemente una serie de filas y columnas que ayudan a alinear elementos dentro de un diseño. Por ejemplo, en una cuadrícula de 12 columnas, divide la página en 12 columnas del mismo tamaño, generalmente con una pequeña cantidad de espacio: unacanal—entre cada uno. <div clase="fila"> Y dentro de la fila, coloca etiquetas adicionales, a menudo <div> etiquetas, pero puede usar cualquier etiqueta a nivel de bloque como los elementos de sección de HTML5 (página 409). Cada una de estas etiquetas incluye clases que indican cuántas unidades de cuadrícula deben tener de ancho. Por ejemplo, un diseño de tres columnas puede tener un código como este: Pero la cuadrícula no significa que su página necesite 12 columnas delgadas de <div clase="span3"> </div> contenido. En su lugar, generalmente divide las 12 columnas (a menudo <div clase="span6"> </div> denominadasunidades de cuadrícula)en grupos Por ejemplo, en un diseño de <div clase="span3"> </div> tres columnas, puede tener una barra lateral izquierda de 3 unidades de cuadrícula de ancho, una columna principal de 6 unidades de cuadrícula de ancho y una barra lateral derecha de 3 unidades de cuadrícula de ancho para llenar todo el espacio. Ancho de 12 unidades. Esta cuadrícula de 12 unidades tiene la flexibilidad de permitirle probar también otros diseños, mientras conserva un esquema de medición común y consistente. Por ejemplo, podría tener tres columnas de igual ancho (4 unidades de cuadrícula cada una). El nombre de la clase depende del sistema de cuadrícula. Dos marcos populares basados en cuadrículas—Foundation (http://fundación.zurb. com/docs/grid.php) y Bootstrap de Twitter (http://twitter.github. com/ bootstrap/scaffolding.html#grid)— incluyen soluciones completas basadas en CSS para sistemas grid. Utiliza su CSS básico y sus convenciones de nomenclatura para crear columnas de diferentes anchos. Para un enfoque más simple, lea la publicación de blog de Chris En la mayoría de los sistemas de cuadrícula CSS, divide una página en filas compuestas Coyier en CSS-Tricks.com, donde explica cómo crear su propio sistema de columnas. Por lo general, hay alguna nomenclatura basada en clases para definir de cuadrícula simple:http://css-tricks.com/dont-overthinkit-grids/. una fila usando un <división>,como esto: Superación de problemas de flotación A medida que se aventure más con CSS, probablemente encontrará, como muchos diseñadores web antes que usted, algunas de las extrañas complejidades de trabajar con flotantes. Esta sección describe algunos problemas comunes y sus soluciones. (Y si alguna vez se topa con un problema que no aparece aquí, siempre puede llevarlo a uno de los foros en línea o listas de discusión en el Apéndice A). Limpiando y Conteniendo Flotadores Los flotadores son poderosas herramientas de diseño porque permiten que el contenido fluya a su alrededor. Hacer flotar una foto permite que el texto debajo de ella se mueva hacia arriba y se ajuste alrededor de la imagen (Figura 13-1). Sin embargo, cuando crea diseños de columnas basadas en elementos flotantes, a vecesnodesea que el contenido se mueva hacia arriba y al lado de un elemento flotante. Por ejemplo, con frecuencia desea mantener avisos de derechos de autor, información de contacto u otros detalles de limpieza en la parte inferior de su página web, debajo de todo el resto del contenido. Capítulo 13:CONSTRUCCIÓN DE DISEÑOS BASADOS EN FLOTADORES www.it-ebooks.info 425 superando Flotar problemas En los diseños de dos y tres columnas que ha visto hasta ahora, si la columna principal es más corta que cualquiera de las columnas flotantes de la barra lateral, un pie de página puede moverse hacia arriba y alrededor de la columna flotante izquierda (Figura 13-6, izquierda). Para hacer que el pie de página permanezca debajo de las barras laterales, puede usar elclaropropiedad. Esta propiedad evita que un elemento se envuelva alrededor de flotadores. Puede hacer que un elemento caiga debajo de un objeto flotante a la izquierda (claro: izquierda;)o un objeto flotado a la derecha (claro: correcto;).Para los pies de página y otros elementos que deben aparecer en la parte inferior de la página, debe borrarambosflotadores izquierdo y derecho, así: pie de página {claro: ambos; } Figura 13-6 No siempre desea que un elemento se ajuste a un elemento flotante (izquierda). Avisos de derechos de autor y otro material que pertenece a la parte inferior de una página generalmente necesita borrar cualquier flotante que encuentre. Para lograr esto, utilice el claro propiedad del aviso de derechos de autor para colocarlo en la parte inferior de la página debajo de cualquier elemento flotante. Otro problema ocurre cuando hace flotar uno o más elementos dentro de una etiqueta contenedora no flotante como un <div>etiqueta. Cuando el elemento flotante es más alto que el otro contenido dentro del div, sobresale de la parte inferior del elemento envolvente. Este error es especialmente notable si esa etiqueta tiene un fondo o un borde. La parte superior de la página web en la Figura 13-7 muestra un <div>etiqueta que tiene un <h1>etiqueta y dos columnas creadas al flotar dos divs. El fondo y el borde, que aparecen solo alrededor del <h1> etiqueta, en realidad se aplican a todo el envolvente <división>,incluyendo el área donde están las dos columnas. Sin embargo, dado que las columnas son flotantes, sobresalen de la parte inferior en lugar de expandir los bordes del cuadro. NotaPara obtener una buena explicación de por qué los elementos flotantes pueden romperse fuera de los bloques que los contienen, lea www.complexspiral.com/publications/containing-floats. Un problema similar ocurre en el ejemplo inferior de la figura 13-7. En este caso, cada imagen flota a la izquierda dentro de un contenedor <div>que tiene un borde. Debido a que las imágenes son más altas que sus cajas, salen por la parte inferior. Desafortunadamente, este ejemplo es incluso peor que el anterior, porque cada imagen hace que la imagen debajo de ella se ajuste a la derecha, creando un feo efecto escalonado. 426 Css3: el manual perdido www.it-ebooks.info superando Flotar problemas Figura 13-7 Un elemento flotante puede escapar de su contenido <div>si es más alto que el propio contenedor. Si la etiqueta contenedora incluye un fondo o un borde, los elementos de escape pueden parecer que ni siquiera forman parte del contenedor (parte superior de la página). Además, un elemento flotante puede chocar con otros elementos, incluidos otros flota, creando así un efecto de "escalón" (parte inferior de la página) en lugar de las cajas bien apiladas en la Figura 13-8. Tienes muchas formas de abordar el problema de estos elementos flotantes renegados. Es bueno tener más de una solución al alcance de la mano, así que aquí hay una lista de las más populares: • Agregue un elemento de compensación en la parte inferior del div que lo contiene.Esta solución es la más sencilla. Simplemente agregue una etiqueta, como un salto de línea o una regla horizontal, como el último elemento en el <div>que contiene el elemento flotante (es decir, justo antes del cierre </div>etiqueta). Luego usa elclaropropiedad para forzar esa etiqueta adicional debajo del flotador. Este truco hace que el div que lo encierra se expanda, revelando su fondo y borde. Puede agregar un salto de línea—<br > (HTML) o <br /> (xHTML)— antes el cierre </div>etiquételo y agréguele una clase: <br clase="borrar"/>.Luego crea un estilo para él, como este: br.claro { claro: ambos; } Capítulo 13:CONSTRUCCIÓN DE DISEÑOS BASADOS EN FLOTADORES www.it-ebooks.info 427 superando Flotar problemas El problema con esta técnica es que agrega HTML extra. • Flotar el elemento contenedor.Una forma más fácil es simplemente hacer flotar el <div>que contiene los elementos flotantes también. Un contenedor flotante <div>se expande para contener completamente cualquier elemento flotante en su interior. En la Figura 13-9, arriba, el <div>que contiene el encabezado y dos columnas flotantes se flota a la izquierda de la página. En el proceso, todo el cuadro (fondo y bordes) se expande para adaptarse a todo lo que contiene, incluidos los elementos flotantes. Extraño pero cierto. Si sigue esta ruta, asegúrese de agregar unclaroproperty a cualquier elemento que siga al contenedor flotante para asegurarse de que el siguiente elemento caiga debajo del contenedor. • Usardesbordamiento: oculto.Otra técnica común es agregar las siguientes dos propiedades a un estilo para el bloque contenedor: desbordamiento: oculto; Eldesbordamiento: ocultoLa propiedad es solo otra de esas cosas extrañas de CSS: obliga al bloque contenedor a expandirse y contener los elementos flotantes. En general, esta técnica funciona muy bien. Sin embargo, si tiene elementos absolutamente posicionados (consulte la página 410) dentro del contenedor, es posible que no se muestren. Puede entrar en esta situación si tiene un menú desplegable dentro de otra etiqueta y los menús desplegables, cuando aparecen, se supone que aparecen fuera del elemento contenedor. Si ese es el caso, use uno de los otros métodos descritos en estas páginas. • Utilice el Micro Clear Fix.Con esta técnica, creada por Nicolas Gallagher, agrega solo algunos estilos y un nombre de clase a la etiqueta que contiene el elemento flotante. Esta técnica es la última de una larga evolución de métodos que utilizan:después pseudoclase. Para usarlo, agrega dos estilos diferentes a su hoja de estilo: uno se aplica a todos los navegadores modernos; el otro estilo se aplica a IE 7 y versiones anteriores. Todo el shebang se ve así: . claro:después de { contenido: " "; pantalla: mesa; Limpia los dos; } . claro { acercar: 1; } Los dos últimos estilos hacen que IE 6 y 7 "tengan diseño", como se describe en el cuadro de la página 440. Si no le preocupan esos navegadores, puede dejar ese estilo fuera de su hoja de estilo. 428 Css3: el manual perdido www.it-ebooks.info Una vez que haya agregado estos estilos a una hoja de estilo, simplemente agregue el nombre de la clase al divque contienelos flotadores que escapan: <clase div="borrar">.Si está utilizando superando Flotar problemas elementos de seccionamiento HTML5 como <artículo>o <pie de página>,luego agregue esa clase a ellos: <artículo class="clear">.Vea la parte inferior de la Figura 13-8. Esta técnica es muy confiable; sin embargo, a diferencia de las dos técnicas anteriores, debe agregar HTML adicional (el atributo de clase) a la página. NotaElzoomLa propiedad hace que su página falle la verificación del validador de CSS. Para moverseeso, puede poner esta regla (junto con cualquier otro estilo exclusivo de IE) en una hoja de estilo externa y adjuntarla a sus páginas web, usando cualquiera de los trucos descritos en el Capítulo 17 (página 546). Figura 13-8 ¡No dejes escapar un flotador! Tiene varias formas de hacer que los elementos flotantes permanezcan dentro de los bordes y fondos de la etiqueta que los contiene. Aquí se muestran dos métodos, aunque cualquiera de los cuatro discutidos produciría los mismos resultados. Flotar el contenedor funciona (arriba), al igual que una combinación especial de CSS (abajo). Ambos métodos dan como resultado bordes y fondos que rodean el contenedor y los flotadores en su interior. Capítulo 13:CONSTRUCCIÓN DE DISEÑOS BASADOS EN FLOTADORES www.it-ebooks.info 429 superando Flotar problemas CLÍNICA DE USUARIOS ELÉCTRICOS Columnas Múltiples: La Manera Fácil CSS3 introduce eldiseño de varias columnasmódulo: Te permite dividir entre las columnas. Para establecer el estilo, el tamaño y el color de la regla de un solo elemento (como un div lleno de texto) en tres, cuatro o más columna, use la misma sintaxis que para los bordes (página 205). columnas. Proporciona propiedades CSS para determinar el número de columnas, el espacio entre columnas y para agregar una línea (unregla) entre las columnas. Los aplica a la etiqueta que contiene los elementos que desea dividir en columnas. Por ejemplo, supongamos que tiene varios párrafos de texto dentro de un <div>etiqueta. Aplica estas propiedades a ese div y los Las columnas múltiples están diseñadas para simular el tipo de columnas que párrafos fluyen a través de múltiples columnas. Si, por ejemplo, le da a se encuentran en un periódico o una revista, donde una historia larga fluye esa columna una clase llamadamulticolor, puede crear el siguiente estilo desde la parte superior hasta la parte inferior de una columna, de vuelta a la para un diseño de tres columnas, con un espacio de 1 em y una regla parte superior de la segunda columna, hasta la parte inferior de esa columna y punteada: pronto. En otras palabras, no es para colocar columnas de contenido no . multicolor { relacionado una al lado de la otra (por ejemplo, una barra lateral con enlaces y recuento de columnas: 3; una columna principal que contiene un artículo). Además, no puede establecer espacio entre columnas: 1em; diferentes anchos para cada columna individual; son todos del mismo ancho. columna-regla: 1px punteado negro; } Las columnas múltiples funcionan bien en una revista, donde tiene una altura Tenga en cuenta que Internet Explorer 9 y versiones establecida y puede ver una página completa, lo que facilita la lectura hasta el anteriores no admiten columnas múltiples. Además, debe final de una columna y volver a la parte superior de la siguiente. Sin embargo, usar prefijos de proveedores (página 209) para Chrome y en una página web, no conoce el tamaño de los monitores de sus visitantes, Safari (-webkitcolumn-count, -webkit-column-gap,y - por lo que una columna larga de texto puede obligar a un visitante a webkitcolumn-regla)y para Firefox (-moz-column-count, desplazarse hacia abajo para llegar al final y luego retroceder para leer la - moz-column-gap,y -moz-columna-regla).Opera, sin siguiente columna. En otras palabras, a menos que se asegure de tener embargo, entiende la versión sin prefijo. columnas muy cortas, podría terminar obligando a las personas a desplazarse hacia abajo y hacia arriba para leer una página, lo que no es muy fácil de usar. Sin embargo, las columnas múltiples son ideales para listas largas con viñetas Hay algunas otras propiedades para las columnas múltiples, sobre las cuales puede leer en la página oficial del W3C:www.w3.org/TR/ css3-multicol/. Además, hay una introducción simple a las con elementos cortos. En lugar de una lista realmente larga de viñetas, puede columnas múltiples enht tp://dev.opera.com/ar ticles/view/css3- distribuirlas en una página en varias columnas, ahorrando un valioso espacio multi-column-layout/y una herramienta en línea para crear y vertical. La sintaxis básica es bastante sencilla: puede utilizar elrecuento de obtener una vista previa de varias columnas en columnaspropiedad para establecer el número de columnas, laespacio entre www.aaronlumsden. com/multicol/. columnaspropiedad para establecer el espacio entre columnas, y laregla de columnapropiedad para dibujar una linea Creación de columnas de altura completa Las tablas HTML no son excelentes para el diseño de páginas web por varias razones. Agregan mucho código, son difíciles de actualizar y no funcionan bien en navegadores alternativos como los que usan los teléfonos móviles. Pero las mesas tienen algo a su favor en el departamento de diseño: la capacidad de crear columnas de la misma altura. Las columnas de igual altura le permiten agregar un color de fondo o un gráfico a una columna y hacer que ocupe toda la altura. 430 Css3: el manual perdido www.it-ebooks.info de la pagina Los fondos de las dos barras laterales en la imagen superior de la Figura 13-9 llenan la altura de la pantalla, creando franjas sólidas y en negrita a ambos lados de la página. superando Flotar problemas Los flotadores de CSS, por otro lado, se quedan un poco cortos en este sentido. Las celdas de la tabla en una fila siempre tienen la misma altura, lo que no ocurre con los divs. La altura de un flotador suele estar dictada por el contenido que contiene. Cuando no hay mucho contenido, el flotador no es muy alto. Dado que una imagen de fondo o un color de fondo solo llenan el flotador, puede terminar con columnas de colores sólidos que no lleguen a la parte inferior de la página, como en las áreas rodeadas por círculos en la parte inferior de la Figura 13-9. NotaEl nuevo modelo de caja flexible soluciona el problema de las columnas de diferentes alturas en una fila. Desafortunadamente, el soporte del navegador aún no es tan bueno. Véase el recuadro de la página 436. Como ocurre con la mayoría de los problemas relacionados con CSS, existen varias soluciones. El método más probado y verdadero es elcolumna falsatécnica defendida por primera vez por el gurú de CSS Dan Cederholm. El secreto es agregar imágenes de fondo a una etiqueta queenvuelve alrededorla barra lateral rechoncha y las otras columnas de la página. Digamos que su HTML tiene dos <div>etiquetas que contienen el contenido de una barra lateral izquierda y el contenido principal de la página: <div class="sidebar">Contenido de la barra lateral aquí</div> <div class="main">Contenido principal de la página, esta columna tiene mucho texto y es mucho más alta que la barra lateral.</div> La barra lateral <div>flota en el borde izquierdo de la página y tiene un ancho de 170 píxeles. Debido a que hay menos contenido en la barra lateral, es más corto que el texto principal. Supongamos que envuelve ese HTML en un contenedor <div>etiqueta, así: <div class="envoltorio"> <div class="sidebar">Contenido de la barra lateral aquí</div> <div class="main">Contenido principal de la página, esta columna tiene mucho texto y es mucho más alta que la barra lateral.</div> </div> Ese div exterior crece hasta ser tan alto como el elemento más alto dentro de él, así que incluso si el principal div es muy alto, esoenvolturadiv será igual de alto. Aquí está la magia: crea un estilo para el envoltorio <div>con una imagen de fondo del ancho de la barra lateral, en el color de fondo que quieras para la barra lateral. De esa forma, si la imagen de fondo se muestra verticalmente, forma una barra sólida de la altura del envoltorio <división> (Figura 13-9, arriba). . wrapper { background: url(images/col_bg.gif) repetir-y arriba a la izquierda; } Los navegadores web muestran esa imagen de fondo directamentedebajo de la barra lateral, creando la ilusión de que la barra lateral tiene un color de fondo. Capítulo 13:CONSTRUCCIÓN DE DISEÑOS BASADOS EN FLOTADORES www.it-ebooks.info 431 superando Flotar problemas Figura 13-9 Las columnas de altura completa con colores de fondo en negrita son una técnica de diseño común. Las barras laterales izquierda y derecha (arriba) muestran cómo los fondos sólidos pueden ayudar a definir visualmente las diferentes áreas de una página. Cuando el fondo de una barra lateral se detiene abruptamente (encerrado en un círculo en la parte inferior), obtiene un espacio en blanco adicional que distrae y es poco atractivo. 432 Css3: el manual perdido www.it-ebooks.info NotaTampoco estás limitado a los colores sólidos. Como de todos modos está usando una imagen, puede hacer un patrón decorativo que se coloque en mosaicos sin problemas en el lado izquierdo de la página. superando Flotar problemas Reproducir este resultado para dos columnas es un poco más complicado. Primero, agregue dos divisiones de envoltura: <div class="envoltorio1"> <div class="envoltorio2"> <div class="sidebar1">Contenido de la barra lateral aquí</div> <div class="sidebar2">Segunda barra lateral</div> <div class="main">Contenido principal de la página, esta columna tiene mucho texto y es mucho más alta que las dos barras laterales.</div> </div> </div> NotaSi el envoltorio y cada columna tienen anchos fijos, puede crear esta apariencia de columna falsa para las columnas izquierda y derecha con una sola imagen y div de envoltorio. Simplemente haga que el gráfico sea tan ancho como el envoltorio, siendo el lado izquierdo del gráfico el color y el ancho de la barra lateral izquierda, el lado derecho del gráfico el color y el ancho de la barra lateral derecha, y la parte central del gráfico haciendo juego. el color de fondo de la columna central. Si la primera barra lateral aparece en el lado izquierdo de la página y la segunda barra lateral aparece en el lado derecho, crea dos estilos. Aplicar un estilo al primer envoltorio <div> etiqueta para agregar un fondo a la barra lateral izquierda; aplicar uno a la segunda envoltura <div>para agregar un fondo a la barra lateral derecha (Figura 13-10, abajo). . wrapper1 { background: url(images/col1_bg.gif) repetir-y arriba a la izquierda; } . wrapper2 { fondo: url(images/col2_bg.gif) repetir-ybienarriba; } Al agregar una imagen de fondo a la columna de la derecha, asegúrese de colocar la imagen de fondo en la parte superior derecha del segundo envoltorio, de modo que quede debajo de la segunda barra lateral en el lado derecho de la página. Un problema importante con la técnica de la columna falsa es que es muy difícil hacer que funcione cuando todas las columnas tienen anchos porcentuales. Si los anchos de las barras laterales son un porcentaje de la ventana del navegador, pueden ser más delgados o más anchos según el monitor del visitante. La técnica de la columna falsa requiere colocar un gráfico en el fondo del elemento envolvente. Ese gráfico tiene un ancho específico y no se escalará a medida que cambie el ancho del navegador y, por lo tanto, el ancho de la columna. Una solución inteligente utiliza degradados lineales CSS3 (página 260) para agregar un degradado a un elemento envolvente. El degradado se convierte en los colores de fondo de las columnas dentro del elemento envolvente. Ahora, puede estar pensando: "Me gustan los arcoíris y todo eso, pero quiero que los colores de fondo de cada columna sean sólidos, no un degradado que se transforme de un color al siguiente". Bueno, no temas, puedes conseguir colores sólidos. Capítulo 13:CONSTRUCCIÓN DE DISEÑOS BASADOS EN FLOTADORES www.it-ebooks.info 433 superando Flotar problemas Figura 13-10 A veces es necesario pensar fuera de la etiqueta para encontrar soluciones creativas a los problemas de CSS. Para obtener fondos de altura completa detrás de columnas flotantes, debe recurrir a algunos<div> etiquetas que envuelven todas las columnas principales de texto. Estos divs crecen hasta alcanzar la altura de la columna más alta del grupo. Al agregar imágenes de fondo a estos divs de envoltura, crea la apariencia de columnas de igual altura. Como se describe en la página 262, los degradados lineales le permiten establecer paradas de color, lugares donde se define un nuevo color como parte del degradado. Si la primera parada es blanca, por ejemplo, y la segunda parada es blanca, el degradado va de blanco a blanco. En otras palabras, no hay cambio de color, es solo un color sólido. Además, puede establecer una parada de color en el mismo lugar que otra parada de color, lo que permite que el segundo color comience inmediatamente después del otro sin un efecto degradado sutil. Digamos que tienes un diseño de tres columnas. La primera columna tiene un 25 por ciento de ancho, la columna del medio tiene un 50 por ciento de ancho y la tercera columna tiene un 25 por ciento de ancho. Desea que la primera columna tenga un color de fondo rojo, la del medio blanca y la tercera azul. 1.Envuelva las tres columnas en un elemento envolvente: <div class="envoltorio"> <div class="sidebar1"> … contenido aquí…</div> <div class="main"> … contenido aquí…</div> <div class="sidebar2"> … contenido aquí…</div> </ div> 434 Css3: el manual perdido www.it-ebooks.info El contenedor es el elemento en el que agregará el degradado. Además, si hace flotar las tres columnas dentro del contenedor, deberá usar uno de los métodos descritos en la superando Flotar problemas página 425 para contener esos elementos flotantes. 2.Agregue un degradado lineal, con paradas de color que coincidan con el ancho de las columnas: . envoltorio { imagen de fondo: degradado lineal (izquierda, rojo 0%, rojo 25%, blanco 25%, blanco 75%, azul 75%, azul 100%); } El rojo corre desde0% (extremo izquierdo del envoltorio) a25%.Es del mismo color, así que no hay degradado. Entonces el blanco comienza en25%—el mismo punto en el que terminó el rojo, así que de nuevo no hay gradiente. Las blancas continúan hasta que el75%marca, solo un tramo blanco sólido. Luego, el azul comienza exactamente donde termina el blanco y continúa hasta el100% marca (el lado derecho del envoltorio). En otras palabras, tiene tres columnas de color sólido cuyos anchos cambian con el ancho del navegador. Perfecto. Por supuesto, también debe incluir las versiones con el prefijo del proveedor. 3.Agregue las versiones prefijadas del proveedor: . envoltorio { imagen de fondo: -webkit-linear-gradient(izquierda, rojo 0%, rojo 25%, blanco 25%, blanco 75%, azul 75%, azul 100%); imagen de fondo: -moz-linear-gradient(izquierda, rojo 0%, rojo 25%, blanco 25%, blanco 75%, azul 75%, azul 100%); imagen de fondo: -o-lineal-gradiente (izquierda, rojo 0%, rojo 25%, blanco 25%, blanco 75%, azul 75%, Capítulo 13:CONSTRUCCIÓN DE DISEÑOS BASADOS EN FLOTADORES www.it-ebooks.info 435 superando Flotar problemas azul 100%); imagen de fondo: degradado lineal (izquierda, rojo 0%, rojo 25%, blanco 25%, blanco 75%, azul 75%, azul 100%); } La desventaja de usar un degradado lineal es que solo funciona con colores sólidos (o, por supuesto, degradados, si desea hacerlo), por lo que no puede usar un gráfico en el fondo o bordes alrededor de cada columna. Además, Internet Explorer 9 y versiones anteriores no entienden los gradientes en absoluto. NotaIncluso hay algunas otras formas de hacer que las columnas parezcan tener la misma altura. Consulte esta publicación de blog del experto en CSS Chris Coyier para obtener una descripción general de las diferentes técnicas:http://css-tricks.com/fluid-widthequal-height- columns/. Ignore su discusión sobre el método de caja flexible, ya que escribió este artículo antes de que el W3C publicara la sintaxis de caja flexible finalizada. CLÍNICA DE USUARIOS ELÉCTRICOS Mejores métodos de diseño están en camino CSS3 incluye algunos métodos nuevos muy prometedores para controlar el no se recomienda la sintaxis anterior. Incluso se predice que Internet flujo de contenido de la página web. En la mayoría de los navegadores (pero no Explorer 10, que aún no se lanzó al momento de escribir este artículo, en IE 9 o anterior), ya puede usar el módulo de diseño de varias columnas para admitirá la sintaxis flexbox antigua y desactualizada. En otras palabras, hacer fluir el texto en varias columnas como en el diseño de periódicos y probablemente pasará algún tiempo antes de que pueda usar flexbox revistas (consulte el cuadro en la página 430). de manera confiable en sus sitios web. Para obtener más información Además, el nuevocaja flexibleEl modelo proporciona soluciones a la mayoría de los problemas que los flotadores intentan abordar, como la creación de columnas una al lado de la otra de diferentes anchos. Sin embargo,caja flexible (como suele llamarse) puede hacer mucho más, incluido controlar el orden en que se muestran las columnas independientemente de su orden en el HTML o cambiar su visualización de izquierda a derecha o de derecha a izquierda. La sobre flexbox, vaya a la fuente: http://www.w3.org/TR/css3-flexbox/. Además, evite los tutoriales de flexbox escritos antes de 2012. Todos usan la sintaxis anterior. Para aprender a reconocer la diferencia entre el flexbox antiguo y el flexbox nuevo, lea el artículo enhttp://css- tricks.com/ antiguo-flexbox-y-nuevo-flexbox/). También en el horizonte está elgrilla complejamódulo de diseño ( sintaxis de Flexbox es sencilla y proporciona muchos controles para www . w3.org/TR/css3-grid-layout/). Este módulo simplificará el administrar el diseño. La mayoría de los navegadores incluso lo admiten. proceso de definición de una estructura subyacente de filas y columnas a las que puede alinear los elementos de la página. Desafortunadamente, el grupo de trabajo de CSS ha realizado cambios 436 Aunque se ha trabajado mucho en este módulo, a fines de 2012 aún no está finalizado y ningún navegador lo admite. significativos en la sintaxis de flexbox. Cambiaron los nombres de las propiedades y agregaron otras nuevas, por lo que la implementación en los Finalmente, hay incluso algunas ideas preliminares de Adobe para navegadores a partir de este escrito está totalmente desactualizada y usando refinar el diseño del texto (http://html.adobe.com/webstandards/). Css3: el manual perdido www.it-ebooks.info Prevención de caídas de flotadores De repente, una de sus columnas simplemente cae debajo de las demás (Figura 13-11, arriba). Parece superando Flotar problemas que hay mucho espacio para que todas las columnas coexistan perfectamente una al lado de la otra, pero no es así. Tienes la temida caída del flotador. Una columna flotante cae porque no hay espacio suficiente para colocarla. Así que tenga cuidado si establece anchos paracadacolumna. Si el espacio disponible en la ventana del navegador (o el bloque contenedor en un diseño de ancho fijo) es menor que eltotalanchos de las columnas, entonces estás pidiendo una caída flotante. Además, tenga en cuenta el modelo de cuadro CSS: como se explica en el cuadro de la página 196, el ancho de un elemento que se muestra en la ventana del navegador no es el mismo que suanchopropiedad. El ancho mostrado de cualquier elemento es una combinación de su ancho, los tamaños de los bordes izquierdo y derecho, el relleno izquierdo y derecho y los márgenes izquierdo y derecho. Para que las columnas encajen, la ventana del navegador (o el bloque contenedor) debe acomodar el total combinado de todos esos anchos. Tomemos, por ejemplo, el diseño simple de tres columnas en la figura 13-11. Como puede ver en el ejemplo superior, las tres columnas no encajan. Aquí hay un desglose de las matemáticas detrás del problema: • división de envolturaUn envoltorio de ancho fijo <div>etiqueta encierra todo el diseño. Es anchoLa propiedad se establece en 760 píxeles, por lo que las tres columnas no pueden sumar más que eso. • Barra lateral 1 (lado izquierdo).Su ancho es de 150 píxeles, pero también tiene 10 píxeles de relleno, lo que hace que su ancho total en pantalla sea de 170 píxeles. (150 + 10 píxeles de relleno izquierdo + 10 píxeles de relleno derecho). • Contenido principal.El contenido principal <div>tiene 390 píxeles de ancho, con un borde de 1 píxel y 15 píxeles de margen izquierdo y derecho para un ancho total de 422 píxeles. (Es posible que necesite una calculadora para este: 390 + 1 [borde izquierdo] +1 [borde derecho] + 15 [margen izquierdo] + 15 [margen derecho]). • Barra lateral 2 (lado derecho).Este elemento tiene unanchopropiedad establecida en 150 píxeles, con 10 píxeles de relleno a la izquierda y 10 píxeles a la derecha: 170 píxeles, al igual que la barra lateral 1. Los anchos reales de cada elemento suman un total de 762 píxeles. Eso es dos píxeles más que el ancho de la envoltura <división>.La imagen central de la Figura 13-11 muestra un contorno alrededor del contenido principal <div>indicando su ancho total más los márgenes. Solo esos dos miserables píxeles adicionales de ancho (en un círculo) son suficientes para hacer que una columna se despliegue. La solución: Eliminar 2 píxeles de espacio de cualquiera de los elementos. Al cambiar los márgenes izquierdo y derecho del div de contenido principal de 15 a 14 píxeles, obtiene el espacio adicional necesario para que las tres columnas encajen una al lado de la otra (abajo). En pocas palabras: las caídas de flotación siempre se deben a que no hay suficiente espacio para sostener todas las columnas. Capítulo 13:CONSTRUCCIÓN DE DISEÑOS BASADOS EN FLOTADORES www.it-ebooks.info 437 superando Flotar problemas Figura 13-11 Solo se necesitan uno o dos píxeles para arruinar un diseño. Cuando el ancho de los elementos flotantes es solo un cabello más ancho que el bloque que los contiene (como un <div>con un ancho establecido, o incluso la propia ventana del navegador), el último elemento flotante cae debajo de los demás (arriba). El ancho real de un elemento combina muchas propiedades CSS. En la imagen central, el contorno alrededor del área de contenido principal muestra que es un poco demasiado ancho para permitir que la barra lateral derecha quepa (encerrada en un círculo). Ajustar cualquiera de los elementos eliminando un poco de ancho, relleno o márgenes puede resolver el problema (abajo). Otra forma de facilitar las matemáticas es nunca configurar el borde o el relleno en elementos o divs de columna. De esta manera, si establece tres columnas para20%, 60%,y20%anchos, respectivamente, sabrá que encajan uno al lado del otro ya que suman100%,y no hay relleno ni bordes que lo arruinen. Si desea relleno, simplemente puede agregar relleno a los elementos dentro de la columna: por ejemplo, proporcione el mismo relleno izquierdo y derecho a los títulos, párrafos y otros elementos dentro del div. Esto requiere más trabajo, pero evita posibles caídas de flotación causadas por anchos de columna que suman más de 100%. Si también desea bordes, otra técnica es anidar divs como este: <div clase="columna1"> <div class="columnainterna"> …el contenido va aquí… </div> </div> 438 Css3: el manual perdido www.it-ebooks.info Traducido del inglés al español - www.onlinedoctranslator.com Luego establece el ancho en el div exterior:columna1en este caso, y agregue el relleno y los bordes al div interno,columnainterna—en el código anterior. No establezca un ancho en el div superando Flotar problemas interno; automáticamente llenará el ancho de la columna exterior. Prevención de caídas de flotación con tamaño de caja El principal culpable de las caídas flotantes es la forma extraña en que los navegadores calculan el ancho de pantalla real de un elemento. Establece el ancho en 100 píxeles, por ejemplo, pero el navegador lo dibuja como 122 píxeles, porque también agregó 10 píxeles de relleno izquierdo y derecho y un borde de 1 píxel alrededor de todo. Afortunadamente, una propiedad de CSS le permite eludir estos cálculos que provocan dolores de cabeza. el csstamaño de cajaLa propiedad le permite decirle a un navegador web que use un modelo diferente para calcular el ancho de pantalla real de un elemento. Puedes darle uno de tres valores: • Elcuadro de contenidoEl valor es cómo funcionan normalmente los navegadores: el ancho de un elemento es el total de los grosores de los bordes izquierdo y derecho, el relleno izquierdo y derecho y el CSS.anchopropiedad. tamaño de caja: caja de contenido; • Elcaja de rellenovalue le dice a un navegador que incluya el relleno izquierdo y derecho. En otras palabras, el ancho de visualización de un elemento es el total del ancho de CSS y el relleno izquierdo y derecho. No incluye ningún borde alrededor del elemento. tamaño de caja: caja de relleno; • Finalmente, elcuadro de bordeLa propiedad incluye relleno, bordes y ancho CSS. En general, este es el que desea utilizar. Mantiene la matemática simple y ayuda a evitar caídas de flotación, especialmente cuando usa anchos basados en porcentajes junto con unidades basadas en píxeles para el ancho del borde y el relleno: tamaño de caja: cuadro de borde; La muy buena noticia es que casi todos los navegadores admiten este esquema, incluido Internet Explorer 8. Para Firefox, necesita un prefijo de proveedor:moz-box-tamaño—pero todos los demás navegadores pueden aceptar la versión simple, sin prefijo. Es seguro de usar para la gran mayoría del público que navega por la web. Solo IE 7 y versiones anteriores no seguirán estas instrucciones; recurrirán a definir el ancho visual como siempre lo han hecho los navegadores, por lo que terminará con elementos más anchos en IE 7 y probablemente gotas flotantes en diseños basados en flotantes. Consulte el cuadro en la página 24 para ayudarlo a determinar si realmente le interesa IE 7. Algunos diseñadores web sugieren configurar todos los elementos alcuadro de bordeconfiguración, de modo que cada etiqueta se medirá de la misma manera. Para hacerlo, use el selector *, que selecciona cada elemento en la página, en la parte superior de su hoja de estilo junto con su restablecimiento de CSS: *{ - tamaño de cuadro de moz: cuadro de borde; tamaño de caja: cuadro de borde; } Capítulo 13:CONSTRUCCIÓN DE DISEÑOS BASADOS EN FLOTADORES www.it-ebooks.info 439 Tutorial: MúltipleColumna DISEÑOS CLÍNICA DE USUARIOS ELÉCTRICOS ¿Tienes diseño? Como probablemente ya se haya dado cuenta, Internet Explorer 6 y 7 Luego, agregue esa clase a cualquier elemento que contenga un tienen un largo historial de errores de navegación. Algunos CSS básicos elemento flotante. El objetivo de ese estilo no es realmente hacer que se ven bien en Internet Explorer 8, Firefox o Safari se desmoronan zoom en los enlaces. Aunque solo IEzoomle permite hacer zoom en Internet Explorer 6 o 7. Afortunadamente, IE 6 y 7 están perdiendo en un elemento de la página (usando JavaScript), también activa popularidad (consulte el cuadro en la página 24) y rápidamente están disposición en IE 6 y 7. Por razones que solo Microsoft (y los cayendo en el olvido. Pero si aún necesita admitir esos navegadores, extraterrestres conocen), encenderdisposiciónobliga a IE 6 y 7 a aquí hay un truco que será útil. Resulta que puede corregir muchos contener elementos flotantes dentro de una etiqueta errores de IE activando una propiedad especial exclusiva de IE conocida contenedora. El zoompropiedad no es la única que se enciende comodisposición.Este no es un concepto CSS, ni tiene nada que ver con disposición en IE. Varias otras propiedades CSS (reales) también las reglas de HTML. Es solo un concepto integrado en Internet Explorer dan un diseño de elementos:posición: absoluta; flotador (versiones 7 y anteriores) por los ingenieros que crearon IE. En lo que izquierdo; flotar derecho; pantalla: tabla en línea;cualquierancho respecta a IE, cada elemento de la página tiene un diseño o no. valor; y cualquieraalturavalor. Elzoomproperty es una buena opción porque no significa nada para En Internet Explorer, los elementos flotantes, los elementos de lista y los otros navegadores (a diferencia de las propiedades CSS reales como elementos con posiciones absolutas se muestran de manera diferente anchoyaltura),así que Safari, Firefox, etc. felizmente lo ignoran. Eso dependiendo de si tienen o no diseño. Por ejemplo, para asegurarse de que un significa que puedes usarzoomen cualquier lugar donde necesite elemento contenga elementos flotantes en su interior, puede agregar este corregir un error de IE "agregando diseño" a un elemento sin temor a estilo a su CSS: estropear la página en otros navegadores. La desventaja de usar esta propiedad es que no es un CSS válido, por lo que no pasará la validación . borrar {zoom: 1; } W3C (consulte el cuadro en la página 27). Tutorial: diseños de varias columnas En este tutorial, creará un diseño flotante de varias columnas. En el proceso, creará un diseño líquido de tres columnas, así como un diseño de ancho fijo. Además, aprenderá un par de técnicas diferentes para hacerlo. Para comenzar, descargue los archivos del tutorial que se encuentran en el sitio web complementario de este libro enwww.sawmac.com/css3/. Haga clic en el enlace del tutorial y descargue los archivos. Todos los archivos están en un archivo zip, por lo que debe descomprimirlos primero, como se detalla en el sitio web. Los archivos para este tutorial están en el13carpeta. Estructurando el HTML El primer paso para crear un diseño basado en CSS es identificar los diferentes elementos de diseño en la página. Para ello, envuelve fragmentos de HTML dentro de <div>etiquetas, cada una de las cuales representa una parte diferente de la página. 440 Css3: el manual perdido www.it-ebooks.info 1.abre elinicio.htmlarchivo en un editor de texto y haga clic en la línea vacía que sigue al comentario HTML: <!—la primera barra lateral va aquí-->. Tutorial: MúltipleColumna DISEÑOS Como puede ver, parte del trabajo HTML ya está hecho: Actualmente, hay un banner y un pie de página. Antes de crear cualquier estilo, debe agregar la estructura y el contenido de la página. A continuación, agregará el <div>etiqueta para la barra lateral izquierda. 2.Añadir una apertura <aparte>para la barra lateral: <aparte class="sidebar1">.Luego presione Enter (Return) para crear una nueva línea vacía. Estás usando HTML5 <aparte>etiqueta, pero podría usar fácilmente un <div>etiqueta para crear esta columna. (La página incluye un enlace a un archivo JavaScript que permite que IE 8 y versiones anteriores apliquen CSS a elementos HTML5; consulte la página 24 para obtener una explicación completa). Si estuviera creando una página web desde cero, en este punto agregaría el HTML para la barra lateral de la página, tal vez una lista de artículos en el sitio, enlaces a sitios web relacionados, etc. En este caso, el HTML ya está solucionado. El código de una lista desordenada de enlaces te está esperando en otro archivo. Solo tienes que copiarlo y pegarlo en esta página. 3.abre el archivobarra lateral1.txt, copie todo el contenido y luego regrese a la inicio.htmlarchivo.Pegue el HTML después de <aparte>etiqueta que creó en el Paso 2 (o su <div>etiqueta, si seguiste esa ruta). El HTML de la barra lateral está casi completo. Solo tienes que cerrar el <aparte> etiqueta. 4.Inmediatamente después del código que acaba de pegar, escriba </aparte>. Acaba de agregar el primer elemento de diseño en la página. Dentro de poco, diseñará este HTML para que se vea como una columna. Pero primero, debe agregar más contenido. 5.Coloque el cursor en la línea vacía después de este comentario HTML: <!--el contenido principal va aquí-->,y luego escriba<clase de artículo = "principal">. Este div contiene el contenido principal de la página. También obtendrá ese HTML de otro archivo. 6.abre el archivoprincipal.txt, copiar todo el contenido, volver a lainicio.htmly luego pegue el código después de <artículo>etiqueta que acaba de crear.Añadir el cierre </artículo>etiqueta exactamente como en el paso 4. Guarde el archivo HTML. Ese es todo el HTML que necesita para crear su diseño por ahora. A continuación, es hora de centrar su atención en la creación del CSS. Crear los estilos de diseño Si obtiene una vista previa de la página ahora, verá que el banner, los botones de navegación y el texto ya tienen estilo. Esto se debe a que esta página tiene una hoja de estilo externa adjunta con un formato básico. A continuación, creará estilos para dar formato a las columnas de la página: Capítulo 13:CONSTRUCCIÓN DE DISEÑOS BASADOS EN FLOTADORES www.it-ebooks.info 441 Tutorial: MúltipleColumna DISEÑOS 1.En un editor de texto, abra elestilos.cssarchivo. Dado que la página web utiliza una hoja de estilo externa, le agregará todos los estilos nuevos. Ahora está administrando dos archivos, el archivo HTML y el archivo CSS, así que asegúrese de guardar ambos antes de obtener una vista previa de su trabajo en un navegador web. 2.Desplácese hasta la parte inferior del archivo CSS.Verás un comentario CSS que dice /*agregue estilos de tutorial a continuación aquí */.Debajo de eso, agregue este estilo: . barra lateral1 { flotador izquierdo; ancho: 20%; } Este estilo de clase hace flotar el div de la barra lateral a la izquierda de la página y le da un ancho del 20%. ElanchoLa propiedad es importante en este estilo: a menos que esté flotando una imagen que tiene un ancho establecido, siempre debe establecer un ancho para un elemento flotante. De lo contrario, el navegador establece el ancho en función del contenido dentro del flotante, lo que genera resultados inconsistentes. Aquí, el ancho se basa en porcentajes, lo que significa que está determinado por el ancho de su contenedor. En este caso, el contenedor es el <cuerpo>y ocupa todo el ancho de la ventana del navegador. Por lo tanto, el ancho en pantalla de la barra lateral dependerá del ancho de la ventana del navegador del visitante. 3.Guarde los archivos HTML y CSS y obtenga una vista previa delinicio.htmlarchivo en un navegador web. La barra lateral ahora forma una columna a la izquierda... más o menos. Cuando el texto de la columna principal llega a la parte inferior de la barra lateral, se envuelve alrededor de la parte inferior de la barra lateral, como se muestra en la Figura 13-12. Si bien normalmente así es como funcionan los flotadores, no es lo que desea en este caso. Para que el texto del cuerpo principal aparezca como una columna propia, debe agregar suficiente margen izquierdo para sangrar el texto principal más allá del borde derecho de la barra lateral. 4.Crea un estilo para la segunda columna: . principal { margen izquierdo: 22%; } Dado que la barra lateral tiene un 20 por ciento de ancho, un margen del 22 por ciento sangra el contenido principal un 2 por ciento adicional, creando un margen entre las dos columnas. Este espacio en blanco adicional no solo hace que el texto sea más fácil de leer, sino que también hace que la página se vea mejor. Obtenga una vista previa de la página ahora y verá que tiene un diseño de dos columnas. 442 Css3: el manual perdido www.it-ebooks.info Tutorial: MúltipleColumna DISEÑOS Figura 13-12 Un elemento flotante en realidad no crea una columna en la página. Simplemente desplaza cualquier contenido que lo envuelve, hasta el punto donde termina el flotador (encerrado en un círculo). Después de eso, el contenido vuelve a su posición normal debajo del flotador. Agregar otra columna Como puede ver, un diseño de dos columnas no es difícil. Agregar una tercera columna para que pueda tratar a sus visitantes con aún más información no es más difícil. De hecho, los pasos son bastante similares a la parte anterior de este tutorial. 1.abre el archivobarra lateral2.txt.Copie todo el HTML de ese archivo y luego regrese a la inicio.htmlarchivo. El código HTML de la siguiente columna va después del texto principal dentro de <artículo>etiqueta. 2.Busque el comentario HTML <!--la segunda barra lateral va aquí -->cerca de la parte inferior del archivo.Haga clic en la línea vacía debajo de ella. Capítulo 13:CONSTRUCCIÓN DE DISEÑOS BASADOS EN FLOTADORES www.it-ebooks.info 443 Tutorial: MúltipleColumna DISEÑOS A menudo es difícil encontrar el cierre correcto </div>cuando usa muchos divs para estructurar una página. Es por eso que los comentarios HTML, como este, realmente pueden ayudarlo a identificar y realizar un seguimiento del HTML en su página. 3.Tipo <aparte class="sidebar2">,presione Entrar y luego pegue el HTML que copió en el Paso 1.Pulse Intro de nuevo y luego escriba </aparte>.Guarde el archivo HTML. Cuando cierras el <aparte>etiqueta, ha completado el código HTML para la tercera columna de la página. Comienza a peinarlo a continuación. 4.En su editor de texto, abra elestilos.cssarchivo.Bajo el .principalestilo que creó en el Paso 4 en la página anterior, agregue un nuevo estilo a la hoja de estilo interna: . barra lateral2 { flotar derecho; ancho: 20%; } Estás haciendo flotar esta columna hacia el lado derecho de la página para flanquear el contenido principal con barras laterales a cada lado. 5.Guarde todos los archivos y obtenga una vista previa delinicio.htmlarchivo en un navegador web. De inmediato, notarás algo extraño. La segunda barra lateral aparece debajo del contenido principal e incluso se extiende sobre el pie de página. El problema tiene que ver con el orden de origen del HTML. Cuando flota un elemento, solo el HTML que viene después de ese elemento se ajusta y aparece junto al elemento flotante. En otras palabras, dado que el HTML de la segunda barra lateral está después del contenido principal, no aparecepróximoal contenido principal, sólo después de él. Hay un par de maneras de sortear esta situación. Puede mover el HTML de la segunda barra lateral (el segundo <aparte>elemento) antes del HTML del contenido principal (el < artículo>elemento). Entonces la primera barra lateral flotaría hacia la izquierda y la segunda hacia la derecha; el contenido principal simplemente se deslizaría entre ellos. Alternativamente, también podría simplemente hacer flotar la columna principal. Si configura su ancho para que las tres columnas sumen no más del 100 por ciento, entonces las tres columnas se ubicarán una al lado de la otra. Para este ejemplo, probará ese enfoque. 6.Edite el .principalestilo para que se vea así: . principal { flotador izquierdo; ancho: 60%; } Si guarda el archivo CSS y obtiene una vista previa delinicio.htmlarchivo en un navegador, notará otro problema: de repente, ¡todo se vuelve negro! Mantenga la calma: ese es el pie de página que intenta envolver todos los flotadores y está causando un lío. Como leyó anteriormente, cuando hace flotar un elemento y otro elemento lo envuelve, el color de fondo y los bordes de ese elemento en realidad se extienden por debajo 444 Css3: el manual perdido www.it-ebooks.info el elemento flotante. Extraño, cierto... y frustrante. Para arreglarlo, simplemente necesita hacer que el pie de página caiga debajo, es decir,claro—los flotadores. Tutorial: MúltipleColumna DISEÑOS 7.Agregue un estilo más después del .barra lateral2estilo: pie de página { Limpia los dos; } Como se describe en la página 425, elclaroLa propiedad obliga a un elemento a caer debajo de los elementos flotantes. En este caso, empuja el pie de página hacia abajo debajo de las columnas como se muestra en la Figura 13-13. Figura 13-13 Usando flotadores puedes hacer que aparezcan tres elementos como tres uno al lado del otro columnas Agregar algo de espacio para respirar Tienes tres columnas, pero el texto está un poco atascado. Las tres columnas prácticamente se tocan y el texto de la barra lateral derecha se pega demasiado al borde de la ventana del navegador. Un poco de relleno puede ayudar a solucionar esto. Capítulo 13:CONSTRUCCIÓN DE DISEÑOS BASADOS EN FLOTADORES www.it-ebooks.info 445 Tutorial: MúltipleColumna DISEÑOS 1.Agregue relleno al .barra lateral1, .principal,y .barra lateral2estilos, por lo que los estilos se ven así: . barra lateral1 { flotador izquierdo; ancho: 20%; relleno: 0 20px 0 10px; } . principal { flotador izquierdo; ancho: 60%; relleno: 0 20px 0 20px; } . barra lateral2 { flotar derecho; ancho: 20%; relleno: 0 10px 0 20px; } Aquí, estás usando elrellenopropiedad abreviada (página 231). Los números representan el relleno superior, derecho, izquierdo e inferior. Entonces en el .barra lateral1estilo, está agregando 0 relleno superior, 20 píxeles de relleno derecho, 0 relleno inferior y 10 píxeles de relleno izquierdo. Si guardas elestilos.cssarchivar y previsualizar elinicio.htmlen un navegador, notará un problema: la temida caída flotante (página 437). Al agregar relleno, esencialmente ha aumentado el ancho de cada columna, y dado que los anchos totales de las columnas (20 % + 60 % + 20 %) ya totalizaron el 100 %, ese relleno adicional obliga a la tercera columna a colocarse debajo de las otras dos . ¡Simplemente no puede caber! Hay un par de maneras de manejar este problema. En primer lugar, puede eliminar el relleno de estos estilos y agregarlo a todos los elementos del interior. En otras palabras, agregue 10 píxeles de relleno izquierdo y derecho al <h2>, <h3>, <p>,y <ul>etiquetas Eso es mucho trabajo. En segundo lugar, puede eliminar el relleno de los estilos en el archivo CSS y luego, en el inicio.htmlarchivo, agregue un <div>dentro de cada una de las columnas, algo como esto: <aparte clase="barralateral1"> <div class="innerColumn">... el contenido va aquí... </ div> </aparte> Entonces, en elestilos.cssarchivo, simplemente cree un estilo para agregar el relleno: . columnainterna { relleno: 0 20px 0 10px; } 446 Css3: el manual perdido www.it-ebooks.info Debido a que no hay un ancho establecido en el archivo .columnainternaestilo, simplemente crece para llenar la columna, mientras que el relleno desplaza todo lo que Tutorial: MúltipleColumna DISEÑOS contiene (los encabezados, párrafos, etc.) en 10 píxeles. La desventaja de este enfoque es que necesita agregar HTML adicional. Hay otra manera, que es mucho más fácil, más flexible y ampliamente compatible con los navegadores web. 2.Agregue otro estilo a la hoja de estilo: *{ - tamaño de cuadro de moz: cuadro de borde; tamaño de caja: cuadro de borde; }} Este estilo aprovecha el selector universal (página 63). aplica el tamaño de cajapropiedad a cada elemento de la página. Al establecer esta propiedad en cuadro de borde,está instruyendo a los navegadores web para que utilicen el tamaño de larellenoy bordepropiedades como parte del CSSanchovalor. En otras palabras, el relleno no se suma a los anchos de CSS que configuró anteriormente. Esto evita cualquier caída flotante, ya que las columnas ahora solo suman el 100 por ciento del ancho de la ventana del navegador. El único inconveniente de esta técnica es que Internet Explorer 7 y anteriores no entienden el tamaño de cajapropiedad, por lo que obtiene una caída flotante en esos navegadores. Consulte el recuadro en la página 24 para ayudarlo a determinar si le preocupa la disminución y casi extinción de la base de seguidores de esos navegadores. Si necesita diseñar para ellos, use la técnica de div adicional que se describe en el Paso 1 en la página 448. Finalmente, agregará una línea de borde para separar las columnas. 3.Edite el .principalestilo agregando un borde izquierdo y derecho para que se vea así: . principal { flotador izquierdo; ancho: 60%; relleno: 0 20px; borde izquierdo: discontinuo 1px rgb (153,153,153); borde derecho: discontinuo 1px rgb (153,153,153); } Estas propiedades agregan dos líneas, una a cada lado de la sección de contenido principal. Si obtiene una vista previa de la página en un navegador web ahora, debería verse como la Figura 13-14. Capítulo 13:CONSTRUCCIÓN DE DISEÑOS BASADOS EN FLOTADORES www.it-ebooks.info 447 Tutorial: MúltipleColumna DISEÑOS Figura 13-14 Agregar algo de relleno a las columnas y líneas de borde entre ellas separa claramente las columnas. Fijando el ancho Actualmente, la página tiene un diseño líquido, lo que significa que se expande para ocupar todo el ancho de la ventana del navegador. Pero supongamos que prefiere que la página mantenga el mismo ancho todo el tiempo, porque odia cómo se ve en los monitores de pantalla de cine o no le gusta lo que sucede con el diseño cuando la ventana del navegador se reduce demasiado. Cambiar un diseño líquido a un diseño de ancho fijo es fácil. Comience agregando un poco más de HTML. 1.Regrese a su editor de texto y elinicio.htmlarchivo.Directamente después de la apertura <cuerpo> etiqueta, agregue un nuevo <div>etiqueta: <cuerpo> <div class="pageWrapper"> 448 Css3: el manual perdido www.it-ebooks.info Estás envolviendo toda la página dentro de un div, que usarás para controlar el ancho de la página. Debe asegurarse de que la etiqueta esté cerrada. Tutorial: MúltipleColumna DISEÑOS 2.Añadir el cierre </div>justo antes del cierre </cuerpo>etiqueta: </div> </cuerpo> Ahora que hay un div que rodea todo el contenido de esta página, puede controlar el ancho de la página configurando un ancho para esta etiqueta. 3.Guarde el archivo HTML y cambie a laestilos.cssarchivo.Añade otro estilo: . envoltorio de página { ancho: 960px; } Si guarda los archivos CSS y HTML y obtiene una vista previa delinicio.htmlarchivo en un navegador, verá que la página está bloqueada en 960 píxeles. Si hace que la ventana del navegador sea más delgada que 960 píxeles, obtendrá barras de desplazamiento. Sin embargo, no tiene que establecer un ancho exacto. Si desea que la página se ajuste a una ventana del navegador más delgada, digamos 760 píxeles, es mejor que evite un ancho exacto. El verdadero problema es que la página se vuelve difícil de leer cuando el navegador es muy amplio. Otro enfoque es utilizar elanchura máximapropiedad, que evita que el div se vuelva más grande que un valor particular, pero no evita que se vuelva más delgado para adaptarse a pantallas más pequeñas. Mientras lo hace, también centrará el div dentro de la ventana del navegador. 4.En el archivo styles.css, cambie el .envoltorio de páginaestilo que acaba de crear para que se vea así: . envoltorio de página { ancho máximo: 1200px; margen: 0 automático; } Elanchura máximaLa propiedad (que incluso funciona en Internet Explorer 7) proporciona un diseño líquido, pero solo hasta cierto punto. En este caso, cuando la ventana del navegador tiene más de 1200 píxeles de ancho, el div no será más ancho. La configuración del margen aquí—0 automático— proporciona margen 0 para la parte superior e inferior, y márgenes automáticos para la izquierda y la derecha. Esa configuración automática le dice al navegador que calcule automáticamente el margen, dividiendo el espacio uniformemente entre izquierda y derecha y centrando el div en la ventana del navegador. La página ahora debería verse como la Figura 13-15. Capítulo 13:CONSTRUCCIÓN DE DISEÑOS BASADOS EN FLOTADORES www.it-ebooks.info 449 Tutorial: MúltipleColumna DISEÑOS Figura 13-15 Usando el CSSanchura máxima propiedad en su lugar deanchole permite proporcionar un diseño flexible que se adapta a varias ventanas del navegador anchos, pero no se volverá ilegible en un monitor ultra ancho. Mezcla de líquido y diseño fijo La página se ve bastante bien, pero podría verse mejor si el fondo negro de la barra de navegación en la parte superior, el pie de página en la parte inferior y el degradado morado oscuro en el banner se extendieran por toda la página (consulte la Figura 13-16). ). Debido a que la navegación, el banner y el pie de página están dentro delenvoltorio de páginadiv, esos fondos se detienen cuando la ventana del navegador tiene más de 1200 píxeles. En cambio, desea mantener algunas partes de la página, las etiquetas con los colores de fondo, líquidas, mientras limita el ancho de las etiquetas que contienen cualquier contenido. El color de fondo para la navegación se aplica a un <navegación>elemento en el HTML; el degradado morado se aplica a un <encabezado>elemento; y el fondo negro en el pie de página se aplica al <pie de página>elemento. Para que sus fondos amplíen el ancho de la página, no pueden estar limitados por elenvoltorio de páginadivisión Así que el primer paso es eliminar ese estilo. 1.En elestilos.cssarchivo, elimine el .envoltorio de páginaestilo que acaba de crear. Puedes dejar elenvoltorio de páginadiv en el HTML. No estará de más tener ese poco de HTML adicional, y es posible que desee usarlo más tarde para agregar estilos. La página ha vuelto a su forma totalmente líquida. Ahora desea restringir solo la navegación, el texto del banner, el texto del pie de página y el contenido principal para que no superen los 1200 píxeles. Para hacerlo, debe profundizar un poco en el HTML y ver con qué elementos tiene que jugar. 450 Css3: el manual perdido www.it-ebooks.info Busque en el HTML elinicio.htmlarchivo y busque el <navegación>etiqueta. En su interior, verá que los botones de navegación se crean con una lista desordenada simple. Bingo. Puede Tutorial: MúltipleColumna DISEÑOS establecer el ancho máximo de esa lista en 1200 píxeles y centrarla en la página, dejando el < navegación>(y su fondo negro) para extender todo el ancho de la ventana del navegador. Del mismo modo, el texto dentro del banner—CSS3: El manual perdido—está dentro de un <h1> etiqueta. También puede establecer su ancho y margen máximos. En el pie de página, tienes un <p>etiqueta que puede controlar. 2.En elestilos.cssarchivo, agregue un estilo más: navegación ul, encabezado h1, pie de página p { ancho máximo: 1200px; margen: 0 automático; } Este selector de grupo apunta a la barra de navegación, el banner y el texto del pie de página, pero no a los elementos que los contienen. Si guarda el archivo CSS y obtiene una vista previa inicio.htmlahora, verá que la navegación, el título y el texto del pie de página no superan los 1200 píxeles. Sin embargo, la región de contenido principal aún ocupa toda la ventana del navegador. Para solucionarlo, debe envolver las tres columnas en otro div para crear un grupo que pueda dimensionar y centrar. NotaOtro enfoque es insertar otro <div>dentro del <encabezado>etiqueta y envuelto alrededor de la <navegación>y etiquetas <h1>, y otra <div>dentro del <pie de página>etiqueta. Puedes dejar que el <encabezado>y <pie de página> permanezca en todo el ancho mientras restringe el ancho de esos divs anidados. 3.abre elinicio.htmlarchivo en su editor de texto.Justo antes del comentario que introduce la primera barra lateral—<!--la primera barra lateral va aquí -->—añadir <clase div = "contenedor de contenido">: <div class="contentWrapper"> <!-- la primera barra lateral va aquí --> Ahora, necesitas cerrar ese div. 4.Desplácese hacia abajo cerca de la parte inferior del archivo HTML.Entre el cierre </aparte> etiqueta y apertura <pie de página>etiqueta, agregue un cierre </div>entonces el HTML se ve así: </aparte> </div> <pie de página> Finalmente, puede agregar este nuevo nombre de clase al estilo que creó en el Paso 2. 5.Agregue la nueva clase al selector de grupo, así: nav ul, encabezado h1, pie de página p, .contentWrapper { ancho máximo: 1200px; margen: 0 automático; } Una versión completa de este tutorial está en el13_terminadocarpeta. Capítulo 13:CONSTRUCCIÓN DE DISEÑOS BASADOS EN FLOTADORES www.it-ebooks.info 451 Tutorial: MúltipleColumna DISEÑOS Figura 13-16 Crear una multicolumna el diseño no es más difícil que las etiquetas HTML flotantes: tres columnas, tres elementos flotantes. Puede agregar más columnas simplemente agregando más contenedores HTML (<div>,<artículo>, <aparte>, y así sucesivamente) y haciéndolos flotar hacia la izquierda y hacia la derecha. Solo asegúrese de recordar ajustar sus anchos para que haya suficiente espacio para que quepan uno al lado del otro. 452 Css3: el manual perdido www.it-ebooks.info Capítulo 14 14 Diseño web adaptable W Los diseñadores de eb siempre han tenido que lidiar con el diseño para varios tamaños de pantalla, desde portátiles de 760 píxeles de ancho hasta gigantescas pantallas panorámicas. Sin embargo, el auge de los teléfonos inteligentes y las tabletas ahora lo ha hecho aún más Imprescindible diseñar para una amplia gama de anchos y alturas de pantalla. Algunas empresas van tan lejos como para crear sitios web separados solo para dispositivos móviles (vea las imágenes superiores en la Figura 14-1). Sin embargo, a menos que tenga el tiempo, el dinero y la experiencia técnica para desarrollar dos sitios y programar su servidor web para proporcionar el sitio adecuado para el dispositivo adecuado, un sitio web solo para dispositivos móviles probablemente esté fuera de su alcance. Afortunadamente, existe otro enfoque más simple que le permite crear un solo sitio que se adapta a diferentes anchos de dispositivos (vea las imágenes inferiores en la Figura 14-1). Llamadodiseño web adaptable, esta técnica utiliza varios trucos diferentes para hacer que una página cambie su diseño según el ancho de la pantalla del navegador. En un teléfono inteligente, por ejemplo, puede diseñar una página en una sola columna fácil de leer para que se ajuste al ancho angosto de la pantalla (imagen inferior izquierda en la Figura 14-1), mientras mantiene un diseño de varias columnas en un ancho más ancho. monitores (imagen inferior derecha en la Figura 14-1). 453 www.it-ebooks.info sensible diseño web Lo esencial Figura 14-1 Muchas grandes empresas, como Amazon y Target, crean versiones móviles de sus sitios, optimizadas para mostrarse en dispositivos portátiles como el iPhone (arriba). Afortunadamente, utilizando técnicas de diseño web receptivo, puede crear un archivo HTML que se muestre de manera diferente en dispositivos de diferente ancho (abajo). En un teléfono, la página puede aparecer como una columna larga, mientras que en un navegador de escritorio, la misma página aprovecha la pantalla más ancha para incluir varias columnas y fotos más grandes. Conceptos básicos del diseño web receptivo Es muy difícil leer una página web de cuatro columnas en un teléfono cuya pantalla tiene solo 320 píxeles de ancho. Es igual de difícil leer una sola columna de texto distribuida en los 2560 píxeles de un monitor de escritorio grande. El diseño web receptivo, un término acuñado por el pionero del diseño web Ethan Marcotte, es un intento de resolver ese problema. El diseño web receptivo, o RWD para abreviar, le permite cambiar el diseño completo de una página 454 Css3: el manual perdido www.it-ebooks.info según el ancho de la ventana del navegador (entre otros factores), para que pueda crear la presentación más legible para cada dispositivo, sin tener que crear varias versiones del mismo sitio web. RWD no es una sola tecnología o técnica. En cambio, reúne varios métodos CSS y HTML para crear páginas web cuyos diseños se adaptan a diferentes pantallas. NotaEthan Marcotte expone sus pasos para RWD en su libroDiseño CONFIGURAR un PÁGINA WEB PARA rwD web adaptable(un libro aparte). (No hay nada mejor que un título sencillo). También puede leer el artículo original de Ethan sobre RWD en http:// www.alistapart.com/articles/responsive-web-design. RWD combina tres ideas principales: cuadrículas flexibles para el diseño, medios flexibles para imágenes y videos, y consultas de medios CSS para crear diferentes estilos para diferentes anchos de pantalla. Con cuadrículas flexibles, se salta los diseños de ancho fijo. Dado que las pantallas de los teléfonos inteligentes vienen en una amplia variedad de anchos, no tiene sentido crear una página con un ancho fijo; en cambio, desea que la página crezca o se reduzca para adaptarse al dispositivo en particular (este es el concepto de diseño líquido que se analiza en la página 450). La creación de medios flexibles permite que sus imágenes y videos se escalen para adaptarse al espacio de pantalla adecuado... fotos grandes para monitores grandes, fotos más pequeñas para pantallas pequeñas, etc. Finalmente, las consultas de medios son una tecnología CSS que le permite enviar diferentes estilos a un navegador según las condiciones actuales. Por ejemplo, puede enviar un conjunto de estilos cuando la pantalla tiene menos de 480 píxeles de ancho y otro conjunto cuando la ventana tiene más de 760 píxeles de ancho. No solo está limitado por el ancho: puede crear estilos que solo se aplican a tabletas en vista horizontal o a dispositivos con alta densidad de píxeles (como la pantalla Retina en iPhone y iPad). Configuración de una página web para RWD Si tienes un teléfono inteligente, como un iPhone o un teléfono Android, échale un vistazo. Abra un navegador web y visitewww.nytimes.com. Deberías ver (a menos que elNew York Timesdesde entonces ha hecho que su sitio responda) algo como la Figura 14-2. Es un gran diseño de varias columnas encajado en el diminuto espacio de la pantalla del teléfono. Debido a que los fabricantes de teléfonos saben que la mayoría de los sitios web están diseñados para pantallas de escritorio, han hecho que sus navegadores se comporten de manera un poco diferente a lo que usted puede estar acostumbrado. Los navegadores móviles no solo muestran la página al 100 por ciento; si lo hicieran, entonces una página de 960 píxeles de ancho fijo no encajaría en la pantalla y solo vería una parte de la página a la vez. Luego tendría que deslizar el dedo para ver toda la página. En cambio, los navegadores de los teléfonos se alejan para ajustar la página en la pantalla. La cantidad exacta que alejan varía de un teléfono a otro. Safari en el iPhone, por ejemplo, actúa como si la pantalla tuviera realmente 980 píxeles de ancho, por lo que reduce la página para que quepa en 980 píxeles. Capítulo 14:diseño web adaptable www.it-ebooks.info 455 CONFIGURAR un PÁGINA WEB PARA rwD Figura 14-2 Sitios web diseñados para navegadores de escritorio, como elNew York Timessitio que se muestra aquí, tienden a parecerse a pequeños sellos postales en los teléfonos. Los visitantes se ven obligados a acercar y arrastrar la pantalla para leer todo. En general, este comportamiento de los navegadores móviles funciona bien para la mayoría de los sitios, pero no tan bien con un diseño web receptivo. Debido a que los sitios receptivos están diseñados para verse bien en los teléfonos, no desea que la pantalla se aleje, lo que haría que el texto fuera demasiado pequeño para leer. Afortunadamente, hay una forma sencilla de anular este comportamiento de los navegadores móviles. Simplemente agregue el siguiente código al <cabeza>sección de su página web (directamente encima de <título>la etiqueta es un buen lugar para ello): <meta name="viewport" content="width=dispositivo-ancho"> Las metaetiquetas HTML brindan información adicional sobre el contenido de la página y pueden brindar a los navegadores instrucciones adicionales sobre cómo mostrar la página. En este caso, el mirador se refiere a la pantalla del navegador, y elcontenidoEl atributo establece el ancho del navegador al ancho del teléfono. En otras palabras, en los navegadores móviles que tienden a alejarse, les está diciendo que no lo hagan, sino que simplemente hagan que el ancho de la pantalla coincida con la pantalla real del teléfono. 456 Css3: el manual perdido www.it-ebooks.info NotaAdemás de la etiqueta meta de la ventana gráfica, hay otra manera de asegurarse de que un teléfono no intente reducir su página, sino que la muestre al 100 por ciento del tamaño. El Grupo de Trabajo de CSS ha agregado una @mirador regla para CSS. Preguntas de los medios Le permite hacer todo lo que hace la etiqueta meta viewport, pero dentro de su hoja de estilo. De esta manera, puede omitir agregar el <meta>etiqueta a cada archivo HTML en su sitio, y simplemente agregue una @miradorregla a su hoja de estilo principal, así: @viewport { ancho: ancho del dispositivo; } Debe agregar esto en la parte superior de su hoja de estilo, antes que cualquier otro estilo. Desafortunadamente, en este momento, el @viewportLa regla no está disponible en todos los navegadores y requiere prefijos de proveedores para aquellos navegadores que la entiendan. Puedes aprender más sobre @miradordehttp://dev.opera.com/articles/view/an-introduction- tometa-viewport-and-viewport/yhttp://dev.w3.org/csswg/css-device-adapt/. Preguntas de los medios CSS3 incluye un concepto llamadopreguntas de los medios, que le permite asignar estilos a una página en función del ancho y el alto del navegador de destino. Con este método, puede crear estilos personalizados para teléfonos móviles, tabletas y navegadores de escritorio y, a su vez, personalizar la presentación de su sitio para que se vea mejor en cada tipo de dispositivo. El objetivo del diseño receptivo es brindar a los visitantes de su sitio la presentación más legible y atractiva posible. Esto generalmente significa personalizar el diseño para que se vea mejor en diferentes anchos de navegador. Muchos diseñadores piensan en tres pantallas de destino relacionadas con los tres dispositivos de navegación web más comunes: teléfonos inteligentes, tabletas y computadoras de escritorio. De acuerdo, hay una gran variedad de anchos para estos dispositivos... puede tener teléfonos pequeños, teléfonos grandes, tabletas de 7", tabletas de 10", etc., por lo que no hay un ancho para todos estos dispositivos. Solo tenga en cuenta que el objetivo es hacer que una página se vea bien en diferentes anchos; simplemente puede probar diferentes diseños y diferentes anchos de ventana para ver cuándo un diseño de cuatro columnas debe convertirse en un diseño de dos columnas o de una columna. Estrategias para el uso de consultas de medios Si bien recomendamos realizar pruebas y errores para determinar qué cambios debe realizar en un diseño para que se vea mejor en diferentes dispositivos, hay algunos cambios de diseño comunes que suelen ser el objetivo de las consultas de los medios: • Ajustar columnas.Varias columnas una al lado de la otra se ven muy bien en un monitor grande (e incluso en una tableta en modo horizontal), pero no tanto en un teléfono. Además, cuatro columnas probablemente sean demasiadas para la mayoría de las tabletas en modo vertical, por lo que reducir la página a 2 o 3 columnas probablemente sea una buena idea para consultas de medios dirigidas a tabletas. Evitar los flotantes en los estilos de consulta de medios orientados a dispositivos móviles le permite apilar los contenedores de contenido de una página uno encima del otro. Probarás esta técnica en el tutorial de la página 474. • Anchos flexibles.Puede usar un diseño de ancho fijo para un navegador de escritorio, así es como lo han hecho los diseñadores durante años, pero para pantallas más estrechas como las de las tabletas y los teléfonos, un diseño fijo no encajará en la ventana. Una página de 960 píxeles de ancho Capítulo 14:diseño web adaptable www.it-ebooks.info 457 es demasiado para los 320 o 480 píxeles de un teléfono. Para teléfonos y tabletas, un buen enfoque es Preguntas de los medios establecer los anchos de sus divs de contenido paraAutoo100%.Esta configuración convierte su página de un diseño de ancho fijo a un diseño líquido o flexible. En otras palabras, no importa cuán ancha sea la pantalla de un teléfono, los divs se ajustarán al 100 por ciento. Si una persona sostiene un iPhone en modo vertical (por lo que el ancho de la pantalla es de 320 píxeles) y de repente gira el teléfono horizontalmente (cambiando el ancho de la pantalla a 480 píxeles), divs se establece enAutoo100% simplemente cambie el tamaño para adaptarse al nuevo espacio. • Apriete el espacio en blanco.Un amplio espacio entre titulares, gráficos y otros elementos de la página agrega espacio para respirar a un diseño en un monitor de 23 pulgadas, pero crea un diseño disperso y desperdicia espacio en la pantalla pequeña de un teléfono, lo que obliga a los visitantes a desplazarse demasiado. ContracciónmargenyrellenoLos valores le permiten caber más en esas pantallas pequeñas. • Ajuste los tamaños de fuente.El contraste entre titulares grandes y llamativos y un cuerpo pequeño se ve muy bien en un monitor de escritorio, pero los titulares demasiado grandes desperdician espacio en la pantalla y son difíciles de leer en un dispositivo portátil. Del mismo modo, hacer que el tipo de cuerpo sea un poco más grande en los teléfonos a menudo puede facilitar la lectura. En otras palabras, preste atención a los tamaños de fuente cuando cree estilos de consulta de medios. • Cambio de menús de navegación.Es posible que tenga una barra de navegación horizontal bellamente diseñada que abarque la parte superior de su página web, con una docena de botones para llevar a los visitantes a diferentes secciones de su sitio. Desafortunadamente, a medida que la ventana del navegador se vuelve más delgada, es posible que esos botones ya no quepan en la pantalla. En cambio, se dividirán en dos, tres o más líneas en la pantalla. Verá un ejemplo de esto en el tutorial en la página 474. Puede estar bien si la barra de navegación se convierte en unas pocas líneas en lugar de una sola, o puede ocupar demasiado de la parte superior de la pantalla, obligando a los espectadores a desplácese hacia abajo solo para llegar al primer fragmento de contenido real. Desafortunadamente, no existe una solución CSS sencilla. Muchos sitios usan Java-Script para cambiar dinámicamente el menú de navegación a un menú desplegable HTML, por lo que solo ocupa un poco de espacio (para aprender cómo hacerlo, visitehttp://css- tricks.com/convert-menu-to-dropdown/). Hay otras soluciones también. Para obtener una descripción general de los diferentes enfoques que algunos sitios adoptan para este problema, leahttp://bradfrostweb.com/blog/web/responsive-nav-patterns/yhttp:// bradfrostweb.com/blog/web/complex-navigation-patterns-for-responsivedesign/. • Ocultar contenido en dispositivos portátiles.Muchos diseñadores eliminan el contenido de las versiones móviles de los sitios. Si bien es fácil escanear varias columnas y cientos de líneas de texto en un monitor de escritorio, demasiada información en un teléfono puede ser abrumadora. Puede usar CSS para simplemente ocultar el contenido que cree que es superfluo para los usuarios móviles configurando el CSSmostrarpropiedad aninguno. Sin embargo, tenga en cuenta que cada vez que oculta contenido, está manteniendo a un visitante alejado de la información que proporciona su sitio. Esto puede ser particularmente impactante si alguien visita su sitio usando su computadora de escritorio, luego visita el sitio en su teléfono solo para encontrar la información importante que estaba buscando. 458 Css3: el manual perdido www.it-ebooks.info ahora se ha ido Además, aunque ocultas ese contenido con CSS, el HTML sigue ahí, obligando al teléfono móvil a perder tiempo y ancho de banda descargando HTML que no utiliza. • Preguntas de los medios Usa imágenes de fondo.Si coloca un banner de 960 píxeles en una página, ningún teléfono lo mostrará sin alejarse. Un enfoque es asegurarse de que sus imágenes sean lo suficientemente pequeñas como para caber dentro de la pantalla de un teléfono, o usar imágenes de fondo CSS en su lugar. Por ejemplo, puede crear un div y agregarle una clase de esta manera: <clase div="logotipo">.Luego, en la hoja de estilo para el navegador de escritorio, configure el ancho y alto del div para que coincida con el tamaño del logotipo grande, usando elimagen de fondo propiedad para insertar la imagen en el fondo. Por ejemplo: . logotipo { ancho: 960px; altura: 120px; imagen de fondo: url(images/large_logo.png) } Luego podría poner otro estilo dentro de la hoja de estilo utilizada para teléfonos móviles que cambia el tamaño de ese div y usa una imagen de fondo diferente: . logotipo { ancho: 320px; altura: 60px; imagen de fondo: url(images/small_logo.png) } En la página 472, aprenderá cómo escalar imágenes que ha insertado en el HTML usando el <imagen> etiqueta, por lo que se ajustan a diferentes anchos de navegador. NotaPuede encontrar una descripción general de las diferentes estrategias que puede usar para modificar el diseño de una página para diferentes dispositivos enwww.lukew.com/ff/entry.asp?1514. Creación de puntos de interrupción Las consultas de medios le permiten enviar diferentes estilos a los navegadores según el ancho de su pantalla. Por ejemplo, puede decirle a un navegador "Si su pantalla no tiene más de 480 píxeles, aplique estos estilos" o "Si su pantalla tiene más de 480 píxeles pero menos de 769 píxeles, entonces use estos estilos". Los diferentes valores de ancho que especifique (480, 769, etc.) a menudo se denominanpuntos de interrupciónen diseño responsivo. Básicamente, ¿a partir de qué valor comienza a descomponerse el diseño? Una manera fácil de determinar esto es tomar un diseño de escritorio completo y abrirlo en un navegador web. Tome el controlador de tamaño de la ventana del navegador y haga que la ventana sea más estrecha lentamente. En cierto punto, el diseño probablemente comenzará a verse terrible. Esas cuatro columnas, por ejemplo, se volverán muy estrechas. El punto en el que el diseño empieza a verse mal es un buen candidato para un punto de ruptura; en otras palabras, es Capítulo 14:diseño web adaptable www.it-ebooks.info 459 Preguntas de los medios un buen tamaño para definir una nueva consulta de medios y cargar algunos estilos nuevos para eliminar una columna o dos. Es común crear tres conjuntos de consultas de medios para tres puntos de interrupción diferentes: uno para teléfonos inteligentes, uno para tabletas y otro para monitores de escritorio. El punto de interrupción exacto que use variará de un diseño a otro (así como de un dispositivo a otro), pero un punto de partida común es que una pantalla de menos de 480 píxeles obtiene un conjunto de estilos, una pantalla entre 481 y 768 obtiene otro conjunto de estilos. estilos, y cualquier cosa por encima de 768 obtiene el diseño de escritorio. Sin embargo, depende de ti. Algunos diseñadores hacen que el diseño de la tableta suba a 1024 píxeles y envían estilos de escritorio a navegadores más anchos que 1024. Algunos diseñadores llegan incluso a diseñar cuatro o cinco puntos de interrupción diferentes para que sus diseños se vean mejor en una amplia gama de anchos de pantalla. Los detalles exactos sobre cómo crear estos puntos de interrupción mediante consultas de medios se encuentran en la página 461. ¿Escritorio primero o móvil primero? Otra cosa a considerar es ¿para qué dispositivo estás diseñando primero? No necesita crear tres conjuntos separados de estilos, uno para cada dispositivo de ancho al que se dirige. Puede, y debe, comenzar con unpor defectodiseño; es decir, un diseño que funciona sin media queries. Luego puede crear estilos de consulta de medios para anular los estilos predeterminados y reformatear la página para el ancho de pantalla particular. Hay dos enfoques principales: • Escritorio primero.Puede diseñar su sitio teniendo en cuenta el escritorio. Agrega todas las columnas que quieras. Pula y finalice el diseño para que se vea genial en un monitor grande. Esto se convierte en su diseño base, y puede colocar todos estos estilos en una hoja de estilo externa y vincularla a las páginas de su sitio como lo haría normalmente. Luego, agrega consultas de medios para tabletas y teléfonos. Esos estilos de consulta de medios modificarán el diseño básico del escritorio: eliminarán columnas, reducirán el tamaño del texto del título, etc. Una ventaja de este enfoque es que los navegadores que no entienden las consultas de medios obtendrán los estilos de escritorio básicos. La mayoría de los teléfonos entienden las consultas de medios, pero los navegadores de escritorio más antiguos, como Internet Explorer 8 y versiones anteriores, no. Por lo tanto, el primer enfoque de escritorio significa que IE 8 obtendrá los estilos que necesita para crear una gran presentación de escritorio. • Móvil primero.Puede darle la vuelta a ese enfoque diseñando primero para navegadores móviles. Esta vez, coloca los estilos básicos de pantalla pequeña en una hoja de estilo externa regular y luego refina el diseño para tabletas y computadoras de escritorio agregando columnas y otros ajustes para pantallas más grandes en las consultas de medios. Cualquiera que sea el método que elija, debe usar una hoja de estilo externa regular vinculada a la página web como lo haría normalmente. En esa hoja de estilo, incluya todos los estilos que son comunesal otro lado delos diferentes dispositivos. Por ejemplo, aún querrá la misma paleta de colores y las mismas fuentes en todas las versiones del sitio. También puede mantener el mismo estilo para enlaces, imágenes y otros elementos HTML consistentes. En otras palabras, no necesita crear tres conjuntos de estilos completamente separados para cada dispositivo; Comience con un conjunto que se aplique a teléfonos, tabletas y navegadores de escritorio, luego perfeccione el diseño para los dispositivos de destino de la consulta de medios. 460 Css3: el manual perdido www.it-ebooks.info Creación de consultas de medios Aconsultaes solo una pregunta que se le hace a un navegador web: "¿Tiene su pantalla 480 píxeles de Preguntas de los medios ancho?" Si la respuesta es Sí, el navegador inicia una hoja de estilo solo para ese tamaño de dispositivo (una hoja de estilo proporcionada por usted, como se explica en la página anterior). El código que hace que esto suceda se parece mucho al de cualquier hoja de estilo externa: <enlace href="css/pequeño.css" rel="hoja de estilo" media="(ancho: 480px)"> La única adición a este enlace de hoja de estilo estándar es elmedios de comunicaciónatributo, que establece las condiciones bajo las cuales un navegador utiliza una hoja en particular. En el ejemplo anterior, un navegador carga elpequeño.csshoja de estilo externa cuando alguien ve su sitio con un navegador cuyo ancho mide 480 píxeles. Los paréntesis alrededor de la consulta—(ancho: 480px)—son requeridos. Si los deja fuera, el navegador ignorará la consulta. NotaMientras que los navegadores móviles y la mayoría de los navegadores de escritorio entienden las consultas de medios, Internet Explorer 8 y versiones anteriores no lo hacen. Puede hacer que las versiones anteriores de IE entiendan sus consultas de medios agregando un poco de JavaScript al <cabeza>de su documento. Tendrás que descargar elresponder.jsarchivo dehttp://tinyurl.com/7w49a6z. Coloque el archivo en su sitio y luego vincúlelo a su página usando el <guion>etiqueta. Por ejemplo: <!--[si lte IE 8]> <secuencia de comandos src="respond.min.js"></secuencia de comandos> <![finalizar]--> Esta pequeña maniobra obliga a IE 8, 7 y 6 a comprender las consultas de los medios. Debido a que 480 píxeles es muy preciso, ¿qué pasa si alguien usa un teléfono con una pantalla más pequeña, digamos uno que solo tiene 300 píxeles de ancho? Es mejor usar un rango de valores en su consulta de medios. Por ejemplo, es posible que desee aplicar un estilo particular para las pantallas que sonMenos que o igual a480 píxeles de ancho. Lo haces así: <link href="css/small.css" rel="stylesheet" media="(max-width:480px)"> La notación "(ancho máximo: 480px)"es lo mismo que decir "para pantallas que tienen como máximo 480 píxeles de ancho". Así que los estilos dentro delpequeño.cssEl archivo se aplica a pantallas de 480 píxeles de ancho, 320 píxeles de ancho y 200 píxeles de ancho, por ejemplo. Así mismo, hay unancho mínimoopción que determina si un navegador estáal menos un cierto ancho. Esto es útil cuando se dirige a un dispositivo que es más grande que un teléfono móvil o una tableta. Por ejemplo, puede escribir este enlace para aplicar estilos a pantallas más anchas que los 768 píxeles de muchas tabletas: <link href="css/large.css" rel="stylesheet" media="(min-width:769px)"> Para usar esta hoja de estilo, la ventana del navegador debe tener al menos 769 píxeles de ancho, es decir, 1 píxel más ancho que 768, el ancho de algunas tabletas. Capítulo 14:diseño web adaptable www.it-ebooks.info 461 Preguntas de los medios Y finalmente, puede establecerambosanchos máximos y anchos mínimos para dispositivos de destino que caer entreteléfonos y navegadores de escritorio. Por ejemplo, para crear un conjunto de estilos para una tableta de 768 píxeles de ancho, podría usar este código CSS: <link href="css/medium.css" rel="stylesheet" media="(min-width:481px) and (maxwidth:768px)"> En otras palabras, la pantalla del navegador debe tener al menos 481 píxeles de ancho, pero no más de 768 píxeles de ancho. Estemedio.cssEl archivo no se aplicaría a un teléfono inteligente de 320 píxeles de ancho, ni se aplicaría a un navegador de escritorio con un ancho de pantalla de 1024 píxeles. NotaLas consultas de medios CSS3 pueden hacer más que solo verificar el ancho de un navegador. El estándar de consulta de medios actual establece que puede verificar la altura, la orientación (si un visitante sostiene un teléfono móvil en modo vertical u horizontal) e incluso si un dispositivo usa una pantalla a color o monocromática. Hay algunas otras características del navegador que puede consultar con las consultas de medios, pero no todos los navegadores admiten las consultas. Puede obtener más información sobre consultas de medios en el sitio web d