vasIvas: ну, да, сложные вещи можно делать и в вебе — тот же Ангулар, теже библиотеки для работы с 3D в браузере, я это тоже имею ввиду, говоря о не-сайтиках :)
vasIvas: ну, очень круто, что вы это помните и с легкостью можете применять — обычно это приходится гуглить и это, всё же, объективно сложнее, чем 2 + 2. В веб-программировании всё очень-приочень гораздо проще, всё делается очень легко. Не знаю вашу ситуацию, но зря вы в веб пошли, раз можете гораздо сложнее вещи делать. Веб это детсад, песочница. Если вам реально просто дается математика/геометрия, то вы бы могли творить гораздо более важные вещи, чем кодить на ХТМЛ и Яваскрипт сайтики.
Артур Мудрик: .block__header__icon меня не просто не смущает, а это единственный очевиднейший простейший способ сделать то, о чем название этого класса говорит. И это абсолютно идеальнейший БЭМ.
Руслан Абдуллаев: ну не может быть в файле стилей icon.scss куча каких-то левых модификаторов, которые относятся к некоей иконке в некоем заголовке. ну это же бред полный создавать кучу модификаторов в файле icon.scss — там могут быть только модификаторы размеров, например, но уж никак не каке-то левые icon_header-icon — да и что это за header-icon, к какому заголовку это относится? Я пишу идеальнейший БЭМ, можно по этому поводу не сомневаться и не холиварить.
Руслан Абдуллаев: .block__header-icon — ужасно некрасиво, я использую .block__header__icon и всем советую, проблемы нет и не было и не может быть и не будет :)
Руслан Абдуллаев: "Можно добавить еще один модификатор, который будет настраивать иконку" — нет, это уж точно делать нельзя. Иконка это иконка, она знает только о своих размерах (и то не обязательно), бэкграунде или content (это тоже не использую, ибо юзаю inline SVG), но уж точно не позиционирует себя куда-либо. Да и в таком случае у вас в файле icon.scss получится куча классов-модификаторов.
Руслан Абдуллаев: да, блок icon это отдельный блок, всё верно, так и делаю, это элементарно. Но в блоке block у вас может быть элемент header и в нем может быть элемент icon — он не выводит иконку (иконку выводит отдельный блок, icon), он позиционирует ваш блок icon. Вот так —
Александр Петров: про отступы всё верно, отступы у меня всегда задаются родительским элементом, у которого совсем другой блок. Сам же блок ничего не знает о том, где он находится и какие там у родителя отступы.
Александр Петров: Ну, почему сразу «макет - верстка - сдал - забыл» — нормальные долгосрочные проекты, всё ок, проблем не было. Жесть типа .block > .header > .icon это вообще никогда, из-за веса селектора :) Ну и переностится всегда блок, а не внутренние элементы, так что перенесете вы .block куда-нибудь и всё будет ок, это никогда не отразится на block__element__element, ничего не произойдет.
Александр Петров: И, кстати, еще в подходе .block__element__element мне нравится то, что в SASS/SCSS у меня визуально видна вложенность элементов — тобишь, в CSS я вижу, что "вот этот элемент у меня вот там, внутри того".
Александр Петров: ну, по букве закона я и раньше знал, что у меня не кошерный БЭМ, но тем не менее я его именно так использую. Возможно даже потому, что когда-то давно в БЭМе можно было так делать. Ваше правило да, абсолютно идеально, но вот как-то никогда не сталкивался, что что-то "может переехать" — в 99% ничего никогда не переезжает, хотя по идеологии это нужно учитывать и это правильно и верно :)
Pavel Shvedov: ой мааамочки, так вы еще и шаблон будете генерировать на сервере и весь этот ХТМЛ отадавть на клиент... это вообще жесть в эпоху Яваскрипт-фреймворков. Ну и в любом случае, хоть серверный шаблонизатор, хоть клиентский — вам в любом случае Яваскриптом нужно будет рассчитывать, какие будут массивы цифр — все эти "1,5,9,... 2,6,10...3,7,11, 4,8,12 и так далее" нужно будет рассчитать в зависимости от количества элементов и количества колонок.
Александр Петров: именно так и делаю и считаю это самым настоящим БЭМ. И я, конечно же, в курсе про модификаторы и про разбитие одной сущности на несколько — ясно же, что две почти одинкаовые иконки не нужно называть по-разному и распихивать в разные элементы. Но тут ничего не разобъешь — есть некая карточка, всё, точка, там её заголовок нельзя куда-то вынести в отдельную сущность, и иконки там, допустим, абсолютно разные, так, что ничего общего нет, чтобы немного в модификаторах нужно было всего лишь изменить. Вот такая ситуевина.
Александр Петров: ну а как бы вы сделали блоки, если у вас есть некий блок (card), в нем есть заголовок (header) и контент (content) и в обоих есть некая иконка (icon)? Неужели вы бы делали .card__headerIcon и .card__contentIcon? Жесть, бред, некрасиво. Или как-то иначе?
Сергей С: нет, порядок вывода блоков можно будет сделать как угодно, но Яваскриптом, а это жесть как жутко и ужасно :) И, да, полноценный masonry там действительно не получится, ибо тексты в разных блоках могут быть разными, поддерживаю.