При создании веб-приложения, насыщенного Javascript, каков наилучший способ присвоения имен классам CSS для поддержания чистоты кода Javascript и таблиц стилей CSS и гибкости структуры пользовательского интерфейса?
Вариант 1: Назовите каждый отдельный элемент уникально .
Например,
// 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();
Плюсы:
- Выбор элемента для стилизации или манипулирования JS прост
Минусы:
- Имена элементов начинают становиться действительно длинными и их трудно отслеживать
- Изменение структуры HTML требует большого переименования
Вариант 2: Назовите каждый элемент семантически и выберите элементы иерархически .
Например,
// 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();
Плюсы:
- Наименование кажется более естественным, а имена короткими и ясными
Минусы:
- Выбор элемента для стайлинга или манипуляции громоздок
- Изменение структуры HTML требует изменения большого количества селекторов, поскольку имена связаны с иерархической структурой
Вариант 3 ... n: Какой-то гибридный подход? Совсем другой подход?
Помните о проблеме конфликта имен при добавлении большего количества элементов в будущем, особенно если у вас есть вложенные элементы. Кроме того, идеальное решение позволило бы легко изменить структуру HTML существующих элементов без чрезмерного разрушения в других местах.