Pull to refresh
0

5 возможностей LESS, о которых вы могли не знать

Reading time 3 min
Views 15K

LESS


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


Функция data-uri


Часто бывает удобно включить внешний файл, например, иконку, непосредственно в стили с помощью схемы data:URI. Плюсы такого способа всем известны и я не буду их перечислять. Есть множество способов преобразовать файл в данный формат: это онлайн-конвертеры, плагины для Grunt и Gulp, модуль для Node.js и даже консольная утилита. Однако в LESS уже встроена функция для такого преобразования, поэтому нет необходимости дополнительно что-то настраивать.


LESS


.icon-add {
    background-image: data-uri("../icons/add.svg");
}

CSS


.icon-add {
    background-image: url("data:image/svg+xml,...");
}

Функции image-width и image-height


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


LESS


.logo {
    width: image-width("../images/logo.png");
    height: image-height("../images/logo.png");
}



CSS


.logo {
    width: 198px;
    height: 125px;
}

Функции для смешивания цветов


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


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


LESS


.link {
    color: fadeout(multiply(#ff6600, #999999), 20%);
}

CSS


.link {
    color: rgba(153, 61, 0, 0.8);
}

Псевдокласс extend


Думаю многие из вас использовали миксины, они позволяют использовать общие стили в нескольких местах, но у них есть один минус – дублирование результирующего CSS кода. Данного недостатка можно избежать если вместо миксинов использовать псевдокласс extend, он позволяет унаследовать стили без их дублирования.


LESS


.message {
    padding: 15px;
    border: 1px solid transparent;
    border-radius: 4px;
}

.message-success {
    &:extend(.message);
    background-color: #dff0d8;
}

.message-info {
    &:extend(.message);
    background-color: #d9edf7;
}

CSS


.message,
.message-success,
.message-info {
    padding: 15px;
    border: 1px solid transparent;
    border-radius: 4px;
}

.message-success {
    background-color: #dff0d8;
}

.message-info {
    background-color: #d9edf7;
}

Объединение множественных CSS-свойств


Я заметил, что в дизайне все чаще используется такой прием оформления, как множественные тени. Например, у элемента есть внутренняя тень, а при наведении на него добавляется внешняя. В этом случае внутренняя тень будет задаваться в CSS дважды: для обычного состояния и для hover. Однако этого можно избежать, если использовать возможность объединения значений множественных свойств с помощью символа +.


LESS


.button {
    box-shadow+: inset 0 0 10px #555;
}

.button:hover {
    .button;
    box-shadow+: 0 0 20px #000;
}

CSS


.button {
    box-shadow: inset 0 0 10px #555;
}

.button:hover {
    box-shadow: inset 0 0 10px #555, 0 0 20px #000;
}

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


Спасибо за внимание.

Tags:
Hubs:
+20
Comments 14
Comments Comments 14

Articles

Information

Website
www.netcracker.com
Registered
Founded
Employees
5,001–10,000 employees
Location
США