Pull to refresh

Comments 20

Обидно, спасибо, что заметили. Материал интересный, даже две компании опубликовали. Мы решили все же его оставить, чтобы большое количество людей смогло с ним ознакомиться.

Это как так? Разве это не нарушает правила ресурса?

для корп. аккаунтов другие условия, вероятно.
У меня вопрос, в чем преимущества css переменных перед scss-авскими? Только тем, что можно через js ими управлять?
Разница в том, что scss-переменные работают при компиляции, а css-переменные работают в рантайме. В рантайме не только через JS, но и в CSS.

Выгод здесь много. Например для смены темы сайта вам бы потребовалось перебивать стили в scss (писать селекторы и свойства, иногда более специфичные), а так достаточно перебить только значения переменных, без всяких специфичностей и селекторов если переменные глобальны.

Или например в ховерах у сложной структуры можно менять значение переменной, а не дублировать структуру для перебивки.

Ну и всегда лучше нативная поддержка, чем препроцессор.
Так и выходит что не шибко много. Тема — да. Сложный ховер… ну лучше наверное css ом решать проблему, если это компонент какой, чем подтягивать даже 1 строчку js хотя соблазнительно ради упрощения css. Ну попадаются переменные ради переменных, лепят их пипец не к месту.
Так js для ховера не нужно подтягивать. В :hover меняете несколько переменных и структуру вообще повторять не приходится, все дочерние элементы просто меняют значения свойств где нужно.
UFO just landed and posted this here
Одно из наиболее очевидных — темификация шаблонов. Когда при смене темы не нужно подтягивать полностью новый css-файл/ы со всеми стилями, а достаточно маленького файлика с новым набором переменных.
и еще одного файлика, который перебивает маленьку тонну остальных значений)

Откуда вы взяли перевод "Автозавершение"?

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

Я пишу. И не понимаю тех, кто пишет сейчас на пре-процессорах. Смысла в этом всё меньше.
Не соглашусь с Вами, что смысла меньше и вот мои аргументы за:
1. Код можно разделить на несколько общих файлов куда вынести некоторый код(например _title.scss в котором будет основной код для всех заголовков) и тут найти и поправить что-то будет легче чем в общем 2-4к строчном файле по ctrl-F
2. Если не нужен какой-то блок кода, то просто не импортируешь этот файл, а не вырезаешь из общего, что исключает ошибки каких нибудь забытых скобок или точек с запятыми и дает возможность переиспользовать код по новому в разных проектах
3. Код лучше группирован, например
.btn {
display:inline-flex;
align-items:center;
justify-content:center;
&:hover {
opacity:.9;
}
&-primary {
background-color: blue;
color: white;
&:hover {background-color:lightblue;}
}
}
4. код не избыточен вендорными префиксами и его легче читать, поскольку они добавляются уже после сборки
5. Например в shopify есть поддержка scss из коробки
6. Для маленьких проектов(лендинги всякие, верстка email) да можно обойтись, но для больших лучше использовать препроцессоры, так как отладка происходит быстрее и например удаление большого куска кода = удалению одной строки импорта
7. Код всегда красиво отформатирован, потому как это делается после сборки, а не дергается каждый раз при включенном prettier
8. Собрать условно кастомный bootstrap только на css не получится, а вот выкинуть какие нибудь кнопки и т. д. можно отключив опять же импорты
Но соглашусь в одном — каждый выбирает писать код так как ему нравится или по правилам компании)
У вас не очень много опыта в вёрстке, да?
  1. developer.mozilla.org/en-US/docs/Web/CSS/@import
    Плюс мне ничего не мешает разбить стили на сколько угодно файлов. Вообще не вижу в этом пункте какой-либо разницы
  2. см п.1
  3. Код хуже группирован! Он зависим от вышестоящих правил. Чтобы что-то отредактировать, надо вначале проскроллить код, дабы убедиться что мы правим нужный селектор. Я уж молчу про правки «наживую» с помощью веб-инспектора. Слишком много зависимостей во всяких scss, чтобы без проблем править код на лету. Типовая задача — надо изменить какое-то свойство в зависимости от навешиваемого класса у родителя. И понеслась — надо закрывать блочную структуру правил и втискивать правило с классом родителя. Вся структуризация псу под хвост сразу.
    Какую угодно группировку я вам легко и всякими табуляциями сделаю.
  4. Вендорные префиксы сейчас практически неактуальны. За последние проектов 10, мне всего лишь один раз для Фокса пришлось что-то специфичное прописать. При этом они очень сильно захламляют код в том же веб-инспекторе
  5. Понятия не имею что это такое. Ну и «поддержка css из коробки» есть вообще у любой платформы веб-разработки))
  6. см п.1 Отладка происходит медленнее — несовпадение нумерации строк кода в веб-инспекторе и scss-файле. Плюс постоянно надо держать включенным dev-режим или запускать компилятор. В каком месте тут быстрее??? Я уж молчу, если компилятора под рукой просто нет
  7. Вы снова повторяетесь. Код забит всякими амперсандами...
  8. Всё, что можно сделать на препроцессорах — можно сделать и на css. Поскольку в итоге мы все равно имеем скомпилированный css-файл.


Мне пришлось написать и переписать кучу кода как на чистом css, так и на препроцессорах. Лично для меня практически без разницы с чем работать. Ну там первые пол часа надо привыкнуть, чтобы синтаксис вспомнился. Но если я буду писать что-то для себя — только на css. Это более поддерживаемо (код можно правит в любом текстовом редакторе, хоть с телефона). Более наглядно — не надо рыться и искать куда-то запихнутые миксины и т.п. Текущих возможностей современного css с лихвой хватает для того, чтобы не париться с компиляцией.

У меня достаточно большой опыт в верстке, у моих американских и израильских клиентов часто нужна поддержка ie10 и очень редко но и ie9 и всех остальных браузеров не самой последней версии, плюс нативный css import работает медленнее и не во всех браузерах поддерживается, на счет не совпадения строк(нужно использовать sourcemap и никаких проблем с этим нет). Предлагаю закончить эту дискуссию, поскольку мой способ работы, так как и Ваш не мешает нам зарабатывать на этих знаниях деньги

Привет. Вопрос такой: я объявил глобальную переменную, затем в определенном блоке переопределил ее для нескольких элементов, но для других, элементов в этом же блоке, мне нужны данные из глобальной, что тогда делать?
И спасибо за статью! Она великолепна!

А как насчет накладных расходов, том смысле, что браузеру нужно производить дополнительную обработку переменных. В случае препроцессоров эта нагрузка с клиентов снимается.
Понятно, что если нужно править дизайн из js, CSS-переменные все конкуренции, но что если это не требуется? Каков тогда урон производительности?

Не задал бы этот вопрос если бы не цитата в уважаемом MDN: "Данный метод также вызывает проблемы с производительностью. Он отображает страницу медленнее чем обычно, т.к. требует время на разбор" (ссылка).

Sign up to leave a comment.