Proč CSS preprocesory
Při použití klasického CSS, na vetších webových projektech, je budování funkcí opětovného použití nebo dědictví elementů velmi těžce dosažitelné, nastává pak problém s jejich údržbou a spravovatelností. HTML a CSS jde stále dopředu a neustále jsou zaváděny nové a nové specifikace a vylepšení funkcí, výrobci prohlížečů se tyto nové funkce, které ještě nejsou oficiálně podporované zavádí do svých prohlížečů a mnohdy musí přidat vlastní předpony (prefixy) před nové vlastnosti CSS (například v pozadí gradientu). Kódování těchto tzv. prefixových vlastností se pomalu stáva velkou příteží. (Aktuálně by mělo být CSS 3 plně podporováno dnes běžně používanými prohlížeči).
Aby bylo možné psát lepší CSS, existují různé přístupy a různé pracovní postupy, jako je oddělování definic do menších, parciálních, souborů a jejich import do jednoho, hlavního souboru. Tento přístup pomohl vypořádat se s komponenty, ale nebylo vyřešeno opakování stejných elementů resp. vlastností a problémy s udržitelností. Jiný přístup bylo možnost implementovat objektově orientované CSS. V tomto případě, použití jedné nastylované třídy pro více různých prvků, kód se ale stává méně udržovatelný.
CSS preprocesory, s jejich pokročilými funkcemi, přispělo k dosažení snadného psaní opakovatelného kódu, udržovatelnosti a rozšířeních v CSS. Pomocí těchto nástrojů můžete snadno zvýšit produktivitu a snížit množství kódu, který obsahuje Váš webový projekt.
Ukázka kódu v CSS:
.container { background: green; } .container .button { color: black; } .container .button span { text-align: center; }
Ten stejný zápis, ale pomocí preprocesoru:
.container { background: green; .button { color: black; span { text-align: center; } } }
Okamžitě zápis vypadá lépe a více čitelně, protože .container nemusíme třikrát kopírovat. Naopak musíme přemýšlet dopředu, pokud bychom chtěli použít .button mimo třídu .container, nebude nám tento styl fungovat. I na tuto otázku mají preprocesory odpověď.
.container2 { .btn { .container.button; // všechny styly se přesunou z .container.button } }
Podívejte se na další pratické příklady zde.
Provedl jsem srovnání co nejvíce preprocesorů, které jsem nalezl a dosadil je do tabulky, tu můžete najít v sekci výběr preprocesoru.