Мы все знаем, что CSS может быть немного неприятно писать, особенно когда речь идет о серьезных проектах с тысячами строк кода. В конечном итоге Вы вынуждены повсюду дублировать одни и те же стили и использовать поиск и замену Вашего редактора или IDE при каждом изменении цвета. Работа с большим файлом на чистом css – это кропотливый и, главное, совсем не творческий процесс, в котором слишком легко упустить важную деталь и ошибиться. Но все это до тех пор, пока Вы не начинаете использовать препроцессор.

К счастью, сообщество веб-разработчиков решило проблему громоздких css-файлов с уймой повторяющихся блоков стилей. Теперь у нас есть CSS-препроцессоры, такие как Less, Sass и Scss. Они дают нам ряд преимуществ по сравнению с простым CSS:

  • Переменные, чтобы Вы могли определять и легко изменять значения во всем файле стилей. (Это когда-нибудь появится и в CSS);
  • Динамически рассчитанные значения. (В CSS мы имеем calc, но это только для единиц длины);
  • Миксины, которые позволяют Вам повторно использовать и комбинировать стили. Они даже поддерживают передачу аргументов.

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

Инструментарий для работы с препроцессором less

Инструментарий для работы с препроцессором less

Препроцессор Less написан на JavaScript, и для его работы требуется либо Node.js, либо веб-браузер. Конечно, Вы можете подключить less.js на своем веб-сайте, и он будет прямо там компилировать все файлы стилей .less в режиме реального времени, но этот процесс слишком сильно тормозит загрузку Вашей страницы и категорически не рекомендуется.

Рекомендуемый способ - заранее скомпилировать Ваши написанные на less стили в обычные стили css и в таком виде подключать их к Вашей веб-странице. Существует ряд бесплатных графических утилит, которые могут скомпилировать файлы .less: можно воспользоваться сборщиками проектов, такими как webpack или gulp, многие IDE также отлично справляются с компиляцией less-файлов, но давайте рассмотрим в этой статье способ с использованием node.js, который не требует ни мощной IDE, ни установки лишних программ.

Если у Вас установлена node (а она у Вас установлена, раз Вы занимаетесь веб-разработкой) и Вы знаете, что такое терминал, откройте его и установите через него Less, используя следующую команду NPM:

npm install –g less

Это даст Вам доступ к команде less из любого открытого терминала, что позволит Вам скомпилировать Ваши файлы .less в обычный CSS в абсолютно любой директории на устройстве. Вот единственная необходимая команда для компиляции less-файла в css-файл:

lessc styles.less styles.css

После того как Вы скомпилировали css-файл, подключите его к html-файлу. Если в процессе компиляции произошла ошибка, она отобразится в Вашем терминале.

Работа с переменными в препроцессоре less

Работа с переменными в препроцессоре less

Одной из основных особенностей Less является возможность создавать переменные также, как и в стандартном языке программирования. Они могут хранить любые типы значений, которые Вы часто используете: цвета, размеры, селекторы, имена шрифтов, URL-адреса и так далее. Философия less заключается в повторном использовании синтаксиса CSS, где это возможно.

Здесь мы определяем и используем две переменные: одну для цвета фона и одну для цвета текста, обе из которых содержат шестнадцатеричные коды.

@background-color: #222222;
@text-color: #DD4814; 
p {  
  background-color: @background-color;
  color: @text-color;
} 
div.my-class {
  background-color: @background-color;
}
h2 {
  color: @text-color;
}

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

Работа с миксинами в препроцессоре less

Less позволяет нам использовать существующий класс или идентификаторы и применять все его стили непосредственно к другому селектору. Следующий пример прояснит ситуацию:

#circle {
  background-color: #DD4814;
  border-radius: 100%;
} 
#small-circle {
  width: 20px;
  height: 20px;
  #circle
} 
#big-circle {
  width: 200px;
  height: 200px;
  #circle
}

Если Вы не хотите, чтобы миксин появлялся в скомпилированном CSS, Вы можете поместить скобки после него:

#circle(){
  background-color: #DD4814;
  border-radius: 100%;
} 
#small-circle {
  width: 20px;
  height: 20px;
  #circle
} 
#big-circle {
  width: 200px;
  height: 200px;
  #circle
}

Еще одна крутая вещь, которую могут делать Mixins - это получать параметры. В следующем примере мы добавляем аргумент для ширины и высоты наших кругов со значением по умолчанию 20 пикселей. Это создаст маленький круг 20x20 и большой 200x200 пикселей.

#circle(@size: 20px){
  background-color: #DD4814;
  border-radius: 100%;
   width: @size;
  height: @size;
} 
#small-circle {
  #circle
} 
#big-circle {
  #circle(200px)
}

Работа с вложенностью в препроцессоре less

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

ul {
  background-color: #222222;
  padding: 0 15px;
  list-style: none;
   li {
    background-color: #fff;
    margin: 10px 0;
  }
}

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

В следующем примере после компиляции в CSS наш li будет иметь текст белого цвета, так как в правилах ul мы предварительно определили strong > @ text-color.

@text-color: #000000;
ul {
  @text-color: #fff;
  background-color: #222222;
  padding: 0 15px;
  list-style: none;
   li {
    color: @text-color;
    margin: 10px 0;
  }
}

Работа с функциями в препроцессоре less

В Less также есть функции! Он начинает все больше и больше походить на язык программирования, а не «таблицу разметки стилей», не так ли?

Давайте посмотрим на функцию fadeout, которая увеличивает прозрачность цвета.

@var: #DD4814;
div {
  height: 100px;
  width: 100px;
  background-color: @var;
   &:hover {
    background-color: fadeout(@var, 50%)
  }
}

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

Добавить комментарий

Ограниченный HTML

  • Допустимые HTML-теги: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.