Al crear una aplicación web con alto contenido de Javascript, ¿cuál es la mejor práctica para nombrar clases CSS para mantener el código JavaScript y las hojas de estilos CSS limpios y la estructura de IU flexible?Práctica recomendada para la denominación de clase CSS para usar con los selectores jQuery
Opción 1: Nombre cada elemento de forma única.
Por ejemplo,
// HTML
<div id="list">
<button class="list-delete" />
<div class="list-items">
<div class="item">
<button class="item-delete" />
<h1 class="item-name">Item 1</h1>
</div>
</div>
</div>
// CSS
.list-delete {
color: black;
}
.item-delete {
color: blue;
}
// Javascript
$(".list-delete").show();
$(".item-delete").hide();
Pros:
- Al seleccionar un elemento para el peinado o la manipulación JS es fácil
Contras:
- nombres de los elementos comienzan a ser real Y largo y difícil seguir la pista de
- Cambio de la estructura HTML requiere porciones de cambio de nombre
Opción 2: Nombre cada elemento semánticamente, y seleccione los elementos jerárquicamente.
Por ejemplo,
// HTML
<div id="list">
<button class="delete" />
<div class="items">
<div class="item">
<button class="delete" />
<h1 class="name">Item 1</h1>
</div>
</div>
</div>
// CSS
#list > .delete {
color: black;
}
#list > .items > .item > .delete {
color: blue;
}
// Javascript
$("#list > .delete").show();
$("#list > .items > .item > .delete").hide();
Pros:
- nombres siente más natural, y los nombres son cortas y claras
Contras:
- Selección de un elemento para styl ING o la manipulación es difícil de manejar
- Cambio de la estructura HTML requiere cambiar una gran cantidad de selectores, ya que los nombres están ligados a la estructura jerárquica
Opción 3 ... n: Un poco de enfoque híbrido? ¿Un enfoque totalmente diferente?
Tenga en cuenta el problema de la colisión de nombres al agregar más elementos en el futuro, especialmente cuando tiene elementos anidados. Además, la solución ideal facilitaría el cambio de la estructura HTML de los elementos existentes sin demasiadas interrupciones en cualquier otro lugar.
Intenté esto, y luego terminé con muchos selectores jQuery largos, y cuando quise cambiar ligeramente la estructura del HTML, tuve que cambiar muchas líneas de código jQuery. ¿No hay una mejor manera? – Chetan
La mejor manera es no depender tanto de los selectores de jQuery. El uso de selectores grandes como ese conduce exactamente al problema que describes. En su lugar, modularice su código y use jQuery.find() para obtener elementos de un componente en lugar de usar siempre selectores globales. –