Dark mode
Light mode
14 Fev 20
3 min

Como nomear seus componentes CSS

Tá difícil dar nomes para seus componentes? Essa lista vai te ajudar.

Introdução

Nomear componentes quando estilizamos nosso site/app pode parecer uma tarefa fácil para alguns, mas vira uma dor de cabeça se não estamos acostumados.

Afinal, a gente tem que pensar que:

  • Outros devs tem que encontrar esse componente facilmente
  • Eu tenho que lembrar do nome quando for dar manutenção
  • Perder muito tempo nisso é tempo desperdiçado
  • Se ficar confuso depois, vai precisar refatorar, perdendo ainda mais tempo 🤦‍♂️

Pensando nisso, elaborei essa lista de possíveis nomes que você pode dar para seus componentes CSS, dependendo do contexto.

A ideia é que você possa usar essas classes quando estiver criando componentes com a metodologia BEM, mas isso pode ser adaptado para outras metodologias.

Assim, você pode poupar o seu tempo pensando em nome de classes e focar no que realmente importa.

Layout

Classes usadas para determinar características de layout como tamanho e divisões entre conteúdos, margens, espaçamento, etc.

  • .container
  • .wrapper
  • .outer
  • .inner
  • .row
  • .col

Seções Principais

Classes usadas para subdividir as páginas, esses componentes normalmente vão aparecer somente uma vez por página.

  • .page
  • .header
  • .main
  • .hero
  • .intro
  • .section-[alguma coisa]
  • .footer

O Holy Grail design é um exemplo de seções principais de um site.

Componentes de Página

Classes usadas para definir componentes estruturais que podem aparecer várias vezes na mesma página.

  • .article
  • .aside
  • .box
  • .bio
  • .block
  • .callout
  • .card
  • .content
  • .gallery
  • .lockup
  • .info-box
  • .menu
  • .modal
  • .panel
  • .popup
  • .post
  • .profile
  • .section
  • .sidebar
  • .video-box

Classes para conjunto de links ou botões de navegação.

Nomes genéricos

  • .nav
  • .nav-tools
  • .nav-utilities
  • .nav-menu

Nomes por relevância

  • .main-nav
  • .primary-nav
  • .secondary-nav

Nomes por posicionamento

  • .top-nav
  • .bottom-nav
  • .header-nav
  • .sidebar-nav
  • .footer-nav

Nomes por contexto

  • .dashboard-nav
  • .site-nav
  • .user-nav
  • .***-nav

Listas

Classes para listas de elementos ou conjunto de componentes.

Nomes genéricos

  • .list
  • .list-links
  • .list-images
  • .feed

Nomes por características

  • .ordered-list
  • .numbered-list
  • .unordered-list
  • .floating-list

Nomes por contexto

  • .contact-list
  • .work-list
  • .products-list
  • .users-list
  • .***-list

Componentes

Classes para elementos em geral, a combinação e agrupamento desses elementos formam componentes maiores.

  • .accordion
  • .avatar
  • .background
  • .badge
  • .bar
  • .breadcrumbs
  • .btn (.menu-btn, .submit-btn, etc)
  • .button
  • .carousel
  • .copyrights
  • .cta
  • .cta-link
  • .divider
  • .dropdown
  • .figure
  • .ico
  • .icon
  • .illustration
  • .image
  • .label
  • .link
  • .locations
  • .logo
  • .map
  • .mask
  • .media
  • .message
  • .newsletter
  • .overlay
  • .pagination
  • .parallax
  • .photo
  • .pic
  • .picture
  • .poster
  • .product
  • .project
  • .ribbon
  • .sitemap
  • .social
  • .tabs
  • .tag
  • .teaser
  • .testimonial
  • .thumb
  • .thumbnail
  • .tooltip
  • .user
  • .video

Formulários

Classes para formulários e seus campos.

Nomes genéricos

  • .form
  • .field
  • .input
  • .control
  • .label

Nomes por tipo

Nesse caso, usando modificadores do BEM.

  • .field--text
  • .field--number
  • .field--radio
  • .field--checkbox

Nomes por contexto

  • .contact-form
  • .login-form
  • .sign-up-form
  • .newsletter-form
  • .***-form
  • .submit-btn
  • .cancel-btn

Texto

Classes para estilizar textos que são usados por todo o site/app.

  • .title
  • .subtitle
  • .suptitle
  • .head
  • .heading
  • .text
  • .content-text
  • .description
  • .category

Elementos aninhados

Sufixos de classe para serem usados em componentes filhos quando usamos a metodologia BEM.

Basicamente, todo nome de classe citado até agora pode se tornar um sufixo quando utilizado como filho de um elemento.

Sufixos estruturais

  • &__actions
  • &__content
  • &__footer
  • &__head
  • &__header
  • &__inner
  • &__item
  • &__row

Sufixos de texto

  • &__title
  • &__subtitle
  • &__suptitle
  • &__link
  • &__text

Sufixos de contexto

  • &__cta
  • &__name
  • &__description
  • &__details
  • &__media
  • &__social

Indicar Estado

Classes que normalmente são adicionadas/removidas por JavaScript e servem para indicar um estado diferente em que o componente se encontra.

  • .is-active
  • .is-animating
  • .is-closed
  • .is-disabled
  • .is-empty
  • .is-expanded
  • .is-fixed
  • .is-loaded
  • .is-loading
  • .is-open
  • .is-scrolling
  • .is-sticky

Conclusão

Como você pode perceber, os nomes estão em inglês. Você vai encontrar na maioria dos lugares a nomenclatura assim, é o padrão.

Certamente você também deve divergir em relação a alguns nomes e categorias, mas a ideia aqui é mais ser uma lista de utilidades, sem certo ou errado.

Se tiver mais nomes de classes para inserir, fique à vontade e seja bem-vindo para deixar sua contribuição nos comentários aqui embaixo.

Até o próximo artigo!

Compartilhe

Foto de Thiago sorrindo

Autor

Thiago Rossener

Desenvolvedor front-end, filósofo e espiritualista

Sua assinatura não pôde ser validada.
Você fez sua assinatura com sucesso.

Newsletter

Assinando minha newsletter você fica sabendo sempre que eu publicar algo novo, prometo que vai ser só isso.