Att konstruera och underhålla CSS-strukturer och instruktioner för större sajter kan vara nog så tidskrävande. CSS-dokumentationen i sig själv ger inget eget stöd för variabler. Detta leder ofta till att man måste ange samma CSS-värden upprepade gånger i ett CSS-dokument.

Men det finns hjälp att tillgå, låt oss ta en titt på det dynamiska CSS-språket {less} som genom förkompilering ger oss möjlighet att använda variables, mixins, operations och functions.

Ange variabler som du kan återanvända

// instruktion i less
@color: #4D926F;
#header {color: @color;}
h2 {color: @color;}
/* kompilerat CSS-resultat */
#header {color: #4D926F;}
h2 {color: #4D926F;}

Mixins, inbäddning av css värden:

// instruktion i less
.rounded-corners (@radius: 5px) {
    border-radius:@radius;
    -webkit-border-radius: @radius;
    -moz-border-radius: @radius;
}
 
#header {.rounded-corners}
#footer {.rounded-corners(10px)}
/* kompilerat CSS-resultat */
#header {
    border-radius: 5px;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
}
 
#footer {
     border-radius: 10px;
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
}

Nästlade regler

// instruktion i less
#header {
    h1 {
        font-size: 26px;
        font-weight: bold;
    }
    p {
        font-size: 12px;
        a {
            text-decoration: none;
            &:hover {
                border-width: 1px
            }
        }
    }
}
/*kompilerat CSS Resultat*/
#header h1 {
    font-size: 26px;
    font-weight: bold;
}
#header p {font-size: 12px;}
#header p a {text-decoration: none;}
#header p a:hover {border-width: 1px;}

Operations and functions

Att hantera relativa fontstorlekar i procent beräknat utifrån pixlar är ett vanligt case. Vi utgår från en basstorlek på 13px och skapar en funktion som returnerar ett procenttal utifrån önskad pixel- och basstorlek:

// instruktion i less
@basefontsize: 13;
 
.fontresizer(@fontsize: 13px)  {
    font-size: percentage(@fontsize/@basefontsize);
}
.classx { .fontresizer(); }
/*kompilerat CSS-resultat*/
.classx{ font-size: 100%;}

Låt oss nu använda funktionen:

// instruktion i less
.classx{ .fontresizer(20px);}
/* kompilerat CSS-resultat */
.classx{font-size: 153.846%;}

Ett annat vanligt förekommande behov är att reducera instruktioner för så kallade imagesprite-bakgrunder

// instruktion i less
.sprite(@offset-x: 0, @offset-y: 0) {
    background: url("../sprites/icons.png") scroll no-repeat @offset-x @offset-y;
}
.classx {.sprite(100%, -100px);
}
/*kompilerat CSS-resultat*/
.classx{ background: url("../sprites/icons.png") scroll no-repeat 100% -100px;}

Installera och använd {less}

{less} kan användas såväl från klienten (Chrome, Safari och Firefox för lokal utveckling) som från servern med Node.js och Rhino. Använder du Maven rekommenderar jag denna plugin för kompilering av {less}-resurser till CSS-filer.

Som Mac-användare kan du även använda {less}-appen från CodeKit i din lokala utvecklingsmiljö.