Web design and development has seen some massive changes in the past half-decade – if 2005-2010 was the era of Web 2.0, I think it would not be an overstatement to say that 2015 marked the end of it. It’s pretty safe to say we are indeed entering Web 3.0, and the timeline is just about right according to John Markoff, who originally coined the term back in 2006.
An interesting side effect of this shift is that while new technologies are emerging all around (often from the ashes of old ones), we still have to keep the Web running, which means using old technologies and keeping them as up-to-date as possible until they’re replaced.
CSS is one of those technologies. Just like HTML, it’s a very simple language that was designed at the dawn of Web 2.0 to solve the problem of website design – it made things much easier by providing a clear usage and syntax that perfectly complemented HTML in displaying the pages just as we wanted them. [HTML5 Cheat Sheets]
But CSS was not built with the future in mind – the limitations became apparent quite a while ago, and they’ve been getting worse every year. “Why not just make an updated version or a whole new language?”, you might ask. Actually, people are working on it, but just like HTML5 right now, adoption will be very slow, and keeping backwards compatibility with hundreds of millions of devices is no easy feat. [Free HTML5 CSS3 UI Kits]
As users want to get everything new and shiny right now and developers want more features and an easier way to program things, a middle-ground solution has been born to alleviate the problem – CSS preprocessors.
CSS preprocessors, to put it simply, are an extension of CSS. Getting into details, a CSS preprocessor is a separate stylesheet language with advanced features that developers can leverage to create leaner, faster products with more features while spending less time on the whole process than they would with plain CSS.
CSS preprocessors are fully compatible with CSS – in fact, they are normal CSS to the end user! As the name implies, these stylesheet languages are turned into normal CSS files, which are then displayed on the user’s computer. This solves both the development and the compatibility problems in one fell swoop – quite ingenious, isn’t it?
There is a surprising number of CSS preprocessing languages available out there. A short list would include LESS, SASS, Turbine, Switch CSS, Stylus, CSS Cacheer, CSS Preprocessor, DtCSS, CSS-Crush, Myth, Rework, and that’s only if you count the fully functional ones that are ready to be used in production – there’s plenty of other preprocessors in varying states of alpha and beta being made by developers around the world.
The two most popular CSS preprocessors are LESS and SASS, though – they’re mature, well supported, have a clearly defined syntax that works well and they’re already used by millions of websites. If you’re looking for something to start with, these two should be at the top of your list.
CSS preprocessors benefit developers the most, but that definitely trickles down to the end users, as they get more functionality, better design and fewer bugs faster and with fewer expenses (since developers have to work less).
There are several advantages when using CSS preprocessors, and they’re most noticeable on large websites and web apps that require lots of stylesheets, as well as smaller sites that need a lot of custom stylesheets for their pages.
Preprocessors provide several major advantages – nested syntax, variables, mixins, extends, a host of operational and mathematical functions, as well as file concatenation, all of which add to a better development process, which results in better CSS (at least in theory – if you’re not careful or experienced, you might actually make things worse).
Nesting, for example, is something that any sane language should use, yet CSS does not. It allows the developer to target DOM elements in a cleaner way, reducing the need for multiple selector rewrites, which can decrease the development time (sometimes dramatically).
Variables are another huge benefit – store a value once and use it as many times as you like from one location, and if you want to modify it, you only need to do it once. It’s a mainstay for every single programming language out there, but for some reason, CSS still does not support it.
Mixins and extends also reduce the number of lines you need to write as a developer by providing reusable pieces of code and class inheritance – no more typing the same parameters for every object on your site/app.
While the advantages are huge, CSS preprocessors do have their disadvantages. First of all, you’ll need to learn and get used to a new language, which can take some time – not a big deal, but if you decide to switch to a CSS preprocessor in the middle of a project, that can mean a few hours or even days to adjust, during which you won’t be moving closer to the finish.
If you’re not experienced with any programming language besides HTML and CSS, you may find yourself creating CSS files that are way larger than they should be – it’s a downside of using mixins and extends – if used improperly, they can result in lots of duplicate code in the end stylesheets, which directly affect load speed. Fortunately, this is easily rectified by compressing CSS files (along with JS), which any modern website should do anyway.
Setting up the CSS preprocessor requires some command line knowledge, and naturally it uses CPU time to run – not a big issue with today’s powerful processors, but still something to consider.
And finally, code maintenance can be complicated when using a CSS preprocessor, even though one of their claimed advantages is making code maintenance easier. It’s easy to use non-standard code with a preprocessor, and one property (in a separate location) can affect multiple end files, so if there’s ever a problem, searching for the culprit can be a lot harder. [Top 5 Bootstrap Alternative CSS Frameworks]
Overall, CSS preprocessors provide way more advantages than disadvantages and are a great way to extend CSS, as well as make the life of a developer easier. End users also benefit from more features that they can get and use right now, instead of waiting for something new to come out.
It’s really no wonder that most new apps/themes/plugins use CSS preprocessors – developers were quick to notice the benefits and start using them. If you’re pondering whether or not you should use a CSS preprocessor, I can only say that you should try it first hand – you don’t even have to install any tools on your computer, it can be easily done online on JSFiddle, Codepen and other similar services.
Using a preprocessor can be an eye-opening experience – you may start wondering how you lived without it all this time, so definitely give it a go.
Image Source: Freepik.com