Ostatnia aktualizacja:

3 września 2025

Opublikowano:

23 marca 2017

LESS vs Sass

LESS vs Sass

„Który preprocesor CSS użyć?” to pytanie, które zadaje sobie każdy początkujący front-end developer. Nawet w X-Coding zdarzały się dyskusje o przewagach jednego nad drugim. To, co mnie cieszy, to fakt, że nikt już specjalnie nie kwestionuje, czy w ogóle używać preprocesora, a dyskusja zeszła na porównanie, którego użyć.

W tym artykule dowiesz się:
  1. Trochę (ale tylko trochę) historii
  2. Preprocesory CSS
  3. To Sass czy Less?

Dzisiaj spróbujemy zmierzyć się z różnicami pomiędzy Sass i LESS, żebyś sam mógł zdecydować, co jest ciekawsze dla Ciebie. Poznasz też moją opinię, ale dopiero na sam koniec 🙂

Trochę (ale tylko trochę) historii

Arkusze styli CSS zostały opracowane przez organizację W3C w 1996r. Dzisiaj nie ma frontend developera, który by nie był biegły w CSS3, bo to dzięki niemu tworzy się styl prezentacji danej strony WWW.

CSS decyduje o tym, jak elementy mają zostać wyświetlone w przeglądarce, jakie kolory będzie widział użytkownik czy ustala rozmiar odstępów pomiędzy poszczególnymi fragmentami strony.

Przed pojawieniem się CSS wszystkie informacje dotyczące wyglądu były zawarte w znacznikach HTML. Wraz z pojawieniem się języka CSS te informacje zostały przeniesione do osobnego pliku (chociaż deklaracje stylu mogą nadal być osadzane inline). Zamiast definiowania stylu np. dla nagłówka w każdym miejscu gdzie został użyty w kodzie, w pliku CSS jedna reguła jest odpowiedzialna za wygląd wszystkich nagłówków, np.: dla h1. W ten sposób kod HTML stał się bardziej czytelny i łatwiejszy w utrzymaniu.

Preprocesory CSS

To, czego od zawsze brakowało CSS-om, to podstawowe elementy programowania. Czasami aż prosiło się, żeby wyciągnąć jakiś kolor do zmiennej i łatwiej w ten sposób panować nad użyciem. Takich przykładów można mnożyć bardzo długo.

Po to powstały dynamiczne języki arkuszy stylów. Dzięki nim praca wemasterów jest szybsza i bardziej wydajna. Pomagają także zapanować nad długiem technologicznym. Oczywiście nadal musisz znać podstawy CSS, żeby pracować z preprocesorami, ale to chyba nie powinno nikogo dziwić. Inwestycja zwraca się w postaci łatwiejszego stylowania strony.

Dwa najbardziej popularne dziś to Sass i LESS. Obydwa udostępniają nam podstawowe konstrukcje, takie jak zmienne, funkcje czy instrukcje warunkowe. Możemy też zagnieżdżać reguły, co pozytywnie wpływa na uporządkowanie samego arkusza. Który zatem wybrać? Wymienimy sobie różnice pomiędzy tymi dwoma preprocesorami.

Zmienne

/ Sass
$background: #000000; 
body {
    background-color: $background;
}

// LESS
@background: #00000; 
body {
    background-color: @background;
}

Nie ma większej różnicy pomiędzy zmiennymi. Sass używa dolara, LESS małpy. W użyciu bardziej zaawansowanym warto pamiętać, że redeklaracja zmiennej w zagnieżdżeniu w Sass działa globalnie a w LESS tylko lokalnie.

Zagnieżdżanie

Zagnieżdżanie kodu to jedna z bardziej przydatnych rzeczy w preprocesorach. Przyspiesza pracę i sprawia, że kod jest bardziej czytelny. Tu nie ma różnic pomiędzy preprocesorami:

nav { 
    ul { ... } 
    li { ... } 
}

Mixiny

Mixiny, czyli reużywalne style, przyspieszają stylowanie HTML. Główna róznica, to fakt, że w LESS wszystko jest jednocześnie definicją mixin, a w Sass definicji służy selektor @mixin. Inaczej wygląda też renderowanie do CSS:

// Sass
 @mixin border-radius($radius) { 
    -webkit-border-radius: $radius; 
    -moz-border-radius: $radius; 
    -ms-border-radius: $radius; 
    border-radius: $radius; } 

.box1 { 
    @include border-radius(10px); 
}

// wynik CSS
.box1 { 
    -webkit-border-radius: 10px; 
    -moz-border-radius: 10px; 
    -ms-border-radius: 10px; 
    border-radius: 10px; 
}

i dla porównania LESS:

// LESS
.box1 { 
    color:red; 
} 

.boxClass { 
    .box1; 
}

// wynik CSS
.box1 { 
    color: red; 
} 

.boxClass { 
    color: red; 
}

W LESS również do konstrukcji możemy przekazać argumenty (w szczególności pusty, jeśli nie chcemy, żeby jakaś klasa była renderowana):

// LESS
.class1() { 
    color:red; 
} 

.boxClass { 
    .class1(); 
}

// wynik CSS
.boxClass { 
    color: red; 
}


// LESS
.class2(@color) { 
    color:@color; 
} 

.boxClass { 
    .class2(blue); 
}

// wynik CSS
.boxClass { 
    color: blue;
}

Funkcje + , – , * , /

// Sass
$base-line-height: 16px * 1.5; 

@function emCalc($size-in-pixels, $base : $base-font-size) { 
    @return $size-in-pixels / $base * 1em; 
} 

h1 { 
    font-size: emCalc(72px); 
    margin-bottom: emCalc($base-line-height, 72px); 
}

// LESS
@color: #888; 
@width: 10px; 

div { 
    border-top-color: 
    @color + #111; 
    border-right-color: @color - 100; 
    border-bottom-color: @color * 2; 
    border-left-color: @color / 2.5; 
    border-width: @width / 5; 
}

Dziedziczenie

// Sass
.box2 { 
    color: red; 
}

.box1 { 
    @extend .box2; 
    background: blue; 
} 

// LESS
.box2 { 
    color: red; 
}

.box1 { 
    &:extend(.box2); 
    background: blue; 
} 

Pętle

Ostatnia kwestia to pętle, które też mają nieco inną składnię. Najpierw kilka przykładów Sass:

// Sass
@for $i from 0 through 2 { 
    .mb-#{$i*10} { 
        margin-bottom: 10px * $i; 
    } 
} 

@for $i from 0 to 2 { 
    .mt-#{$i*10} { 
        margin-top: 10px * $i; 
    } 
}


// wynik CSS
.mb-0 { 
    margin-bottom: 0px; 
} 

.mb-10 { 
    margin-bottom: 10px; 
} 

.mt-0 { 
    margin-top: 0px; 
} 

.mt-10 { 
    margin-top: 10px; 
}
// Sass
@each $icon in facebook, gplus, twitter { 
    .icon-#{$icon} { 
        background-image: url('/img/icon/#{$icon}.png'); 
    } 
} 

$vehicles: (car, plane, bike); 
@each $icon in $vehicles { 
    .icon-#{$icon} { 
        background-image: url('/img/icon/#{$icon}.png'); 
    } 
}

// wynik CSS
.icon-facebook { 
    background-image: url("/img/icon/facebook.png"); 
} 
.icon-gplus { 
    background-image: url("/img/icon/gplus.png"); 
} 
.icon-twitter { 
    background-image: url("/img/icon/twitter.png"); 
}
.icon-car { 
    background-image: url("/img/icon/car.png"); 
}
.icon-plane { 
    background-image: url("/img/icon/plane.png"); 
}
.icon-bike { 
    background-image: url("/img/icon/bike.png"); 
}
// Sass
$i: 10; 
@while $i >= 0 { 
    .p-#{$i*10} { 
        padding: 10px * $i; 
    } 
    $i: $i - 2; 
}

// wynik CSS
.p-100 { 
    padding: 100px; 
} 
.p-80 { 
    padding: 80px; 
} 
.p-60 {
    padding: 60px; 
} 
.p-40 { 
    padding: 40px; 
} 
.p-20 { 
    padding: 20px; 
} 
.p-0 { 
    padding: 0px; 
}

i dla porównania konstrukcja pętli w LESS:

// LESS
.loop(@counter) when (@counter > 0) { 
    .loop((@counter - 1)); 
    width: (10px * @counter); 
} 

div { 
    .loop(5); 
}

// wynik CSS
div { 
    width: 10px; 
    width: 20px; 
    width: 30px; 
    width: 40px; 
    width: 50px;
}
// LESS
.generate-columns(@n, @i: 1) when (@i =< @n) { 
    .column-@{i} { 
        width: (@i * 100% / @n); 
    } 
    .generate-columns(@n, (@i + 1)); 
}

.generate-columns(4);

// wynik CSS
.column-1 {
    width: 25%; 
} 
.column-2 { 
    width: 50%; 
} 
.column-3 { 
    width: 75%; 
} 
.column-4 { 
    width: 100%; 
}

To Sass czy Less?

Jeśli miałbyś zaufać mojej opinii, powiem: Sass. Jest bardziej rozwinięty, bardziej rozwijany i staje się powoli standardem, który wypiera LESS. Dlatego inwestycja w Sass wydaje się bardziej przyszłościowa. LESS jest z drugiej strony trochę łatwiejszy dla początkujących, więc może warto spróbować zacząć właśnie od niego z myślą o przeniesieniu się na „wyższy poziom” nieco później.

Pamiętaj jednak początek artykułu: po pierwsze, dobrze że używasz czegokolwiek. Po drugie, preprocesor ma Ci przyspieszyć pracę, więc jeśli już używasz LESS na co dzień i nie czujesz jakichś wielkich braków, chyba nie ma sensu się „przebranżawiać”. Ostatecznie to technologia jest dla nas, a nie odwrotnie, nieprawdaż?

Ostatnia aktualizacja:

3 września 2025

Opublikowano:

23 marca 2017

W tym artykule dowiesz się:
  1. Trochę (ale tylko trochę) historii
  2. Preprocesory CSS
  3. To Sass czy Less?

Polecane artykuły

Koszt Prestashop - Ile zapłacisz za profesjonalny e-sklep? - wideo

Koszt Prestashop – Ile zapłacisz za profesjonalny e-sklep?

Ile kosztuje sklep na Prestashop? Jaka jest realna cena stworzenia i prowadzenia sklepu internetowego na tej platformie? Czy Prestashop jest opłacalnym rozwiązaniem dla Twojego biznesu? Wielu przedsiębiorców, planujących rozpoczęcie sprzedaży online, zastanawia się nad tym, za ile wdrożą sklep na Preście. W tym materiale szczegółowo omawiam ten temat, analizując wydatki związane z kodowaniem, designem, customizacjami i niezbędnymi integracjami. Dzięki temu dowiesz się, jaki sklep wdrożysz na Prestashop za 50.000, jaki za 100.000, a jaki za 200.000 złotych. Jeśli chcesz świadomie zaplanować budżet i uniknąć ukrytych wydatków, koniecznie obejrzyj ten film!

Czytaj więcej
Monitorowanie stron internetowych

Monitorowanie stron internetowych – przegląd narzędzi

Każdy właściciel lub opiekun systemu informatycznego powinien dbać o jego niezawodność za pomocą szeregu procesów i podejść gwarantujących wysoką jakość rozwiązań. Żaden system nie jest w 100% odporny na upływ czasu i całkowicie bezobsługowy. Stosując opisane przeze mnie narzędzia, będziemy ostrzegani przed anomaliami w naszym systemie, co pozwoli nam zareagować jeszcze zanim dojdzie do awarii. […]

Czytaj więcej
Samodzielna instalacja Magento

Samodzielna instalacja sklepu opartego na Magento

Każdy kto chce otworzyć sklep internetowy musi podjąć decyzję na jakim hostingu chce utrzymywać swoją platformę sprzedażową. Decydując się na sklep Magento 2 musimy mieć świadomość, że najsłabsze (często też najtańsze) oferty na rynku będziemy musieli pominąć w rozważaniach. Oczywiście wymagania jakie stawiamy naszemu sprzętowi muszą zależeć od ruchu jaki pojawi się na naszej stronie. […]

Czytaj więcej
shopware vs magento

Shopware vs Magento – porównanie platform

Co wybrać – Shopware czy Magento? Która platforma jest lepsza? Która tańsza? Która jest królem dużych e-Commerce’ów, a która pretendentem do tronu? Takich rozmów w branży jest coraz więcej, czas więc rozwinąć temat. Dlaczego porównujemy Shopware vs Magento? W Satisfly pracujemy przede wszystkim ze średnimi i dużymi klientami, dla których rozwiązania abonamentowe już nie wystarczają […]

Czytaj więcej

Skontaktuj się z nami

Opowiedz nam o swoich ambicjach związanych z e-commerce i pozwól nam wspólnie je zrealizować.

Skontaktuj się z nami