La Mentalidad CSS
La Mentalidad CSS
¡Ah sí, CSS!. Rara es la semana en la que no es objeto de una acalorada discusión online:
que si es muy difícil, que si es muy fácil, es impredecible, está anticuado...
No sé por qué CSS provoca tantas emociones diferentes en los desarrolladores, pero tengo
una idea de por qué a veces puede parecer ilógico o frustrante: necesitas
cierta mentalidad o manera de pensar para escribir un buen CSS.
En realidad, es probable que necesites ya una cierta mentalidad para dedicarte a escribir
código en general, pero la naturaleza declarativa de CSS hace que sea particularmente
difícil de "pillarle el truco", especialmente si piensas en él en términos de un lenguaje de
programación "tradicional".
CSS, por otro lado, funciona en un lugar (el navegador) que nunca se puede controlar
totalmente, por lo que tiene que ser flexible por defecto. Se trata menos de "programar la
apariencia" y más de traducir un diseño en un conjunto de reglas que comuniquen la
intención que hay detrás del mismo. Deja suficiente espacio y el navegador hará el trabajo
duro por ti.
Abre tus herramientas del desarrollador y mueve el cursor sobre los elementos para ver
las cajas que están generando, o utiliza un estilo "instrumental" como outline: 2px
dotted hotpink para visualizar sus límites ocultos.
La cascada es tu amiga
La cascada - un concepto aterrador, lo sé. Repite "Cascada" tres veces frente a un espejo y
en algún lugar, se romperá un estilo no relacionado.
Si bien hay razones legítimas para evitar la herencia por cascada, no significa que todo sea
malo. De hecho, cuando se usa correctamente, puede hacer tu vida mucho más fácil.
La parte importante es saber qué estilos pertenecen al ámbito global y cuáles están mejor
restringidos a un componente. También ayuda conocer qué valores predeterminados
se transmiten para evitar la declaración de reglas innecesarias.
background-color : white ;
background-image : none ;
background-position : 0% 0% ;
background-size : auto auto ;
background-repeat : repeat ;
background-origin : padding-box ;
background-clip : border-box ;
background-attachment : scroll ;
Es mejor ser explícito. Si lo que quieres es cambiar el color de fondo, usa tan
solo background-color.
Sé siempre flexible
CSS se ocupa de gestionar una gran cantidad de variables desconocidas: el tamaño de la
pantalla, el contenido dinámico, las capacidades del dispositivo... Y la lista continúa. Si tus
estilos son demasiado cortos o restrictivos, es probable que una de estas condiciones
variables te haga tropezar. Es por eso que un aspecto clave en la escritura de un buen CSS
es adoptar su flexibilidad.
Los números mágicos son valores aleatorios "hardcodeados". Algo como esto:
.thing {
width : 218px ; /* ¿Por qué? */
}
En su lugar, piensa en lo que realmente quieres lograr en esa situación. ¿Alineación? ¿Una
relación de aspecto? ¿Distribuyendo cantidades iguales de espacio? Todos estos tienen
soluciones flexibles. En la mayoría de los casos, es mejor definir una regla para la
intención, en lugar de codificar la solución calculada.
El contexto es clave
Para muchos conceptos de maquetación es obligatorio entender la relación entre los
elementos y su contenedor. La mayoría de los componentes son conjuntos de nodos
padre e hijo. Los estilos aplicados al padre pueden afectar a los descendientes, lo que
podría hacer que hagan caso omiso de otras reglas. Tanto Flexbox como Grid
y position:absolute son fuentes comunes de tales errores.
El contenido cambiará
Ten siempre en cuenta que lo que ves es solo un estado de la interfaz de usuario dentro
de un espectro más grande. En lugar de estilizar la cosa de la pantalla, intenta crear un
"plano" o "mapa" del componente. Luego, asegúrate de que lo que le añadas no rompa tu
estilo.
Las cadenas de texto pueden ser más largas de lo previsto o contener caracteres
especiales, es posible que falten imágenes o que tengan dimensiones extrañas. Las
pantallas pueden ser muy estrechas o extremadamente anchas. Esos son todos los
estados que necesitas tener en cuenta de antemano y a los que anticiparte.
El error número uno cometido tanto por diseñadores como por desarrolladores
es asumir que las cosas siempre se verán como en la maqueta estática . Te puedo
asegurar, no va a ser así.
Encuentra patrones y reutilízalos
Cuando te propones convertir una maqueta de diseño en código, suele ser útil hacer un
inventario previo de los diferentes patrones incluidos en el diseño. Analiza cada pantalla y
toma nota de cualquier concepto que aparezca más de una vez. Puede ser algo pequeño
como un estilo tipográfico, o grande como un patrón de maquetación determinado.
¿Qué se puede abstraer? ¿Qué es único? Pensar en las piezas de un diseño como cosas
independientes las hace más fáciles de razonar y ayuda a dibujar los límites entre los
componentes.