Botón para abrir el Menú Botón para cerrar el Menú
Logo da empresa Alura
Iniciar Sesión Nuestros Planes
Formaciones Conoce a Luri
  • Programación _
  • Front End _
  • Data Science _
  • DevOps _
  • Innovación y Gestión _
Artículos de Tecnología > Front-end

Empezando a organizar tu CSS

Alura
Marco Bruno
Marco Bruno
25/02/2021

Compartir

Mira este artículo:
  1. Cómo definir un buen nombre para una class?
  2. ¿Cómo organizar archivos CSS?
  3. ¿Cómo escribir selectores sin muchos problemas de especificidad?

Ya debes haber abierto un CSS con 2000 líneas con el nombre styles.css, dentro de una carpeta llamada css. Este es un buen momento para hacerse un tiempo para estudiar uno de los modelos de arquitectura CSS:

  • DRY CSS

  • SMACSS

  • BEM

  • OOCSS

  • Atomic Design

Vale la pena leer los cinco modelos de arquitectura y luego definir con su equipo la mejor manera de organizar su CSS. Esto fue lo que hicimos en Caelum, antes de comenzar a desarrollar la parte interna de nuestra plataforma de cursos en línea, Alura.

Después de leer las cinco arquitecturas CSS, el equipo de desarrolladores (Back end y Front end) se reunió durante 3 días durante una hora diaria enfocada en solucionar los siguientes puntos:

Cómo definir un buen nombre para una class?

Durante la discusión decidimos tomar las siguientes precauciones para definir el nombre de una class:

  • Evitar nombre demasiado genérico, como title;

  • Evitar nombre unido a tag, como input Text;

  • No dar nombre con asociación a una propiedad CSS, como floatLeft;

  • No dar nombre que describa el valor de una propiedad CSS, como colorBlue;

  • Utilizar el guión para identificar al hijo leyendo solo el nombre de la class, cómo padre-hijo

  • Utilizar el guión bajo para agregar un modificador, cómo padre-hijo_modificador;

  • El nombre de una class tiene que empezar con una analogía con el mundo real y la segunda parte cuando sea necesario, representar el contenido del elemento, por ejemplo:cardCourse.

Usando los puntos anteriores como base, nombraremos los elementos del siguiente diseño:cardCourse Introducción a HTML y CSS Javascript Avanzando en HTML y CSS

<section class="cardCourse"> 
    <img class="cardCourse-icon" src="iconHtmlCss.png"> 
    <h3 class="cardCourse-title">Avanzado a HTML y CSS</h3>  
    
    <div class="progressBar">  
        <span class="prgressBar-value">50%</span>  
        <progressbar class="progressBar-bar">   
            Tu progreso es del 50%.  
        </progressbar> 
	</div>
</section>	

¿Cómo organizar archivos CSS?

Al equipo le gustó la organización creada por BEM. Siguiendo el ejemplo del diseño presentado anteriormente, creamos una carpeta css, dentro de ella creamos otra carpeta con el nombre block.

Todos los selectores de los bloques cardCourse y progressBar, permanecer dentro de un archivo con el nombre cardCourse.css y progressBar.css, que se guarda dentro de la carpeta block. Y cualquier archivo CSS que no es un bloque está en la raíz de la carpeta css, como el famoso archivo reset.css.

Cuando tenemos un CSS que se usará solamente en una página, lo colocamos dentro de la carpeta pages.

tree

¿Cómo escribir selectores sin muchos problemas de especificidad?

Tener selectores con valores de especificidad altos encarece el mantenimiento de CSS.

La mejor forma de solucionar este problema es utilizar selectores de bajo valor y especificidad. Para escribir selectores con un valor de especificidad bajo, comprendamos mejor cómo funciona esto de especificidad:

Valores de especificidad de los selectores CSS

ID #CARD |CLASS .CARDCOURSE PSEUDO-CLASS :FIRST-CHILD | TAG SECTION | SELECTORES AVANZADOS > + ~ E :NOT()

100 | 10 | 1 | 0

Cada selector CSS tiene un valor como se muestra en la tabla anterior. Para entenderlo un poco mejor veamos algunos ejemplos:

/ * Valor de especificidad: 100 * /
    #tarjeta { 
    
    ...
    
    } 
/ * Valor de especificidad: 10 * /
    .cardCourse { 
    ...
    } 
/ * Valor de especificidad: 1 * /
    sección { 
    ...
    } 
/ * Valor de especificidad: 10 + 10 = 20 * /
    .cardCourse .cardCourse-title { 
    ...
    } 
/ * Valor de especificidad: 10 + 10 + 1 = 21 * /
    .cardCourse h3.cardCourse-title { 
    ...
    } 
/ * Valor de especificidad: 10 + 10 = 20 * /
    .cardCourse: nth-of-type (2n) { 
    ...
    }

Para no tener demasiados problemas con valores de especificidad elevados, optamos por seguir las siguientes reglas:

  • El orden de selectores en el archivo CSS debe respetar el orden de HTML;

  • Evitar selectores con id y tag;

  • Evitar el uso de selectores avanzados y pseudo-class.

Con técnicas como esta, logramos hacer nuestro CSS en Alura mucho más modular y fácil de mantener. La productividad del equipo aumentó drásticamente. Y tú, ¿cómo haces tu trabajo? ¿Tiene otros consejos sobre cómo mejorar la forma que organizamos nuestro CSS?

Artículo Anterior
Formulario con form validation de HTML5
Siguiente Artículo
Creación de componentes CSS con el estándar BEM

Ver otros artículos sobre Front-end

Navegación

  • Planes
  • Instructores
  • Blog
  • Política de privacidad
  • Términos de uso
  • Sobre nosotros
  • Preguntas frecuentes

¡CONTÁCTANOS!

  • ¡Quiero entrar en contacto!

Blog

  • Programación
  • Data Science
  • Front End
  • Innovación y Gestión
  • DevOps

AOVS Sistemas de Informática S.A CNPJ 05.555.382/0001-33

SÍGUENOS EN NUESTRAS REDES SOCIALES

YouTube Facebook Instagram Linkedin Whatsapp Spotify

NOVEDADES Y LANZAMIENTOS

Aliados

  • Programa de aceleração Scale-Up Endeavor
  • En Alura somos unas de las Scale-Ups seleccionadas por Endeavor, programa de aceleración de las empresas que más crecen en el país.
  • Growth Academy 2021 do Google For Startups
  • Fuimos unas de las 7 startups seleccionadas por Google For Startups en participar del programa Growth Academy en 2021
Alura

Powered by

Caelum

AOVS Sistemas de Informática S.A CNPJ 05.555.382/0001-33

SÍGUENOS EN NUESTRAS REDES SOCIALES

YouTube Facebook Instagram Linkedin Whatsapp Spotify

Cursos

Cursos de Programación
Lógica de Programación | Java
Cursos de Front End
HTML y CSS | JavaScript | React
Cursos de Data Science
Data Science | Machine Learning | Excel | Base de Datos | Data Visualization | Estadística
Cursos de DevOps
Docker | Linux
Cursos de Innovación y Gestión
Transformación Ágil | Marketing Analytics

Alura

  • Educação em Tecnologia

    • logo fiap FIAP
    • logo casa do codigo Casa do Código
    • logo pm3 PM3 - Cursos de Produto
  • Mais Alura

    • logo alura start START BY Alura
    • logo alura lingua Alura Língua
    • logo alura para empresas Alura Para Empresas
    • logo alura latam Alura LATAM
  • Comunidade

    • logo tech guide Tech Guide
    • logo 7 days of code 7 days of code
    • logo Hipsters ponto Jobs Hipsters ponto Jobs
  • Podcasts

    • logo Hipster Network Hipster Network
    • logo Hipsters ponto Tech Hipsters ponto Tech
    • logo Dev sem fronteiras Dev sem Fronteiras
    • logo Like a Boss Like a Boss
    • logo IA Sob Controle IA Sob Controle
    • logo Mesa de Produto Mesa de Produto
    • logo Decode Decode
    • logo FIAPCast FIAPCast