Задать вопрос

Что плохого в каскадности?

Я начинающий разработчик.

.parent-block .element{...}
Вроде бы есть понимание, что это плохо. Но помогите сформулировать это словами.
Элемент из родителя в другое место врятли когда-нибудь перемещается. Если это не что-то глобальное, вроде кнопок и ссылок.

Каких проблем или конфликтов поможет избежать такая запись:
.parent-block_element{...}
Или это просто аккуратней выглядит и легче читается?
Еще вопрос во времени, коллеги говорят что каскадность - быстрее, и нет смысла называть классы по бему.

Верстаю в основном корпоративные сайты и лендинги.
  • Вопрос задан
  • 891 просмотр
Подписаться 2 Оценить Комментировать
Решения вопроса 1
delphinpro
@delphinpro Куратор тега CSS
frontend developer
Термин неверный. Это не "каскадность", а "вложенность селекторов".
Каскад - это переопределение стилей. Когдав браузере определен стиль по умолчанию для тега, потом в файле вы определили стиль для класса присвоенного этому тегу, потом еще раз переопределили в теге style на странице и наконец последний каскад - в атрибуте style тега. Стили каскадно переопределяются.

Еще вопрос во времени, коллеги говорят что каскадность - быстрее, и нет смысла называть классы по бему.


Вложенность априори не может быть быстрее одиночного селектора. Так как селекторы обрабатываются справа налево. Возьмем селектор .parent.child
Сначала браузер найдет все селекторы .child на странице, потом среди них отфильтрует те, что вложены в .parent.
Очевидно, что это будет дольше, чем просто найти селектор .parent__child
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
pm_wanderer
@pm_wanderer
junior-HTML
Оба подхода имеют право на существование. Каскадность "плоха" тем, что она немного замедляет парсинг страницы браузером, а также порой бывает избыточна. Лучше всего ее применять например в больших списках и таблицах, когда проще написать одну конструкцию типа ul > li , чем каждому элементу списка присваивать дополнительный класс, особенно если их там много и они должны быть однородными.
С другой стороны, не БЭМом единым жив верстальщик. Есть другие методологии, которые содержат в себе здравые мысли. Можно скомпилировать свой собственный подход, используя лучшее из всех методологий, а можно придерживаться БЭМа, чтобы при работе в команде ваш код был понятен остальным участникам проекта, или например другому человеку, который будет работать над проектом после вас, ибо БЭМ сейчас самый распространенный подход по моему. Но я лично сторонник смеси принципов БЭМа с вкраплениями atomicCSS.
Ответ написан
Комментировать
xPomaHx
@xPomaHx
1vs9
Очевидно же что это значительно усложняет доработку стилей другими верстальщиками. У
.parent-block .element{...}
специфичность больше чем у
.parent-block_element{...}
Допишешь стиль в конец файла а он не сработает. Кстати не рекомендуемую БЭМ для наименования классов ксс. БЭМ избыточен, а ксс слишком узок, просто на его основе ченить свое придумайте.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы