Uso semántico de clases en lugar de nombres genéricos
Asignar nombres de clase semánticos significa describir el propósito, la función o el contenido del elemento en lugar de su apariencia visual. Esto mejora la mantenibilidad, legibilidad y facilita el trabajo en equipo.
1. ¿Por qué evitar nombres genéricos?
- Reutilización limitada:
.boxo.itemno dicen para qué sirve ese contenedor. - Escalabilidad: Cuando el proyecto crece, es difícil distinguir las cajas unas de otras.
- Colaboración: Un nuevo desarrollador no sabe qué estilo aplicar sin leer el CSS.
2. Principios de nomenclatura semántica
- Usar nombres en forma de sustantivo o frase nominal que describa la función:
.alert,.user-profile. - Evitar adjetivos o colores como parte de la clase:
.rojoo.grande. - Mantener consistencia: elegir un estilo (kebab-case, BEM) y respetarlo.
- Separar estructura, estado y tema:
.card(bloque),.card--highlighted(modificador),.card__header(elemento).
3. Metodologías recomendadas
| Metodología | Descripción breve | Ejemplo |
|---|---|---|
| SMACSS | Separar reglas en layout, module, state, theme. | .layout-header, .module-slider, .is-active |
| BEM | Bloque, Elemento, Modificador. | .menu__item--selected |
| OOCSS | Objetos de estilo reutilizables: contenedores independientes de skin. | .media, .media__thumb |
4. Ejemplos prácticos
4.1. De nomenclatura genérica a semántica
Mal:
<div class='box highlight'> <h2>Título</h2> <p>Contenido informativo.</p> </div>
Bien:
<article class='card card--highlighted'> <h2 class='card__title'>Título</h2> <p class='card__body'>Contenido informativo.</p> </article>
4.2. Menú de navegación accesible
Mal:
<ul class='list list-inline'> <li class='item'><a href='/'>Inicio</a></li> <li class='item active'><a href='/about'>Acerca</a></li> </ul>
Bien:
<nav class='navigation-menu' aria-label='Principal'>
<ul class='navigation-menu__list'>
<li class='navigation-menu__item'>
<a href='/' class='navigation-menu__link'>Inicio</a>
</li>
<li class='navigation-menu__item navigation-menu__item--current'>
<a href='/about' class='navigation-menu__link'>Acerca</a>
</li>
</ul>
</nav>
4.3. Formulario con clases orientadas a la función
Mal:
<form class='f'>
<div class='r'>
<label class='l'>Email</label>
<input class='i' type='email' />
</div>
<button class='btn-red'>Enviar</button>
</form>
Bien:
<form class='form form--compact'>
<div class='form__group'>
<label for='email' class='form__label'>Email</label>
<input id='email' name='email' type='email' class='form__control' />
</div>
<button type='submit' class='button button--primary'>Enviar</button>
</form>
5. Ventajas finales
- Claridad: Queda claro el propósito de cada clase.
- Mantenibilidad: Cambios de estilo sin renombrar clases por toda la app.
- Accesibilidad y ARIA: Facilita mapear clases a roles y estados.
Ejemplo:aria-expanded='true'junto a.accordion--open. - Integración con JavaScript: Seleccionar nodos por función:
document.querySelector('.modal--active').
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.