Estilos CSS para Estructurar y Diseñar un Sitio Web
Resumen
¿Cómo aplicar estilos al marcado HTML para lograr un diseño profesional?
Transformar un diseño desde el concepto hasta su realización en HTML y CSS puede ser una tarea desafiante pero sumamente satisfactoria. Al aplicar estilos al marcado HTML, es esencial no solo incluir los principios básicos sino también implementar técnicas avanzadas que garanticen un resultado profesional y responsivo. Aquí te mostramos cómo puedes hacerlo siguiendo un enfoque sistemático y efectivo.
¿Cómo iniciar con la eliminación de estilos por defecto?
Los estilos por defecto de los navegadores pueden interferir con el diseño que deseas lograr. Para evitar esto:
Establece los márgenes y el relleno de ciertas etiquetas a cero:
body{margin:0;padding:0;position: fixed;width:100vw;height:100vh;overflow: hidden;/* Evita el scroll */}
Con este método, eliminas el scroll no deseado y aseguras que todo el contenido sea visible sin desplazamientos.
¿Cómo personalizar elementos de enlace?
Los enlaces en las páginas web, representados por las etiquetas de anclaje (<a>), suelen tener un estilo predeterminado. Aquí demuestra cómo personalizar estos elementos:
a{text-decoration: none;display: inline;color:black;/* Color negro para el texto */}
Esto garantiza que los enlaces sean estéticamente consistentes con el diseño planeado, sin subrayados innecesarios u otros estilos estándar.
¿Cómo estructurar el diseño usando CSS Grid y Flexbox?
Para un layout adaptable y organizado, CSS Grid y Flexbox son herramientas poderosas. Aquí mostramos cómo puedes implementarlas para secciones del header y redes sociales:
El uso adecuado de estas técnicas no solo contribuye a un diseño responsivo sino que también facilita la adaptación del contenido en diferentes dispositivos.
¿Por qué es importante usar clases descriptivas?
Nombrar adecuadamente las clases en CSS es crucial para la mantenibilidad y claridad del código. Opta por nombres específicos y descriptivos para cada clase, permitiendo entender la función y ubicación de cada elemento a simple vista:
Usa nomenclatura BEM (Block Element Modifier) para estructuras complejas.
Evita nombres genéricos como .box o .content.
¿Cómo abordar la definición de proporciones en el diseño?
Usar proporciones es una excelente manera de asegurarte que los elementos se adapten armoniosamente a diferentes tamaños de pantalla. Establecer proporciones utilizando fracciones es una técnica eficaz:
Esta técnica permite crear un diseño dinámico donde las proporciones entre columnas o filas se mantienen equilibradas sin importar el tamaño exterior.
¿Qué técnicas adicionales de CSS pueden enriquecer la experiencia del usuario?
Algunas otras técnicas y propiedades de CSS que puedes considerar incluyen:
Transiciones y animaciones: mejorar la interactividad y el feedback visual.
Media Queries: permitir un diseño verdaderamente responsivo.
Sombra y tipografía personalizada: para añadir profundidad y personalización al diseño.
Implementar estos principios en tus proyectos no solo enriquece el resultado visual sino que también mejora la experiencia del usuario. Al dominar el arte de combinar CSS con un HTML bien estructurado, estarás más cerca de convertirte en un experto en diseño web. ¡Continúa perfeccionando tus habilidades y explorando nuevas técnicas!
No me queda claro la razón de usar position: fixed en el body,
Tampoco el reset del padding que es innecesario
Los nombres de clases me resultan muy largos y creo que no tiene mucho de BEM.
Crea un grid con 2 fr (1 y 1) donde luego adentro le agrega al child un height, que podría haberle asignado directamente al tamaño de cada row en vez de usar fr.
Me resultó extraño el abuso de uso de sections, hasta creo que podrían usarse menos para lograr el mismo resultado.
Tengo que ver la próximas clases, pero me parece poco práctico realmente.
a mi tampoco me terminan de encajar algunas lineas de codigo, me parecen algo inecesarias... sin embargo para mi css es como pintar, no todos tomamos los pinceles de la misma forma.
Position fixed es para que no haya scroll. Hay otras formas de lograr eso, pero esta es una muy sencilla.
Lo del padding, es una buena costumbre que cuando se hace este estilo de resets se resetee el padding y el margin a 0.
Coincido con lo de las clases y lo de secciones. De hecho, por razones semánticas, sería mejor usar div en algunos casos.
** *nota **
en vez de usar :
position: fixed;
left: 0px;
right: 0px;
bottom: 0px;
top:0px;
es valido usar :
width: 100vw;
height: 100vh;
grcias!!!! pero cuál es la diferencia? o es lo mismo
Gracias :D
Un error que cometía mucho al inicio con Flex-box es que me confundía con el lugar en donde poner las propiedades justify-content y align-items. Estás propiedades siempre se trabajan en un contenedor padre que contenga la propiedad display: flex. Les comparto una guía de css-tricks que me ayudo mucho para aprender a utilizar Flex-box.
un clásico, también pase por eso hermano!!
Yo con el curso de Grid, lo entendí mejor.
CONSEJO: Como parte de las buenas prácticas no es recomendable resetear los estilos con el asterisco:
Para eso ya está Normalize.css, hace que los navegadores procesen todos los elementos de manera más consistente y en línea con los estándares modernos. Precisamente se dirige solo a los estilos que necesitan normalizarse.
Dejo el link: https://necolas.github.io/normalize.css/8.0.1/normalize.css
Mira, traté de usar normalize, pero mueve demasiado los estilos por defecto.
Por el momento uso el reset básico con el *, el box sizing, margin y padding. Tal vez en un futuro cercano use ese normalize, pero sí que me hizo doler la cabeza cuando lo usé.
En realidad parte de las buenas prácticas es resetear esos estilos al Body, el Normalize está muy desactualizado y no es recomendable usarlo ya, lo mejor es aprender uno mismo a hacerlo.
También se pude usar:
body { min-height: 100vh;}
En ciertos casos esto no será suficiente. En lugar de min-height, solo usa height.
body{overflow:hidden;/* Para asegurar
}
Los hijos deberían tener un alto de 25% , 75% respectivamente
creo qe es erroneo poner display:inline; cuando ya el elemento "a" es de linea no de bloque, y colocar justify-items: flex-end; esta de mas ,ya que el self ya lleva al contenedor a la derecha osea hay codigo de mas bueno eso pude ver revisando el codigo, capas este mal pero para aprender al detalle estoy practicando elemento por elemento y tratar de comprender el flujo
Justamente me surgio la duda de para que le agregamos el justify-items: flex-end;
En este caso, da igual poner
header .header-icons { }
que solo poner
.header-icons { }
Ya que solo tenemos esa clase en una sección. Si tuviéramos esa misma clase en otras secciones donde quisiéramos que se viera diferente, pues se necesitaría la aclaración...
Justo venía a preguntar eso, jaja. Gracias por la aclaración, porque no entendía porqué lo escribía así si es lo mismo no ponerlo.
Sí, funciona de la misma forma aunque es importante tomar en cuenta que en proyectos más grandes, ser tan específico como se pueda ayuda a no perderse.
Si quieren evitarse tener que hacer el "reset" de los elementos HTML a mano y que aun asi tengan las mejores prácticas en su página, les recomiendo que usen Normalize CSS que les hara todo el trabajo por ustedes, es simplemente codigo css que debemos de poner en un archivo aparte (yo normalmente hago esto) e importarlo como el primer archivo css en su pagina HTML, así tendrán las mejores practicas de CSS, además de que el código viene comentado detallando que hace cada parte. se los recomiendo para sus proximos proyectos.
Muchísimas gracias! Cada día se aprende algo nuevo 🚀😎
Pienso que el instructor colocó mucho código CSS para hacer el header, yo lo logré con dos clases solamente y usando Display Flex (Aparte que el curso es de Grid), pero de igual manera al él haberlo hecho de una manera larga, aprendí sobre Justify-self, no hay camino largo que venga con mala indencion :D #NuncaParesDeAprender
Es normal, un buen profe no debe enseñar a medias o desde el inicio con atajos y trucos. Esta tratando de que razonemos la logica de programar (quiero pensar) si me equivoco discúlpenme pues no se mucho pero aunque cuesta mas prefiero los caminos largos y solo asi entendere de atajos
Es que es súper fácil hacerlo con flex, pero la idea del curso es que lo hagas con grid, por eso he ahí el nombre, yo en lo personal siento que se me confunde aprender grid y SIEMPRE estoy confiendo los rows con los columns, la mejor manera de asignar las áreas es dándole nombres a cada grid area porque si no me pierdo definitivamente, en cambio flexbox me parece mucho más intuitivo porque solo asignas porcentajes, flex-wrap y tu layout escalará muy bien desde mobile first hasta desktop, cosa que aun no me sale bien con grid que es la razón por la que estoy tomando este curso para perfeccionar mi uso de ambos modelos de layout
oh y una cosa más, para evitar el scroll horizontal es mejor agregar max-width: 100vw al body, así nos aseguramos de que el contenido no crezca más allá de lo debido, con el height debería usarse min-height o height dependiendo del dispositivo para el cual está planeado verse
No sé por qué hicimos un código tan grande sólo para poner las dos líneas. Yo hice esta versión y se mira exactamente cómo la de la clase con menos código:
Excelente, la misma funcion pero como dice una persona mas para arriba css es un arte y a la hora de pintar no todos usamos el pincel igual, me quedo con tu codigo, sigue asi, dedito arriba
Hola, no se si agregaste el .icons a cada elemento a. De no hacerlo simplemente agregaria espacio al final del ulitimo elemento a, para que no pase eso tendrias que poner la clase .icons a cada elemento o poner: header .header-icons-container .icons a{
Igual. excelente codigo el tuyo, limpio, poco y muy prolijo.
Recomendación:
Les sugiero que los colores y tamaños de fuentes los agreguen como variables. Hacer esto les va hacer la vida muchos mas fácil en un futuro.
Debido que si tienen un color en distintos botones y en algunas otras partes de la pantalla como en el header y desean hacer algunos cambios solo lo tendrán que hacer una vez si tienen variables.
Min 10:40, creo que el justify-items: flex-end fue innecesario.
Si hay que estar probando. Siempre uno puede poner el código más eficiente.
Buenas tardes, no entendí porque al colocar justify-items: flex-end no se alinearon los iconos a la derecha, unicamente se alinearon al colocar justify-self:end. De hecho si quito la linea de Justify-items no pasa nada, entonces no entiendo para que sirve justify-items en este caso.
justify-items: end se le pone a un contenedor y afecta a la posición de los elementos que contiene.
justify-self: end sirve para alinear el propio elemento al que se le coloca esta propiedad.
Es decir, si quieres utilizar justify-items: end para alinear los iconos, le tendrás que poner esta propiedad al contenedor de éstos, no a ellos mismos.
Hola!!! Me queda claro con la respuesta de @ceporro, entonces en el código de esta clase "header .header-icons-container .icons" sobraría justify-items: flex-end; No???
Donde es mejor resetear los estilos con * o con body? Alguien me aclara la duda porfavor 🙏
Hola. El selector body es igual que cualquier otro (div, h1, etc) por lo que solo estamos asignando estilos a esa etiqueta
El selector * es el que deberías usar si quieres resetear valores de todo pues este selector es el equivalente a ir selector por selector asignando valores pero en una sola declaración
por ejemplo, usando * para esta regla:
*{border:5px solid red;}
TODOS los elementos tendrán un borde de 5 píxeles de grosor, estilo sólido y de color rojo, mientras que usando body solo será esta etiqueta la que tendrá esa regla
Podemos usar body para cosas como esta:
body {background: #753742;color: #FCFCFC; font-family:Helvetica; font-size: 22px;}
pues normalmente las etiquetas heredan estilos y con body podemos hacer que todos hereden esos estilos por defecto, pero no se agrega estilos que no estaban por defecto en la etiqueta (como el borde)
Espero sea lo suficientemente claro y te sirva. Saludos
Gracias por la alcaración ... Super :)
técnicamente este selectos no es necesario justify-items: flex-end;
quedan muy pegados los enlaces de las redes sociales.
Creo que sí está de más:
justify-items: flex-end;
Pero no el space-between de justify-content.
Saludos
Cuántos trucos tiene bajo la manga Diego para maquetar? Increíble!
Ya me adelante un poquito y va quedando así :D
Lo que suelo hacer en estos cursos es no copiar el código si no hacer el mío propio y si me atoro en algo puedo guiarme.
Pero siempre veo todas las clases por qué siempre se aprende algo nuevo o una forma diferente de hacer algo.
Yo le puse unos detalles adicionales al section del header 😅
Así va hasta ahora mi proyecto, haciéndolo en Mobile First como enseñó el profe en un curso anterior en la escuela de Desarrollo Web.