Size: a a a

2021 March 29

Prikolist Начрэл... in БЭМ
Aleksei Anatolyevich
Всем привет!
Подскажите, допустимо ли иметь БЭМ-элемент, который в DOM-иерархии лежит вне своего блока? Например, есть React-компонент (блок), в нём мы рендерим модалку (элемент) через React-портал и хотим описать стили для модалки в этом блоке, а не создавать отдельный блок.
Это звучит как ошибка проектирования компонента. В методологии сказано что элемент не может использоваться вне блока. Если ты опишешь свою ситуацию, возможно кто-то подскажет как это сделать нормально или если это особый случай, то согласится что хак имеет место
источник

yW

yarastqt World in БЭМ
Aleksei Anatolyevich
Всем привет!
Подскажите, допустимо ли иметь БЭМ-элемент, который в DOM-иерархии лежит вне своего блока? Например, есть React-компонент (блок), в нём мы рендерим модалку (элемент) через React-портал и хотим описать стили для модалки в этом блоке, а не создавать отдельный блок.
Кажется, что компонент Modal не должен являться элементом чего-либо, это обособленный компонент
источник

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

Р

Роман in БЭМ
Prikolist Начрэл
Это звучит как ошибка проектирования компонента. В методологии сказано что элемент не может использоваться вне блока. Если ты опишешь свою ситуацию, возможно кто-то подскажет как это сделать нормально или если это особый случай, то согласится что хак имеет место
Ну, popup-элементы в bem-components тоже, кажется, рендерятся за пределами ноды блока.
источник

Prikolist Начрэл... in БЭМ
Роман
Ну, popup-элементы в bem-components тоже, кажется, рендерятся за пределами ноды блока.
Не знаю о какой именно библиотеке ты говоришь, но я могу говорить о yandex-ui, где это тоже так работает, но суть в том что в такие попапы никогда не складывают элементы. Только блоки.

Например селект - это кнопка при нажатии на которую открывается попап, который рендерится в корне DOM, в котором лежит блок меню с примиксованным классом элемента Select. Получается что попап рендерится вне селекта, но содержит его элемент. Но это не узел DOM содержащий что-то, а по сути просто класс для привязки стилей.
источник

Prikolist Начрэл... in БЭМ
Кстати, зачем вообще попапы рендерят в корне DOM? В этом есть какие-то преимущества или так сложилось исторически, просто все так делают и повторяют за другими? Например я в своём селекте сделал рендер попапа прямо в блоке по умолчанию и только опциональный рендер в скоупе, теряю ли я от этого что-то?
источник

VH

Vitaly Harisov in БЭМ
Prikolist Начрэл
Кстати, зачем вообще попапы рендерят в корне DOM? В этом есть какие-то преимущества или так сложилось исторически, просто все так делают и повторяют за другими? Например я в своём селекте сделал рендер попапа прямо в блоке по умолчанию и только опциональный рендер в скоупе, теряю ли я от этого что-то?
Да, при oveflow: hidden у родителя попап будет обрезаться
источник

yW

yarastqt World in БЭМ
Да, тут скорее проблема с overflow контейнерами
источник

VH

Vitaly Harisov in БЭМ
Prikolist Начрэл
Не знаю о какой именно библиотеке ты говоришь, но я могу говорить о yandex-ui, где это тоже так работает, но суть в том что в такие попапы никогда не складывают элементы. Только блоки.

Например селект - это кнопка при нажатии на которую открывается попап, который рендерится в корне DOM, в котором лежит блок меню с примиксованным классом элемента Select. Получается что попап рендерится вне селекта, но содержит его элемент. Но это не узел DOM содержащий что-то, а по сути просто класс для привязки стилей.
Но это не узел DOM содержащий что-то, а по сути просто класс для привязки стилей


В БЭМ не бывает «просто класс для привязки стилей»
источник

Prikolist Начрэл... in БЭМ
Vitaly Harisov
Но это не узел DOM содержащий что-то, а по сути просто класс для привязки стилей


В БЭМ не бывает «просто класс для привязки стилей»
По бэм это элемент. По семантике это просто класс для привязки стилей
источник

VH

Vitaly Harisov in БЭМ
Prikolist Начрэл
По бэм это элемент. По семантике это просто класс для привязки стилей
В БЭМ нет «просто класс для привязки стилей»
источник

kc

kuklux clan in БЭМ
Всем привет! Ребят кто-нить пробовал перенести идеологию БЭМ на Clojure?
источник

kc

kuklux clan in БЭМ
В Яндекс на меня сильно не обидятся, если я адаптирую их технологию под ClojureScript?
Просто в cljs (как и в чистом cljr), получается сначала надо определить элементы, которые будут функциями, их модификаторы - которые тоже будут функциями, а блоки по большей степени будут макросами. Элемент будет принимать "смысловую нагрузку" находясь внутри блока-макроса. Таким образом дерево БЭМ, составляется из функций и макросов ClojureScript. HTML-DOM в классическом понимании отсутствует, зато есть возможности REPL'а.
источник

kc

kuklux clan in БЭМ
🤔
источник

SB

Sergey Berezhnoy in БЭМ
kuklux clan
В Яндекс на меня сильно не обидятся, если я адаптирую их технологию под ClojureScript?
Просто в cljs (как и в чистом cljr), получается сначала надо определить элементы, которые будут функциями, их модификаторы - которые тоже будут функциями, а блоки по большей степени будут макросами. Элемент будет принимать "смысловую нагрузку" находясь внутри блока-макроса. Таким образом дерево БЭМ, составляется из функций и макросов ClojureScript. HTML-DOM в классическом понимании отсутствует, зато есть возможности REPL'а.
мне таких попыток не известно

мы не будем против, можно даже в этот чат присылать адаптации на обсуждение — постараемся помочь
источник

kc

kuklux clan in БЭМ
Sergey Berezhnoy
мне таких попыток не известно

мы не будем против, можно даже в этот чат присылать адаптации на обсуждение — постараемся помочь
Спасибо! Просто интересовался, может кто предпринимал попытки. Тогда буду решать некоторые концептуальные проблемы самостоятельно, ибо в чистом виде BEM немного не укладывается в парадигмы Clojure. Хотя HTML+CSS вставки используются, но они используются внутри кода функций. Отдельно HTML и CSS файлов нет.
источник

SB

Sergey Berezhnoy in БЭМ
kuklux clan
Спасибо! Просто интересовался, может кто предпринимал попытки. Тогда буду решать некоторые концептуальные проблемы самостоятельно, ибо в чистом виде BEM немного не укладывается в парадигмы Clojure. Хотя HTML+CSS вставки используются, но они используются внутри кода функций. Отдельно HTML и CSS файлов нет.
то что нет HTML и CSS файлов, это совсем не страшно для БЭМ — в методологии вообще всё абстрагировано от конкретных технологий и HTML и CSS просто как примеры фигурируют
источник

kc

kuklux clan in БЭМ
Sergey Berezhnoy
то что нет HTML и CSS файлов, это совсем не страшно для БЭМ — в методологии вообще всё абстрагировано от конкретных технологий и HTML и CSS просто как примеры фигурируют
Да я понимаю, т.к. использовал БЭМ внутри QML уже, в проекте ERP для организации в которой работаю. Тут дело в другом, что при использовании Clojure, у нас BEM элементы попутно являются функциональным кодом, а следовательно отсутствует разделение код/верстка
источник

kc

kuklux clan in БЭМ
Разрешите ещё вопрос: а Yandex принимает рац.решения от пользователей? Если да, то куда стоит обращаться в таком случае?
источник

Р

Роман in БЭМ
kuklux clan
Разрешите ещё вопрос: а Yandex принимает рац.решения от пользователей? Если да, то куда стоит обращаться в таком случае?
Если по вопросам БЭМ, то сюда или на форум. По остальным продуктам есть соответствующие формы обращения в разделах «Помощи»
источник