Yэs!
  • Email
  • Facebook
  • Google
  • Linkedin
  • Twitter
  • Rss
  • Главная
  • Работа
  • Личное
  • Контакты

LESS.js — таблицы стилей без бардака

Posted on 24.08.2011 by Andrey Ovcharov in Работа

Вчера встретил статью про язык расширения каскадных таблиц стилей — LESS — ну и, разумеется, попробовал применить его в текущем проекте. Результат меня не просто обрадовал, а привёл в дичайший восторг. В современном CSS мне очень не хватало следующих вещей:

1. Определения констант для цветов. Во многих проектах дизайн делается в одной палитре и её достаточно задать один раз в начале таблицы стилей. Опять же, существенно упрощается изготовление различных цветовых схем для сайта. Тут всё это есть:

@color: #4D926F;
#header { color: @color; }

2. Ужасно надоедало писать бесконечные таблицы стилей для поддержки разных браузеров. Вот, пожалуйста:

.rounded-corners (@radius: 5px) { 
  border-radius: @radius; 
  -webkit-border-radius: @radius; 
  -moz-border-radius: @radius; 
} 
#header { .rounded-corners; }

3. Стили имеют свойство расползаться,  а теперь их можно очень удобно сгруппировать в древовидном порядке:

#header { h1 { font-size: 26px; font-weight: bold; } }
a { color: red; &:hover {color: blue;} }

Похоже, что разработчики столкнулись с общими для всех проблемами и сделали эффективное и удобное решение.

Конечно же, это не всё и на сайте проекта есть множество примеров по всем возможностям этой технологии. Теперь посмотрим, как использовать LESS в проектах на Zend Framework.

Во время разработки LESS логично подключить как обычный JavaScript файл и компилировать стили на клиентской стороне. Перекомпилировать отдельно при каждом изменении слишком накладно.

А вот при развёртывании проекта правильнее один раз скомпилировать стили и выложить их на сервер уже в формате CSS. 

Для реализации этой схемы я сделал ViewHelper похожий на HeadScript и HeadLink:

Скачать исходники HeadLess.php

Пример использования:

<?php
$this->headLess()->setJs($url->static . '/js/less-1.1.3.min.js');
$this->headLess()->appendStylesheet($url->static . '/css/style.less');
?>
<?= $this->headLess() ?>

Если установлена переменная окружения APPLICATION_ENV == 'development', то в код страницы добавится стиль в формате .less и JavaScript для его компиляции. В противном случае используется стиль .css.

Чтобы эта схема работала и в Production окружении, нужно при развёртывании сайта сконвертировать все .less скрипты в .css. Я это делаю так:

for file in $(find ~/.deploy/$project/ -name *.less); do echo $file; lessc $file > "`dirname "$file"`/`basename "$file" .less`.css"; rm $file; done;

Разумеется, перед этим необходимо установить node.js и less на машине, которая будет делать развёртывание проекта.

css, less.js, Zend Framework

2 comments on “LESS.js — таблицы стилей без бардака”

  1. Oleg:
    13.11.2011 в 12:58

    Уважаемый Андрей, прошу консультации. Пробую компилировать стили на клиентской стороне подключением js/less-1.1.3.min.js. И нормально работает в IE, Firefox, а в Googe Chrom неработает. Заренее благодарен.

    • Andrey Ovcharov:
      13.11.2011 в 13:03

      Можете прислать ссылку на сайт? — я посмотрю в чем проблема.

photo of Andrey Ovcharov

+Andrey Ovcharov

andrew@ovcharov.me

Twitter

  • За окном уже светает, дворники в оранжевых хламидах шкрябают метлами по асфальту, какой-то алконавт орет во все горло песню без слов и см...
  • Сквозь бесконечный шум города за окном еле-еле пробивается трель соловья
  • Знаете песню Марка Бернеса "Журавли"? Если не знаете - найдите, послушайте. "Настанет день, и с журавлиной стаей Я поплыву в такой же си...

Поиск

Похожие записи

  1. Флаги одним спрайтом

Категории

  • Без категории (752)
  • Личное (98)
    • DIY (12)
    • Поездки (12)
  • Портфолио (1)
  • Работа (66)
    • Веб-разработка (4)
    • ЖСК и ЖКХ (27)
    • Решения (5)

Последние записи

  • Дурдом
  • Куда вы, ути?
  • Бавария
  • Трансляция на Tumblr
  • По картинке совершенно не заметно, что на улице +4 и изо рта идет пар. Но на закате очень красиво

Ссылки

  • Site Today - вебсайты быстро
  • Spectraweb - разработка сайтов
  • Маджонг

Контакты

  • andrew@ovcharov.me
  • spectraweb
    • Twitter
    • Facebook
    • Google
    • Linkedin

(c) 2012 Yэs!