Pull to refresh

Почему мы стали использовать препроцессор Stylus в Яндекс.Почте, а также о библиотеке, помогающей жить с IE

Reading time 10 min
Views 87K
Яндекс corporate blog Website development *CSS *
imageСегодня я хочу рассказать о том, почему и как мы пришли к использованию препроцессора Stylus в разработке Яндекс.Почты, а также описать используемый нами метод работы со стилями для IE. Он очень легко реализуется именно с помощью препроцессоров и делает поддержку IE простой и удобной. Мы разработали для этого специальную библиотеку, которой тоже поделимся — if-ie.styl.

Это только первая статья из серии статей об использовании препроцессора Stylus в Яндекс.Почте, которые мы готовим к публикации.

Читать дальше →
Total votes 98: ↑92 and ↓6 +86
Comments 37

Дайджест интересных новостей и материалов из мира айти за последнюю неделю №52 (6 — 12 апреля 2013)

Reading time 7 min
Views 30K
Zfort Group corporate blog Website development *
Предлагаем вашему вниманию очередную подборку с ссылками на новости, интересные материалы и полезные ресурсы.
Кстати, сегодня исполняется ровно год с момента поста нашего первого дайджеста на Хабре. Вам спасибо, что до сих пор нас читате, нам спасибо, что все еще продолжаем это дело :)


Читать дальше →
Total votes 68: ↑57 and ↓11 +46
Comments 6

Автопрефиксер — окончательное решение проблемы префиксов в CSS

Reading time 4 min
Views 54K
«Evil Martians» corporate blog Website development *CSS *
Автопрефиксер — утилита нового поколения для добавления префиксов к экспериментальным свойствам из CSS 3. Она берёт с Can I Use последние данные о префиксах и популярности браузеров, читает ваш файл стилей, находит свойства и значения, которым действительно нужны префиксы и добавляет их.

Вы просто пишите обычный CSS:
a {
    transition: transform 1s
}


Автопрефиксер сам заменит нужные (и только нужные) свойства и значения (обратите внимание на -webkit-transform):
a {
  -webkit-transition: -webkit-transform 1s;
  -o-transition: -o-transform 1s;
  transition: -ms-transform 1s;
  transition: transform 1s
}


Эта утилита работает во время выкладки сайта на сервера (и на машине программиста во время разработки), так что не заметна для клиентов и не требует какой-то поддержки от браузеров.

Проблема


К сожалению текущие инструменты плохо решают задачу:
  • Писать вереницы свойств руками — очевидно плохое решение. Такой код невозможно читать, легко забыть поправить остальные свойства при редактировании.
  • В Sass и LESS вам нужно самому следить за актуальностью префиксов и копировать примеси из проекта в проект. К тому же примеси могут решить проблему только у свойств, а не у значений (например, calc()).
  • Compass или Bourbon уже лучше, там список примесей хранится централизовано и его легче держать актуальным (но практика показывает, что обычно в примеси добавляют все префиксы не следя за актуальностью). Проблема значений всё так же не решена.
  • Самая главная проблема Sass и LESS, что вам всё равно нужно постоянно думать «из CSS 3 это свойство или нет?» — и в зависимости от этого использовать примесь или нет. Эту проблему немного решил Stylus — у него синтаксис примесей не отличается от обычных свойств, так что префиксы добавляются невидимо. Впрочем, проблема актуальности и значений всё равно остались.
  • Есть ещё скрипты добавления префиксов прямо в браузере, например Prefix Free, но лучше всего обрабатывать стили на этапе разработки и выкладки, а не повторять обработку каждый раз в браузере клиентов.

Понятно, что языки препроцессоров не позволяют решить проблему полностью, нужен был фундаментально новый инструмент.
Читать дальше →
Total votes 72: ↑64 and ↓8 +56
Comments 81

О переменных в CSS и абстракциях в веб-программировании

Reading time 5 min
Views 21K
Website development *CSS *
Sandbox
Предлагаю вашему вниманию перевод статьи из блога популяризатора веб-технологий Криса Койера About Variables in CSS and Abstractions in Web Languages. В статье автор поднимает вопрос о том, действительно ли CSS нуждается в дополнениях, которые делают его сложнее для восприятия, а порог вхождения — выше, когда у разработчиков уже сегодня есть возможность подняться одним уровнем абстракции вверх.

Переменные приходят в CSS. Уже сегодня есть конкретные реализации, так что их теперь не остановить. В Firefox они появились в версии 29, а в Chrome их можно использовать без префиксов в версиях 29 и старше, если у вас в настройках включён флаг Enable experimental Web Platform features (в русской локали «Включить экспериментальные функции веб-платформы» — прим. перев.).

Скажу сразу, можно сколько угодно спорить о том, хорошо это или плохо, но изменить уже ничего нельзя. Однако, так как мне всё же хочется обсудить эту тему, я продолжу.
Читать дальше →
Total votes 29: ↑24 and ↓5 +19
Comments 27

Почему стоит использовать препроцессоры

Reading time 5 min
Views 60K
Website development *CSS *
У меня достаточно неплохой опыт в верстке — несколько лет.
За это время было многое — и табличная верстка, и собственные фреймворки, и IE6, и адаптивный дизайн, да что угодно — я всегда старался быть рядом с bleeding edge, как говорится.
Больше CSS-фреймворков (привет, бутстрап) и Emmet-а мне нравятся препроцессоры и я расскажу, почему. Возможно, покажется, что моя статья несколько устарела и сейчас все используют препроцессоры как само собой разумеющееся, но, увы, это не так. Недавно я встретил человека, который говорил о том, что ему быстрее писать CSS-код, нежели использовать препроцессоры. Мы долго спорили, на самом деле, ну очень долго, в итоге я решил выложить свои мысли здесь, в одном месте.

Less или Sass?


Ну, на самом деле, это дело каждого. Мне не нравился Sass из-за его медлительности — Less побыстрее выполнялся всегда, в итоге в один момент я решил перейти на Less, но через некоторое время оказалось, что мне не хватает его мощности! Увы, я так и не нашел, как реализовать банальный миксин уровня вот этого.
Но и медлительность Sass не устраивала, но именно в тот момент, когда я хотел обратно вернуться на Sass, но терзался сомнениями, мне посоветовали libsass, а т.к. я использую Grunt — мне было достаточно подключить только grunt-sass (и ничего больше, например, установка Ruby и гемов). Для меня выбор был ясен и с тех пор — только libsass. Мощность самого Sass и с скорость C — что еще нужно?
Stylus я пока не пробовал, как-нибудь потом.

Почему все-таки препроцессоры?


Я не скажу ничего нового, скорее всего, но я хочу показать, почему стоит использовать препроцессоры.
Читать дальше →
Total votes 28: ↑26 and ↓2 +24
Comments 44

Начинаем разбираться с Myth — препроцессором будущего

Reading time 6 min
Views 14K
CSS *
Sandbox
Myth — препроцессор CSS, позволяющий уже сейчас использовать в ваших проектах новые и экспериментальные возможности CSS.

Почему Myth?


С помошью Myth вы можете полноценно использовать даже те CSS свойства, которые все еще находятся на этапе разработки W3C и не поддерживаются абсолютным большинством браузеров. Но основным его преимуществом перед другими препроцессорами является то, что вам не придется изучать новый язык разметки, как это происходит с SASS или LESS. В Myth используется стандартная разметка CSS. Поэтому вам не придется ничего переписывать, когда поддержка тех или иных свойств появится в браузерах, а всего лишь перекомпилировать уже имеющиеся стили, что обычно занимает буквально несколько секунд — всю остальную работу за вас сделает Myth.

Вот несколько возможностей CSS, которые доступны в Myth на данный момент:


Читать дальше →
Total votes 27: ↑18 and ↓9 +9
Comments 13

Кнопок много не бывает

Reading time 6 min
Views 13K
Website development *CSS *
Sandbox
LessПримерно полгода назад я прочитал статью «Почему стоит использовать препроцессоры». В ней автор описывает преимущества препроцессоров на примере реализации кастомных кнопок. Статья оказалась познавательна и очень интересна. Автор приводил в примеры разные препроцессоры и объяснял почему остановился на Sass. На счет цвета карандашей и вкуса я не вправе спорить, у каждого свои взгляды. Но еще тогда мне показались несправедливыми описания о том, что Less не достаточно мощный. Еще тогда хотелось сделать что-то подобное, воплотить идею автора на других препроцессорных языках (Less, Stylus). На момент прочтения статьи времени что-то сделать свое не было. И вот недавно, в один из выходных, я вспомнил об этой статье и решил реализовать идею автора — только средствами Less. Делать что-то новое я не видел смысла, поэтому решил помочь автору в развитии проекта, сделал форк с его репозитория, проделал необходимую работу и создал pull request.
Читать дальше →
Total votes 21: ↑12 and ↓9 +3
Comments 16

Векторная замена спрайтам — имплантируем SVG в CSS

Reading time 4 min
Views 42K
Website development *CSS *
Sandbox
Не так давно компания, в которой я работаю, наконец-то окончательно отказалась от поддержки IE8 и, как следствие, я вплотную занялся вопросом перехода с растровых иконок на векторные. Основные плюсы SVG — это масштабирование, малый вес и возможность стилизации через CSS.

Сначала я попробовал воспользоваться техникой спрайтов, просто использовав вместо растра вектор, но тут возникло две проблемы:
  • Масштабирование. При произвольных размерах элементов спрайта для того, чтобы его точно отпозиционировать, приходится танцевать с бубном. И при изменении размера самого спрайта (например, при добавлении нового элемента) все может поползти.
  • Возможность стилизации посредством CSS отсутствует, потому что физически SVG-картинки в HTML-коде нет.

Решаем проблемы по мере их поступления
Total votes 17: ↑16 and ↓1 +15
Comments 27

Режимы и состояния в SCSS

Reading time 5 min
Views 18K
Website development *CSS *
Режимы и состояния в SCSS

Соображения на тему использования режимов и состояний компонентов пользовательского интерфейса. Рассмотрим применение подхода при работе с препроцессорами стилей. Осторожно, в статье слишком много примеров кода.
Читать дальше →
Total votes 22: ↑20 and ↓2 +18
Comments 15

Переосмысление разметки. Первые шаги с Gantry 5

Reading time 8 min
Views 21K
CMS *WordPress *Website development *Joomla *
Tutorial
Грамотная посадка верстки на CMS WordPress – задача важная (после нескольких проектов мне стало ясно, что это занимает достаточно много времени). Чтобы ускорить процесс, начал искать фреймворк для написания тем WordPress. О Gantry 5 узнал от коллеги, который ведёт сайты на Joomla. Он рассказал, что есть движок, который может работать, как и на WordPress, так и на Joomla (а с некоторых пор и на Grav). Вот и решил узнать о нём побольше. Ведь согласитесь, — это хорошо: работать с одной системой и, перейдя на другую, продолжить пользоваться теми же инструментами.

В русской части интернета почти ничего не нашлось — ни отзывов, ни документации, а статьи оказались поверхностными. Единственно полная информация — только на официальном сайте.

Прочитав всё, что смог найти в русскоязычном интернете и частично документацию, решил изучить Gantry 5. Использование в качестве шаблонизатора twig, и хранение конфигов в yaml формате стало дополнительным плюсом (поскольку я давно присматривался к symfony, но времени не находил – получалось частичное изучение инструментов).
image
Читать дальше →
Total votes 15: ↑12 and ↓3 +9
Comments 8

Sass MediaScreen — Определяем девайсы на CSS

Reading time 3 min
Views 8.8K
Website development *CSS *HTML *
Sandbox
Я считаю, что в последнее время разница размера экранов между разными группами устройств всё больше размывается. Не смотря на это я попытался написать инструмент для определения, как групп устройств (мобильники, планшеты, лаптопы, десктопы), так и конкретных девайсов (iPhone 5, iPhone X, iPad Pro 12 и т.д.). Получилась, на мой взгляд, довольно удобная пачка SASS-миксинов. И что немаловажно, инструмент прост в использовании, а также позволяет расширять список устройств своим без правки исходников.

Читать дальше →
Total votes 22: ↑19 and ↓3 +16
Comments 6