Cómo crear un sitio decente con el mínimo de CSS (2023)
(thecascade.dev)- Muchos desarrolladores sufren problemas innecesarios por el exceso en el diseño de CSS
- Con solo unos estilos globales mínimos, es posible crear páginas suficientemente limpias y responsivas
- Limitar el tamaño y mostrar como bloque los elementos imagen, SVG y video puede resolver problemas básicos de layout
- Usar la fuente system-ui, un interlineado adecuado y un límite en el ancho máximo de los párrafos puede mejorar la legibilidad
- Para reflejar preferencias del entorno como el modo oscuro del sistema operativo, es necesario aplicar la propiedad color-scheme
Cómo crear un sitio decente con el mínimo de CSS
El problema del exceso de CSS y el enfoque propuesto
- Muchas personas, al crear un sitio web, complican en exceso el diseño de CSS
- Incluso con un CSS mínimo, es posible crear una página responsiva, suficientemente pulida y fiel a lo esencial
HTML básico y manejo de imágenes
-
Incluso escribiendo solo HTML básico, un sitio ya ofrece una respuesta adaptable básica
-
Como las imágenes pueden causar problemas de overflow en el layout, se aplica el siguiente CSS
img { max-width: 100%; display: block; } -
Si aparecen problemas similares con elementos SVG y video, se puede ampliar así
img, svg, video { max-width: 100%; display: block; }
Mejora de la tipografía
-
La fuente predeterminada del navegador puede sentirse poco atractiva en términos de diseño
-
Usar system-ui como familia tipográfica permite aplicar la tipografía base adecuada para cada plataforma
-
Como el tamaño de fuente y el interlineado predeterminados tienden a ser un poco pequeños, se recomienda configurarlo así
body { font-family: system-ui; font-size: 1.25rem; line-height: 1.5; } -
Solo con esta configuración ya se puede lograr una gran mejora frente a los valores predeterminados del navegador
Soporte para modo oscuro
-
Como muchos usuarios prefieren el modo oscuro, resulta útil aplicar la propiedad color-scheme para seguir la configuración del sistema operativo
html { color-scheme: light dark; } -
Esta propiedad hace que los estilos del user agent reflejen automáticamente el tema preferido del sistema
-
También puede definirse como atributo en la etiqueta HTML
<html lang="en" color-scheme="light dark"></html> -
Más allá de la preferencia del sistema, también es una buena best practice permitir que el usuario elija directamente el esquema de color
Limitación del ancho del contenido
-
La longitud de los párrafos de contenido es un factor importante que influye mucho en la legibilidad
-
En general, lo ideal es configurar el texto principal para que se muestre en líneas de 45 a 90 caracteres
-
Como se muestra a continuación, limitar el ancho máximo del elemento
mainpermite mejorar la legibilidad de los párrafosmain { max-width: min(70ch, 100% - 4rem); margin-inline: auto; } -
La función
min()elige el valor más pequeño entre70chy100% - 4rem -
margin-inline: autopermite centrarlo horizontalmente -
Según sea necesario, en lugar de
maintambién se puede usar una clase .container o .wrapper
Ejemplo final de CSS mínimo
-
Si se reúne todo lo anterior, es posible construir un sitio estable con un conjunto mínimo de CSS como este
html { color-scheme: light dark; } body { font-family: system-ui; font-size: 1.25rem; line-height: 1.5; } img, svg, video { max-width: 100%; display: block; } main { max-width: min(70ch, 100% - 4rem); margin-inline: auto; }
Cierre y escalabilidad
- El ejemplo anterior puede usarse de inmediato como punto de partida liviano o para páginas pequeñas
- En la mayoría de los casos, lo más conveniente es expandirlo agregando estilos adicionales sobre esta base
1 comentarios
Opiniones en Hacker News
system-uihttps://infinnie.github.io/blog/2017/systemui.html
stde la fuente me parece tan fea que no quiero recibir consejos tipográficos de ese sitio webmax-width? El público objetivo es cualquiera que esté haciendo una página personalEso está mal. La sintaxis correcta es
El autor del artículo lo escribió bien en algunos ejemplos, pero en el primero está mal y eso puede causar confusión
así. Como tanto
timescomoTimes New Romanfuncionan bien sin comillas, no sé si es una excepción por ser una fuente antigua o si CSS hace una coincidencia de nombres bastante flexibleA esto nada más le quiero llamar dinero fácil
https://meyerweb.com/eric/books/
html/cssdirectamente resulta incómodo para el layout y la personalización. Además, casi no hay temas de Astro para blogs personales; la mayoría son corporativos o muy recargados. Al pensar en todo esto, vuelve a sorprenderme lo difícil que se ha vuelto diseñar un sitio web. Me pregunto cómo los desarrolladores web logran seguirle el paso a esta corriente de frameworks, componentes e innumerables dependenciasfranklin.jlme resultó perfecto en matemáticas, manejo de código inline y limpiezacontent-width, fuentes grandes yline-heightamplio. Muchos sitios hoy usan fuentes demasiado grandes y mucho espacio entre líneas, así que acabas haciendo demasiado scroll. El tamaño de fuente predeterminado del navegador ya está bien ajustado al sistema, así que es mejor dejarlo como está y confiar en el zoom0img { max-width: 100%; }Esta configuración debe usarse siempre junto con
height: auto. Si no, la proporción de la imagen se rompeimg, svg, video { max-width: 100%; }En Chrome 141, por un problema con
width/heighten elementos SVG anidados, el cálculo deautosale mal. Por ahora hay que manejarlo consvg:where(:not(svg svg))La fuente
system-uino es simplemente un reemplazo desans-serif. Si usas la fuente de UI del sistema para el cuerpo del contenido, en algunas combinaciones de sistema operativo e idioma puede volverse casi ilegible. Si necesitassans-serif, lo correcto es usarsans-serifEl tamaño de fuente predeterminado es un poco pequeño, así que unos 18~20px (
1.25rem) se sienten adecuados. Pero en pantallas pequeñas es mejor no pasar de1remSe suele recomendar un
line-heightbase de 1.5~1.7, pero 1.7 es demasiado amplio en pantallas pequeñas. Lo adecuado es 1.4~1.5, y según el tamaño de pantalla se puede ajustar entre 1.4~1.6font-family: System UI;Esto es un error de sintaxis clarísimo. Basta revisar la hoja de estilos para verlo enseguida
Separar el tema oscuro/claro del sistema del tema de la web es una buena idea. Firefox hace que el contenido siga el tema del sistema por defecto, y también permite ajustarlo aparte
main { max-width: min(70ch, 100% - 4rem); margin-inline: auto; }Eso implica un margen mínimo de unos
2rem(o2rem+8pxsi sumas elmarginpredeterminado debody). Es demasiado espacio, y además el lugar donde se aplica se siente raro. Si vas a aplicarlo amain, es más lógico usarpadding, por ejemploPero en la práctica también necesitas el mismo espacio lateral en
headeryfooter, así que es mejor ajustar elmargindebodyAsí puedes reducir el espacio lateral de ~40px a algo cercano a 16px