Почему стоит использовать LESS при верстке сайта?

Очень долгое время я использовал при верстке сайтов только голый CSS. Но с опытом становится очевидно, что стандартный CSS пожирает очень много времени и внимания, а зачастую представляет из себя мусорную корзину, где один класс наслаивается на другой и при продолжительной поддержке сайта, особенно если изменения вносятся не одним человеком - оригинальные файлы .css превращаются в ужас на крыльях ночи, где не разберется и сам черт.

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

Результаты меня очень порадовали! LESS это ЗБС! Задача решилась слишком даже легко: ранее, чтобы добавить возможность смены цвета для всего шаблона, писался отдельный многострочный .css файл где шли соответствующие замены и т.д. А с использованием LESS, задача решилась в 5 строк) Я задавал основные цвета на которые хочу менять цвет, и просто запускал цикл в ходе которого, весь этот мусорный код генерируется сам, без участия пальцев.

Что нужно знать о LESS? Во первых, LESS это ЗБС!

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

Например, возьмем стандартный код CSS:

Код
.one.left { width: 495px; }
.one.right { width: 462px; }
.one.left .descr { width: 321px; }
.one.right .descr { width: 288px; }
.one .img { width: 174px; }
.one .title { font-size: 28px; }
.one .descr .text { font-size: 15px; }
.one .descr .text span { font-size: 20px; }

А так это выглядит в LESS:

Код
.one {
    &.left {
        width: 495px;
        .descr { width: 321px; }
    }
    &.right {
        width: 462px;
        .descr { width: 288px; }
    }
    .img { width: 174px; }
    .title { font-size: 28px; }
    .descr .text {
        font-size: 15px;
        span { font-size: 20px; }
    }
}

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

Далее, что так же не перестает меня радовать, это переменные, в которые можно внести все основные CSS стили страницы, а далее банально к ним обращаться. Главное преимущество этого подхода к верстке страниц в том, что в любой момент, достаточно изменить всего лишь одну строчку кода, для изменения всей страницы или сайта.

Как это в голом CSS:

Код
body {
    font-family: 'pf_din_text_cond_proregular', Arial, Tahoma, Helvetica, sans-serif;
    color: #606366;
}
h1,h2,h3,h4,h5,h6 {
   color: #dc3c3c;
   font-family: 'pf_din_text_cond_promedium', Tahoma;
}

Создаем переменные в LESS:

Код
@fontRegular: 'pf_din_text_cond_proregular', Arial, Tahoma, Helvetica, sans-serif;
@fontBold: 'pf_din_text_cond_promedium', Tahoma;
@defColor: #606366;
@hColor: #dc3c3c;

body {
    font-family: @fontRegular;
    color: @defColor;
}
h1,h2,h3,h4,h5,h6 {
   color: @hColor;
   font-family: @fontBold;
}

И далее по всему коду, к этим переменным можно обращаться постоянно. Захочется изменить какой-то цвет? Не нужно будет лазить по всему .css файлу, а достаточно заменить одну строчку.

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

Как делаем в CSS:

Код
input[type="text"] {
    border-radius: 5px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    -khtml-border-radius: 5px;
}
.str .one {
    border-radius: 7px;
    -moz-border-radius: 7px;
    -webkit-border-radius: 7px;
    -khtml-border-radius: 7px;
}
.pagination ul li {
    border-radius: 13px;
    -moz-border-radius: 13px;
    -webkit-border-radius: 13px;
    -khtml-border-radius: 13px;
}

А в LESS присваиваем нужный класс оформления:

Код
.border-radius (@radius) {
    border-radius: @radius;
    -moz-border-radius: @radius;
    -webkit-border-radius: @radius;
    -khtml-border-radius: @radius;
}

input[type="text"] {
    .border-radius (5px);
}
.str .one {
    .border-radius (7px);
}
.pagination ul li {
    .border-radius (13px);
}

Это восхитительно!) Прямо так и хочется устроить обнимашки с LESS кодом или даже угостить чем-нибудь крепким с блек-джеком и шлюхами.

На этом прелести не заканчиваются, LESS позволяет очень доступно манипулировать цветом, что делает эту надстройку действительно очень гибкой. Например можно немного осветлить цвет:

Код
lighten(#000, 20%);

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

Ладно, итак что нужно чтобы начать пользоваться LESS?

  1. создать файл с именем типа template.less
  2. подключить его в хедере страницы:

    Код
    <link rel="stylesheet/less" type="text/css" href="/assets/css/template.less">
  3. подключить в хедере js файл:

    Код
    <script src="//cdnjs.cloudflare.com/ajax/libs/less.js/1.7.5/less.min.js"></script>

Для начала, вполне сойдет.

А вот несколько сервисов, которые за полторы секунды превратят старый и грязный CSS в более приятное и покорное LESS.

Естественно, что на рабочих проектах использовать LESS не стоит, для лучшей производительности нужно использовать компиляторы в голенький CSS, например:

Ну а на modx revolution, стоит воспользоваться замечательным компонентом MinifyX.

1158