Комментарии 14
Если я правильно понял, то вы чтобы не писать ширину экрана в двух местах (CSS, JS), решили писать ее в трёх (CSS, JS, HTML).
И даже если отбросить идентификаторы c явным указанием ширины, всеравно нужно следить за тремя местами. Это при том, что использование разных идентификаторов сделает код сложным для понимания людьми, которые его не писали.
Подход рабочий, я не спорю, но ради одного IE9 (Caniuse CSS Media Queries и Caniuse window.matchMedia) изобретать такой велосипед — ИМХО не стоит.
И даже если отбросить идентификаторы c явным указанием ширины, всеравно нужно следить за тремя местами. Это при том, что использование разных идентификаторов сделает код сложным для понимания людьми, которые его не писали.
Подход рабочий, я не спорю, но ради одного IE9 (Caniuse CSS Media Queries и Caniuse window.matchMedia) изобретать такой велосипед — ИМХО не стоит.
Отказаться от явных идентификаторов в js и добавить явные идентификаторы в html — выгода все же сомнительная чутка
Вы не правильно поняли, явное указание диапазонов в моем примере есть только в одном месте — CSS, маркеры мы добавляем 1 раз, 1 раз пишем код скриптов и изменяя в будущем диапазон размера экрана не возвоащаемся ни в html ни в скрипты, все и так будет работать.
А что, если сделать, например, вот так:
CSS (Stylus, Rupture):
JS (ES6, JQuery):
Таким образом мы можем передать в js названия переменных, к которым привязан наш адаптив в css.
CSS (Stylus, Rupture):
body:after
display block
+above('s')
content 's'
+above('m')
content 'm'
+above('l')
content 'l'
JS (ES6, JQuery):
$(window).on('resize', () => {
console.log(window.getComputedStyle(document.body, ':after').getPropertyValue('content'));
});
Таким образом мы можем передать в js названия переменных, к которым привязан наш адаптив в css.
Смысл сильно не меняется, как я и указал в статье, в роли маркера может выступать реальная конструкция верстки.
Пока создавал своё небольшое решение подобной проблемы вы меня опередили :)
Но вот мой рабочий вариант: JSFiddle
Плюс, что не надо плодить и контролировать элементы в DOM, и с учетом mobile first вообще никаких проблем нет с определением min-width или max-width.
Но вот мой рабочий вариант: JSFiddle
Плюс, что не надо плодить и контролировать элементы в DOM, и с учетом mobile first вообще никаких проблем нет с определением min-width или max-width.
Да, можно так, я намеренно упростил все для описания сути приема.
И все-таки, узкое место в таком подходе — производительность .getComputedStyle()
Раз уж речь о переменных, то наверняка и какая-никакая система сборки имеется. В таком случае, имхо, самый роскошный вариант — подхватывать хэш, в котором хранятся диапазоны, и передавать его в тот-же webpack, например.
Раз уж речь о переменных, то наверняка и какая-никакая система сборки имеется. В таком случае, имхо, самый роскошный вариант — подхватывать хэш, в котором хранятся диапазоны, и передавать его в тот-же webpack, например.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Адаптивный jQuery без window.matchMedia