Armonía | En definitiva...

CSS Crib Sheet, de Dave Shea

Esto es una traducción de un artículo escrito por Dave Shea.


Sin duda alguna seguro que te has encontrado con un montón de problemas extraños cuando has tratado de crear un sitio Web usando CSS. Habrás terminado dándote cabezazos contra la pared una y otra vez. Este documento es un intento de hacer el proceso de diseño más sencillo, y tener una referencia rápida para ojear cuando tengas algún problema.

Si tienes algo que añadir al texto, por favor coméntalo aquí.

Existen traducciones disponibles en los siguientes idiomas: Francés, Alemán, Holandés, Italiano, Húngaro, Finlandés, Ruso, Portugués, Japonés y Chino simplificado. Eres libre de traducirlo a otros idiomas.

Cuando dudes, valida.
Cuando hagas pruebas, puedes ahorrarte muchos dolores de cabeza simplemente validando tu código primero. Código XHTML/CSS mal escrito puede acabar en un montón de problemas con tu layout.
Crea y prueba tu CSS en el navegador disponible más avanzado antes de probarlo en otros, no después.
Si creas un sitio Web probando en un navegador "roto", tu código se basará en los problemas de ese navegador. Cuando sea hora de probarlo en un navegador mejor adaptado a los estándares, te frustrará ver que todo se dibuja de forma incorrecta. En lugar de eso, empieza desde la perfección de un buen navegador, y luego haz las mejoras para los navegadores menos capaces. Tu código será más estándar desde el principio, y no tendrás que hacer muchos "hacks" para soportar otros navegadores. Hoy día, los mejores navegadores son Mozilla, Safari u Opera.
Cuando uses float en tu layout, asegúrate de limpiarlos correctamente.
Los float son especiales, y no siempre se comportan como esperas. Si te encuentras con que un elemento flotado se sale del elemento contenedor, o simplemente no se comporta como esperas, asegúrate de que lo que quieres es correcto. Échale un ojo al tutorial de Eric Meyer acerca de este problema.
Márgenes colapsados; Aplica padding o un borde para evitarlo.
Puedes pelearte con un espacio en blanco de más donde no lo quieres, o con nada de espacio donde quieres que haya algo. Si estás usando márgenes para ello, su colapsamiento será probablemente el culpable. Andy Budd lo explica a la perfección.
Trata de evitar darle padding o bordes y un ancho fijo a un elemento.
IE5 interpreta incorrectamente el modelo de cajas de CSS, lo que acarrea un montón de problemas con muchas cosas. Hay muchos modos de "rodear" el problema, pero es mucho mejor evitarlo del todo dándole el padding al elemento padre en lugar de al hijo que tiene el ancho fijo.
Evita el "Flash of Unstyled Content" en Internet Explorer.
Si usas @import para tus hojas de estilo externas, más tarde o más tempranos notarás cómo IE muestra un "flash" de la página sin formato antes de aplicar el CSS. Esto puede evitarse.
No uses min-width en IE.
Este atributo no es soportado por IE. Pero sí que trata width como min-width hasta cierto punto, así que con un poco de filtrado, puedes obtener el mismo resultado.
Cuando dudes, disminuye el ancho
Algunas veces los errores en el redondeo causarán cosas como que 50% + 50% sea igual a 100.1%, lo que termina rompiendo la maquetación en algunos navegadores. Trata de cambiar 50% por 49%, o incluso 49.9%.
¿El contenido no se muestra correctamente en IE?
Puede que estés sufriendo el bug Peekaboo, especialmente si se muestra cuando pasamos por encima de un enlace con el ratón. Mira en Position is Everything para una solución.
Ten cuidado al estilizar los enlaces si usas anclas internas.
Si usas anclas internas en tu código, (<a name="ancla">), te darás cuenta de que le afectan las pseudoclases :hover y :active. Para evitar esto, lo mejor es que uses id para las anclas, o estilizar con otra sintaxis ligeramente distinta: :link:hover, :link:active
Asegúrate de que el efecto que deseas existe en realidad.
Hay algunas extensiones propietarias de CSS que no están en la especificación oficial. Si estás tratando de aplicar filter o estilos a las barras de desplazamiento, estarás trabajando con código propietario que no funcionará en ningún navegador salvo en IE. Si el validador te dice que el código que estás usando no está definido, lo más probable es que sea propietario, y no funcione de forma consistente entre navegadores.
Divide y conquista: usa los comentarios para desactivar grandes secciones de estilos.
Especialmente útil cuando trabajamos con grandes y desconocidas hojas de estilos. Comenta la mitad del código. Si el problema aún ocurre, significa que está en la otra mitad. Comenta lo que queda y prueba de nuevo. Si el problema deja de ocurrir, está en la sección comentada. Refina el ámbito de los comentarios y prueba de nuevo. Continua hasta que el problema haya sido identificado.
Recuerda “LoVe/HAte” en los enlaces.
Cuando especifiques las pseudoclases para los enlaces, siempre recuerda este orden: Link, Visited, Hover, Active. Otro orden no funcionará de forma consistente. Considera el uso de :focus también, y modifica el orden por LVHFA, (o “Lord Vader's Handle Formerly Anakin”, tal y como sugiere Matt Haughey)
Recuerda “TRouBLEd” para los bordes.
La forma corta, (shorthand), de aplicar los estilos para bordes, márgenes y padding tiene un orden específico: en el sentido de las agujas del reloj empezando por arriba, o Arriba, Derecha, Abajo, Izquierda. Por tanto, margin: 0 1px 3px 5px; resulta en que no hay márgen por arriba, 1 píxel de márgen a la derecha, etc.
Especifica unidades para todos los valores que no sean cero.
CSS requiere que especifiques unidades en todas los valores como fuentes, márgenes, tamaños, etc. (con la excepción de line-height, que da la posibilidad de no usarla). Cero es cero siempre, sean píxeles, em, o cualquier otra cosa, no hace falta especificarle la unidad. Ejemplo: padding: 0 2px 0 1em;
Prueba diferentes tamaños de fuente.
Navegadores avanzados, como Mozilla u Opera, permiten redimensionar el tamaño de la fuente, no importa la unidad que uses. Algunos usuarios tendrán el tamaño de fuente del navegador definido más grande o más pequeño que el que tengas tú. Intenta acomodar tu diseño al rango más amplio posible.
Haz que las mayúsculas y las minúsculas concuerden entre tu HTML y tu CSS
Algunos navegadores son sensibles al cambio entre minúsculas y mayúsculas. Usar una clase como homePage está bien, siempre que seas consistente en el uso de la notación especificada. Aplicarle estilos a homepage causará problemas en algunos agentes de usuario estrictos, (como Mozilla).
Prueba embebido; lanza importado.
Si trabajas con estilos embebidos en el código HTML eliminas cualquier potencial posibilidad de errores de cacheo mientras pruebas. Esto es muy importante cuando trabajamos con algunos navegadores de Mac. Pero asegúrate de que cambias los estilos a una hoja externa, importada con @import o colocada con link antes de lanzar la Web
Añade bordes obvios para ayudar a encontrar fallos en la maquetación.
Una regla universal como div {border: solid 1px #f00;} puede ser un camino largo para encontrar errores en la maquetación. Pero colocar un borde específico a un elemento en concreto ayudará a identificar posibles problemas que pueden no resultar obvios de ningún otro modo.
No uses comillas en las rutas de las imágenes.
Cuando uses una imagen de fondo, evita colocar la ruta entre comillas. No son necesarias, y IE5/Mac tiene problemas con ellas.
No enlaces a hojas de estilo vacías colocadas con vistas de futuro, (para estilos de impresión, etc.)
IE5/Mac tiene problemas con las hojas de estilo en blanco, y el tiempo de carga de la página será mayor. En su lugar, coloca al menos una regla, o incluso un comentario, en la hoja de estilos para que este navegador no de problemas.

Además, hay otros elementos que se aplican específicamente al lado funcional de las cosas, pero se deberían tener en cuenta cuando desarrollemos:

Organiza tus archivos CSS
Asegúrate de comentar tus bloques de CSS de manera apropiada, agrupando selectores relacionados, y estableciendo unas reglas a la hora de nombrar las clases y los identificadores, los espacios en blanco y el indentado, (recomendación: usa un espacio simple en lugar de tabulación para evitar problemas multiplataforma), y un orden en las propiedades.
Nombra las clases y los identificadores por su función y no por su aspecto
Si creas una clase .azulgrande, y más tarde te piden que cambies el texto por pequeño y rojo, esa clase deja de tener sentido. En su lugar usa clases descriptivas, como .copyright o .comentario.
Confía en los filtros CSS solo como última opción.
Los hacks y los filtros CSS pueden ayudarte a aplicar, o no aplicar, estilos CSS de forma selectiva a varios elementos. En lugar de usarlos cada vez que encuentres un problema, encuentra la forma de aplicar el mismo efecto de una manera más "cross-browser", (para todos los navegadores). Aquí hay una gran lista de filtros CSS.
Combina selectores.
Mantener tu CSS ligero es muy importante para minimizar el tiempo de descarga; siempre que puedas, trata de agrupar selectores , usar las herencias, y minimizar la redundancia usando métodos cortos, (shorthand).
Ten en cuenta la accesibilidad cuando uses el reemplazamiento por imágenes
La técnica FIR tiene algunos problemas con los lectores de pantalla, y con aquellos que tienen las imágenes desactivadas. Existen alternativas; usa la más adecuada.

Avisos, (trackbacks)

#715 - El Miércoles 21 Junio 2006 a las 10:29 CET, en "Cruzul" se escribió:

Guía rápida CSS - CSS Crib Sheet

Isto é unha tradución ó galego dun artigo escrito por Dave Shea, e feito fundamentalmente sobre a tradución ó español de Juan G. Hurtado en Armonía, e a portuguesa de Maurício Samy Silva Dicas para desenvolver CSS.

#744 - El Martes 18 Julio 2006 a las 14:55 CET, en "SigT" se escribió:

CSS y diseños cross-browser

Definir lo que es hacer un diseño en CSS+XHTML que «se vea igual» o mejor dicho lo más parecido posible y sin problemas graves en todos los navegadores se puede escribir en una frase: Un dolor de huevos. Siempre he tenido la mania de hacer muchas ...

Los avisos para este post están cerrados.

Comentarios

[ Hacer un Comentario ]

  1. #703 - Escrito por Anla, el Miércoles 14 Junio 2006 a las 21:31 CET.

    Muy buena la guía de consejos.

    Yo, personalmente, no suelo añadir un borde obvio para ber los fallos de maquetación pq siempre hay problemas entre IE y Firefox a la hora de contar o no el pixel del borde como parte de width de la imagen o no.

    No me explico muy bien, el acso es q, si todo esta perfectamente cuadrado y añado un borde de 1 px, se descuadra en un navegador (no recuerdo cual).

    La solución más práctica y rápida es usar

    background-color:red;

    por ejemplo, y con una amplia gama de colores puedes colorear todos los elementos de la página, y ver donde se pisan o salen o todo eso.

    Espero q os sea útil.

  2. #704 - Escrito por Juan G. Hurtado, el Jueves 15 Junio 2006 a las 11:38 CET.

    Yo también suelo hacer eso :P

  3. #706 - Escrito por stan, el Jueves 15 Junio 2006 a las 19:53 CET.

    muy buena traduccion juan, y sobre todo, varios detalles que no tomamos en cuenta de repente cuando estamos desarrollando, ya sea por cuestiones de tiempo o olvido.

  4. #708 - Escrito por nicot, el Viernes 16 Junio 2006 a las 00:20 CET.

    excelente, archivado e impreso, solo falta estudiarlo a fondo.
    gracias ;)

  5. #710 - Escrito por kitune, el Domingo 18 Junio 2006 a las 23:11 CET.

    www.shinkitune.com/blogon...

  6. #711 - Escrito por Juan G. Hurtado, el Lunes 19 Junio 2006 a las 08:51 CET.

    Muy buena traducción Kitune :P Antes de traducirla yo estuve buscando un poco por Google a ver si la encontraba, pero no di con ella, así que me he trabajado algo que ya estaba hecho. Pero bueno, cosas que pasan.

  7. #713 - Escrito por cvander, el Martes 20 Junio 2006 a las 03:59 CET.

    Muy bueno el texto. Gracias por la traducción.

  8. #714 - Escrito por Pablo Viojo, el Martes 20 Junio 2006 a las 18:50 CET.

    Buenisimo, será tenido en cuenta ;)

  9. #721 - Escrito por kitune, el Martes 27 Junio 2006 a las 18:18 CET.

    No pasa nada :) A mi tambien me ha pasado mas de una vez.

  10. #748 - Escrito por jcastellon, el Martes 25 Julio 2006 a las 21:40 CET.

    Hola, tengo poco tiempo en esto de Photoshop y realmente me a gustado mucho la forma en que trabaja photoshop con los layer y los efectos que se pueden dar a las imagenes, pero una ves que estoy trabajando en algun diseño para una web y escribo algun texto, a la hora de exportar todo el contenido este se transforma en una imagen, y eso no es lo que deseo que pase, la idea es que el texto que de enforma de texto y las demas partes pueden que dar como una imagen. como aharia en este caso para exportar el contenido

  11. #749 - Escrito por Juan G. Hurtado, el Miércoles 26 Julio 2006 a las 08:04 CET.

    Sinceramente, lo ideal es no exportar el contenido. Lo ideal es crear el diseño en Photoshop, y luego maquetarlo a mano en (X)HTML + CSS, pero claro, para eso hay que tener ciertos conocimientos, el resultado final hará que te merezca la pena.

  12. #751 - Escrito por jcastellon, el Jueves 27 Julio 2006 a las 22:43 CET.

    Hola Juan Hurtado, algun tutorial que me recomiendes y pueda bajar para maquetar los diseños, te lo agradeceria mucho.

  13. #752 - Escrito por Juan G. Hurtado, el Viernes 28 Julio 2006 a las 08:36 CET.

    Aquí te dejo un excelente recurso para ver layouts hechos con CSS. Son layouts básicos, pero todos se basan en el mismo XHTML, por lo que podrás ver diferentes formas de posicionar elementos para formar maquetaciones.

    Layout Gala

  14. #1158 - Escrito por RicPlan, el Jueves 10 Agosto 2006 a las 08:54 CET.

    MUY bueno...
    Oye, a Armonia le falta el background-color a #FFF en body.

  15. #6959 - Escrito por xalemany, el Miércoles 18 Octubre 2006 a las 19:46 CET.

    Muy buena traduccion muchas gracias por los consejos.

Hacer un comentario

Los comentarios para este post están cerrados.

Búsqueda

Acerca de este blog

Armonía es el blog personal de Juan G. Hurtado, (C. V.). Aquí se tratarán muchos temas, pero sobre todo los relacionados con la programación, la tecnología, el desarrollo y los estándares en la World Wide Web.

Si quieres puedes visitar también las galerias de fotos guardadas en su cuenta Flickr, o su colección de enlaces en del.icio.us.

Velas en la oscuridad Mano del autor del blog en blanco y negro Trozo del paisaje desde la ventana del autor del blog Palma de la mano del autor del blog en blanco y negro

Lectura

CSS Mastery, de Andy Budd
Portada del libro Bulleproof Web Design
Muy buen libro, escrito por Andy Budd en el que nos muestra un repaso muy bien detallado por infinidad de técnicas ingeniosas para conseguir que nuestras hojas de estilo "hagan magia"
[Leer revisión]
Bulletproof Web Design, de Dan Cedelhorm
Portada del libro Bulleproof Web Design
Un libro genial en el que Dan Cedelhorm nos enseña cómo blindar nuestras páginas para evitar que se "rompan" ante configuraciones no habituales de los navegadores de los visitantes, (aparte de otras muchas cosas)
[Leer revisión]
Agile Web Development With Rails, de Dave Thomas y David Heinemeier
Portada del libro Agile Web Development With Rails
Una perfecta introducción a Ruby on Rails, el framework de desarrollo Web que está causando furor en estos momentos...
[Leer revisión]

Contacto

  • e-Mail: juan.g.hurtado@gmail.com
  • Jabber: juan.g.hurtado@jabberes.org
  • Skype: juan.g.hurtado
  • Messenger: the_micro_cuts@hotmail.com