Dynamický stylovací jazyk LESS (Leaner CSS – štíhlejší CSS) umožňuje automaticky zpracovávat .less soubory připojené pomocí funkce drupal_add_css() nebo .info souboru tématu vzhledu.
LESS knihovna rozšiřuje CSS o dynamické chování např. proměnné (barvy, cesty k souborům, fonty, rozměry atd.), zanořování selektorů, matematické operace (včetně operací s barvami), funkce (vrací hodnotu), mixiny (vrací CSS) atd., čímž umožňuje zefektivnit práci. Zápis je podobný jazyku PHP nebo JavaScriptu.
@import (less) "plain.css";
Poznámky:
#default {@width: 960px;} .article {color: #ff0000;} .comment { width: #defaults[@width]; color: .article['color']; }
Instalace a nastavení:
stylesheets[all][] = styles/my_style.css.less ;For automatic variable and function association with non globally added stylesheets less[sheets][] = relative/path/to/stylesheet.css.less
<?php
$module_path = drupal_get_path('module', 'my_module');
drupal_add_css($module_path . '/styles/my_module.css.less');
?>Podobné moduly:
Další moduly:
Poznámky:
A) Běžný způsob media queries v Less preprocessoru:
@mobile: ~"all and (max-width: 767px)";
@tablet: ~"all and (min-width: 768px) and (max-width: 979px)";
@normal: ~"all and (min-width: 980px) and (max-width: 1199px)";
@wide: ~"all and (min-width: 1200px)";
.style-article-featured {
width: 100%; // Mobile first
@media @tablet {
width: 80%; // Tablet
}
@media @normal, @wide {
width: 50%; // Normal & Wide
}
}B) Media queries reagující na velikost písma: ![]()
Další výhodou preprocesorů je např. i možnost psát média queries přímo ke konkrétnímu prvku (není tedy nutné rozdělovat dokument na sekce dle media queries) tzv. mikrokoncepce (mikrobreakpointy):
Zdroj (před kompilací):
/* Media queries */
@mobile: ~"(max-width: 43.99em)";
@tablet: ~"(min-width: 44em)";
@tablet_only: ~"(min-width: 44em) and (max-width: 69.99em)";
@desktop: ~"(min-width: 70em)";
@desktop_only: ~"(min-width: 70em) and (max-width: 209.99em)";
@tv: ~"(min-width: 210em)";
/* Media queries belongs to the content! */
nav {
/* ...CSS A)... */ // Mobile first
@media @tablet {
/* ...CSS B)... */ // Tablet
}
@media @tablet_only {
/* ...CSS B2)... */ // Only Tablet
}
@media @desktop, @tv {
/* ...CSS C)... */ // Normal & TV
}
}Výsledek (po kompilaci):
/* Media queries belongs to the content! */
nav {
/* ...CSS A)... */
}
@media (min-width: 44em) {
nav {
/* ...CSS B)... */
}
}
@media (min-width: 44em) and (max-width: 69.99em) {
.region {
/* ...CSS B2)... */
}
}
@media (min-width: 70em),(min-width: 210em) {
nav {
/* ...CSS C)... */
}
}@highdensity: ~"only screen and (-webkit-min-device-pixel-ratio: 1.5)",
~"only screen and (min--moz-device-pixel-ratio: 1.5)",
~"only screen and (-o-min-device-pixel-ratio: 3/2)",
~"only screen and (min-device-pixel-ratio: 1.5)";
@mobile: ~"only screen and (max-width: 320px)";
.logo {
background: url(/static/images/logo.png) no-repeat 0 0;
@media @highdensity, @mobile {
background-image: url(/static/images/logo@2x.png);
background-size: contain;
}
}