Less.js расширяет возможности CSS динамическими функциями: переменными, примесями (mixins), операциями и встроенными функциями.
Встроенные функции
Операции с единицами измерения и форматирование
unit(30px / 5px) // => 6
unit(5, px) // => 5px
e("ms:stuff()") // => ms:stuff()
%("count: %d", 1+2) // => "count: 3"
Функции проверки типов данных
iscolor(@x) // Returns true if value is a color
isstring(@x) // Returns true if value is a string
isnumber(@x) // Returns true if value is a number
iskeyword(@x) // Returns true if value is a keyword
isurl(url(...)) // Returns true if value is a url
ispixel(@x) // Returns true if unit is px
isem(@x) // Returns true if unit is em
ispercentage(@x) // Returns true if unit is %
isunit(@x, rem) // Returns true if value matches specified unit
Операции с цветовыми каналами
hue(@color) // Returns the hue channel (0-360)
saturation(@color) // Returns the saturation percentage
lightness(@color) // Returns the lightness percentage
luma(@color) // Returns perceptual luma
luminance(@color) // Returns relative luminance
Смешивание и регулировка цветов
fade(@color, 50%) // Set opacity to 50%
fadein(@color, 10%) // Increase opacity by 10%
fadeout(@color, 10%) // Decrease opacity by 10%
spin(@color, 30) // Rotate hue angle by 30 degrees
mix(@color1, @color2, 50%) // Blend two colors evenly
Гарды примесей (Mixin Guards) и условия
Less использует ключевое слово when для применения условной логики к миксинам:
// Условие по уровню яркости
.theme-box when (luma(@color) > 50%) {
color: #000;
background-color: @color;
}
// Условие отрицания
.theme-box when (not (luma(@color) > 50%)) {
color: #fff;
background-color: @color;
}
// Резервное условие по умолчанию
.theme-box when (default()) {
border: 1px solid #ccc;
}
// Условие точного равенства
.shape when (e(@shape) = 'circle') {
border-radius: 50%;
}