Size: a a a

2021 March 26

Prikolist Начрэл... in БЭМ
Согласен с тобой, особенно если говорить про фронтенд, нет разницы 150мс будет загружаться страница или 200, это всё будет выполняться на устройстве пользователя, он даже не заметит разницы.

Но я спрашиваю не о оптимизации, а о том, как быть с архитектурной точки зрения. Это же просто паттерн, проще порефлексировать о том как делать какую-то мелочь, запомнить это и делать автоматически хорошо всегда, чем сэкономить 10 минут и всегда делать как прийдёт в голову
источник

SB

Sergey Berezhnoy in БЭМ
Prikolist Начрэл
Что ты имеешь в виду под "в файлах с неймингом для модификаторов писать стили на основной блок"?
block1_mod1_val1.css
источник

SB

Sergey Berezhnoy in БЭМ
Prikolist Начрэл
Согласен с тобой, особенно если говорить про фронтенд, нет разницы 150мс будет загружаться страница или 200, это всё будет выполняться на устройстве пользователя, он даже не заметит разницы.

Но я спрашиваю не о оптимизации, а о том, как быть с архитектурной точки зрения. Это же просто паттерн, проще порефлексировать о том как делать какую-то мелочь, запомнить это и делать автоматически хорошо всегда, чем сэкономить 10 минут и всегда делать как прийдёт в голову
с этой точки зрения не вижу ничего плохого в десятке модификаторов — даже если их не нужно иметь в разных конфигурациях на одной странице
источник

ЕК

Егор Комаровский... in БЭМ
Снова всем привет. В очередной раз столкнулся со следующей проблемой в I-bem.js: нужно сделать lazyInit с инициализацией по событию другого блока. Казалось бы, все инструменты для этого i-bem предоставляет. Но мне нужно подписаться на событие именно примиксованного блока. Т.е. когда я в классе пишу this._events(SomeBlock) - отлавливаются события как миксов, так и вложенных блоков. Я могу проверить наличие микса непосредственно в обработчике, но тогда мой блок/элемент уже будет проинициализирован, а я бы хотел инициализацию только по событию микса. Есть ли какой-то способ такое реализовать?
источник

SB

Sergey Berezhnoy in БЭМ
Егор Комаровский
Снова всем привет. В очередной раз столкнулся со следующей проблемой в I-bem.js: нужно сделать lazyInit с инициализацией по событию другого блока. Казалось бы, все инструменты для этого i-bem предоставляет. Но мне нужно подписаться на событие именно примиксованного блока. Т.е. когда я в классе пишу this._events(SomeBlock) - отлавливаются события как миксов, так и вложенных блоков. Я могу проверить наличие микса непосредственно в обработчике, но тогда мой блок/элемент уже будет проинициализирован, а я бы хотел инициализацию только по событию микса. Есть ли какой-то способ такое реализовать?
нет, на уровне ядра только внутри…

а почему хочется экономить эти инициализации? ну синициализируется на событие вложенного (а потом нужную проверку на микс сделать) — это ж не сильно на свойства приложения обычно влияет, обычно важно просто хоть какую-то линивость иметь
источник

ЕК

Егор Комаровский... in БЭМ
Sergey Berezhnoy
нет, на уровне ядра только внутри…

а почему хочется экономить эти инициализации? ну синициализируется на событие вложенного (а потом нужную проверку на микс сделать) — это ж не сильно на свойства приложения обычно влияет, обычно важно просто хоть какую-то линивость иметь
На самом деле за оптимизацию тут я не особо парюсь. Просто думал, что есть какой-то способ попроще это сделать. Ведь в экземпляре я могу написать this._events(this.findMixedBlock(SomeBlock)), а в классе подобная возможность отсутствует. Мне кажется, не очень правильно писать проверку в обработчике. Ведь как правило обработчик уже должен предполагать, что обрабатывает нужное событие.
источник

SB

Sergey Berezhnoy in БЭМ
Егор Комаровский
На самом деле за оптимизацию тут я не особо парюсь. Просто думал, что есть какой-то способ попроще это сделать. Ведь в экземпляре я могу написать this._events(this.findMixedBlock(SomeBlock)), а в классе подобная возможность отсутствует. Мне кажется, не очень правильно писать проверку в обработчике. Ведь как правило обработчик уже должен предполагать, что обрабатывает нужное событие.
согласен, технически это могло бы быть в апи — но это его ещё на сколько-то усложнило бы, а необходимость в этом не такая уж острая (ну по нашему текущему пониманию, можно обсуждать)
источник

FK

Fredo Kruger in БЭМ
Здравствуйте. Я новичок и есть ряд вопросов по бэму
Можно ли задавать для body общие стили (семейство шрифтов, цвет, размер)?
Как правильно сбрасывать браузерные стили, если normalize и reset запрещены
источник

Prikolist Начрэл... in БЭМ
Fredo Kruger
Здравствуйте. Я новичок и есть ряд вопросов по бэму
Можно ли задавать для body общие стили (семейство шрифтов, цвет, размер)?
Как правильно сбрасывать браузерные стили, если normalize и reset запрещены
Сбрасывать для каждого элемента то что нужно сбросить конкретно для него. Или можно использовать свойство all: unset;

Что значит задавать стили для body? По БЭМ? Можно сделать блок для body. Но обычно body ничего не делает кроме убирания отступов, просто добавляют блок в body и уже его стилизуют. Но блоки на body размещать конечно можно
источник

FK

Fredo Kruger in БЭМ
да банально семейство шрифтов где прописывать по бэму
источник

Prikolist Начрэл... in БЭМ
Где хочешь. В методологии не описано где прописывать шрифты и какого цвета делать кнопки. Хочешь общий шрифт - опиши где-то повыше в дереве DOM, хочешь особенный шрифт для кнопки - описывай в классе кнопки
источник

FK

Fredo Kruger in БЭМ
ну то есть повесить класс на боди и прописать ему базовую стилизацию это норма?
источник

Prikolist Начрэл... in БЭМ
Да, конечно
источник

FK

Fredo Kruger in БЭМ
а что насчет переменных в scss. Задавать вне блоков, а применять внутри можно?
источник

Prikolist Начрэл... in БЭМ
Хороший вопрос. Было бы здорово если бы в документации появился раздел о именовании и применении css переменных.

Я не знаю чем scss переменные отличаются о css переменных, но например в yandex-ui создают переменные с префиксом в виде имени блока, все эти переменные собирают в один класс и применяют его в нужных местах.

И он содержит переменные вроде --button-fillColor, --button-typo которые используются блоками
источник

FK

Fredo Kruger in БЭМ
спасибо🙏
источник

yW

yarastqt World in БЭМ
Prikolist Начрэл
Где хочешь. В методологии не описано где прописывать шрифты и какого цвета делать кнопки. Хочешь общий шрифт - опиши где-то повыше в дереве DOM, хочешь особенный шрифт для кнопки - описывай в классе кнопки
Но если ты будешь задавать шрифт для body, то в кнопке нужно обязательно будет сделать font-family: inherit, т.к. кнопка по умолчанию не наследует шрифт)
источник

yW

yarastqt World in БЭМ
Но я бы использовал дизайн-токен лучше для шрифта (css/sass-переменную)
источник

yW

yarastqt World in БЭМ
Fredo Kruger
а что насчет переменных в scss. Задавать вне блоков, а применять внутри можно?
Да, переменные это по факту контекст, в котором будут твои компоненты, контекст может меняться в зависимости от темы/проекты
источник

yW

yarastqt World in БЭМ
так что лучше их объявлять снаружи
источник