Всем привет. Хочу добавлять и переопределять стили в зависимости от платформы (desctop, touch-pad, touch-phone). Делаю так как описано в методологии https://ru.bem.info/method/filesystem/#Разделение-проекта-на-платформы Соответственно создал папки на файловой системе (desktop.blocks, touch-pad.blocks, touch-phone.blocks ) и в make.js добавил уровней:
levels = [
{ path: 'libs/bem-core/common.blocks', check: false },
{ path: 'libs/bem-core/desktop.blocks', check: false },
{ path: 'libs/bem-core/touch.blocks', check: false },
{ path: 'libs/bem-components/common.blocks', check: false },
{ path: 'libs/bem-components/desktop.blocks', check: false },
{ path: 'libs/bem-components/touch-pad.blocks', check: false },
{ path: 'libs/bem-components/touch-phone.blocks', check: false },
{ path: 'libs/bem-components/design/common.blocks', check: false },
{ path: 'libs/bem-components/design/desktop.blocks', check: false },
{ path: 'libs/bem-components/design/touch-pad.blocks', check: false },
{ path: 'libs/bem-components/design/touch-phone.blocks', check: false },
'common.blocks',
'desktop.blocks',
'touch-pad.blocks',
'touch-phone.blocks'
];
Далее создал тестовый блок с разными стилями для разного устройства. Меняю background-color. Ничего волшебного не происходит, стили просто перекрывают друг друга независимо от платформы. Все время цвет фона, прописанный в блоке touch-phone.blocks. Вопрос - каким образом происходит определение устройства или нужно писать свои функции для этого (проект на основе сборки project-stub)?
Привет!
Никакой магии действительно нет. Идея в том, что собираются отдельные бандлы с разными наборами уровней и дальше в зависимости от юзер-агента сервер отдает нужный бандл. Логика про парсинг юзер-агента отдается на откуп разрабтчику, т.к. зависит от используемого сервера, но для всех распространенных серверов есть сторонние готовые решения.
На мой вкус лучше так не делать, а адаптировать сайт под устройства с помощью media query, пиша правила для каждого блока.
@vithar Зависит от задач же. Один наш общий знакомый даже подробную презентацию на эту тему сделал: http://veged.github.io/mcs-meetup-20150827/?full#cover ;)
Всем спасибо, подумаю, что выбрать. Конечно, хотелось бы изначальный вариант парсинга юзер-агента, так как позволяет не только с CSS работать.