Introduction to Less CSS: What It Is and How It Works

Fanny NyayicFanny Nyayic
6 min read

Are you tired of writing repetitive CSS code? Do you find yourself constantly scrolling through long stylesheets, searching for specific properties? Look no further than a CSS preprocessor called LESS.

This dynamic stylesheet language extends the capabilities of CSS, making writing stylesheets more efficient and maintainable.

In this article, I'll introduce you to Less CSS and show you how it can simplify your styling process with features like variables, mixins, functions, and nesting. Say goodbye to tedious CSS code and hello to Less CSS – your new favorite development tool.

What is Less CSS?

Less CSS is a dynamic stylesheet language that is designed to make writing CSS more efficient and maintainable. It is a preprocessor that extends the capabilities of CSS, providing developers with additional features that can help simplify the styling process.

Less CSS was created by Alexis Sellier, also known as "cloudhead," in 2009. It is an open-source project that has gained a lot of popularity over the years, and many front-end developers use it in their workflow.

How does it work?

Less CSS uses a syntax that is very similar to CSS, but it includes some additional features that make it more powerful. These features include variables, mixins, functions, and nesting.

Variables

Variables allow you to store and reuse values throughout your stylesheet. This can be useful for things like colors, font sizes, and spacing.

In Less, you define a variable using the "@" symbol followed by the variable name and the value you want to assign to it. For example, you might define a variable for a primary color like this:

@primary-color: #007bff;

Once you've defined a variable, you can use it throughout your code by referencing its name with the "@" symbol. For example, you might use the primary color variable to set the background color of a button:

@primary-color: #007bff; // VARIABLE ASSIGNED @primary-color
.button {
  background-color: @primary-color; // VARIABLE BEING USED HERE
  color: white;
  padding: 10px 20px;
}

Mixins

Mixins allow you to define a set of styles that can be reused throughout your stylesheet. This can be useful for things like vendor prefixes and complex animations.

To define a mixin in Less, you use the .mixin-name syntax, followed by a set of curly braces that contain the styles you want to include in the mixin. Here's an example of a mixin that sets a border radius for an element:

.border-radius {
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  border-radius: 5px;
}

Once you've defined a mixin, you can include it in any CSS selector by using the . syntax followed by the name of the mixin. Here's an example of how you might use the border-radius mixin:

.button {
  .border-radius;
  background-color: #007bff;
  color: white;
  padding: 10px 20px;
}

When this code is compiled, the border-radius styles will be included in the .button selector, resulting in a button with rounded corners.

Mixins can also take arguments, which allow you to customize the styles that are included in the mixin. To define arguments, you include them in the parentheses after the mixin name. Here's an example of a mixin that sets a border-radius with a variable size:

.border-radius(@radius) {
  -webkit-border-radius: @radius;
  -moz-border-radius: @radius;
  border-radius: @radius;
}

In this example, the @radius variable is the argument for the mixin. You can then include this mixin in a selector and pass in a value for the @radius argument:

.button { 
    .border-radius(10px); 
        background-color: #007bff; 
        color: white; 
        padding: 10px 20px; 
}

When this code is compiled, the border-radius styles will be included in the .button selector with a radius of 10 pixels.

Mixins are a powerful tool in Less CSS that can help you write cleaner, more modular code. By defining styles once and reusing them throughout your stylesheet, you can save time and make your code more efficient to write and maintain.

Functions

Functions in Less CSS are similar to mixins, but they allow you to define a set of styles that can be dynamically generated based on input values. Functions take arguments, perform calculations or manipulations on those arguments, and then return a value that can be used in your stylesheet.

To define a function in Less, you use the name of the function and the arguments it takes.

Here's an example of a function that generates a lighter or darker version of a color based on a percentage:

lighten-darken(@color, @percentage) {
  @lighter: lighten(@color, @percentage);
  @darker: darken(@color, @percentage);
  @result: mix(@lighter, @darker, 50%);
  @return @result;
}

In this example, the @color and @percentage arguments are used to generate a lighter or darker version of the input color. The lighten() and darken() functions are built-in Less functions that adjust the lightness of a color based on the percentage input.

Once you've defined a function, you can use it like any other value in your stylesheet. Here's an example of how you might use the lighten-darken() function:

.button {
  background-color: lighten-darken(#007bff, 10%);
  color: white;
  padding: 10px 20px;
}

In this example, the background-color property is set to the result of the lighten-darken() function, which takes the #007bff color and lightens it by 10%.

Functions are a powerful tool in Less that allow you to generate styles based on input values.

By defining functions, you can avoid repetitive code and make your stylesheet more modular and maintainable.

Nesting

Nesting in Less CSS is a feature that allows you to write cleaner and more concise stylesheets by nesting selectors and their properties inside the parent selector.

This makes it easier to read and maintain your code by visually grouping related styles together.

To nest a selector in Less, you simply include the child selector inside the parent selector, indented by one level. Here's an example:

.nav {
      ul {
            margin: 0;
            padding: 0;
            list-style: none;
          } 
      li {
            display: inline-block;
           a{
              color: #333;
              text-decoration: none;
              &:hover {
                text-decoration: underline;
               }
            }
          }
        }

In this example, the .nav selector contains nested selectors for ul and li, with further nesting for the a element. By using nesting, you can see at a glance that these styles are related to the navigation menu, and you can make changes to the menu styles easily by modifying the .nav selector.

Nesting in Less also allows you to inherit styles from a parent selector. You can use the & character to refer to the parent selector in a nested selector, allowing you to target specific elements within the parent selector.

Here's an example:

.button {
  display: inline-block;
  padding: 10px 20px;
  background-color: #007bff;
  color: white;
  &:hover {
    background-color: #0069d9;
  } 
  &.active {
    background-color: #0062cc;
  }
}

In this example, the &:hover selector inherits the styles from the .button selector and adds a hover effect. Similarly, the &.active selector adds a different background color to the .button selector when it has the active class.

Nesting in Less is a powerful feature that allows you to write more efficient and maintainable code. By grouping related styles and using inheritance to target specific elements, you can make your stylesheets more readable and easier to update.

Conclusion

Less CSS is a powerful tool for creating more efficient, modular, and maintainable stylesheets. Its features, such as variables, mixins, functions, and nesting, allow you to write cleaner and more concise code that is easier to read and update.

By using variables, you can define values that can be reused throughout your stylesheet, making it easier to change the values in one place.

Mixins allow you to group styles together and reuse them across your stylesheet, while functions let you generate dynamic styles based on input values.

Nesting helps you group related styles together and target specific elements within a parent selector.

By mastering these features of Less CSS, you can create more efficient and effective stylesheets that are easier to manage and maintain.

Whether you're a beginner or an experienced developer, Less CSS is a valuable tool to add to your toolkit for creating dynamic, responsive, and visually appealing web designs.

9
Subscribe to my newsletter

Read articles from Fanny Nyayic directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Fanny Nyayic
Fanny Nyayic

a passionate web developer, tech writer, open-source contributor & a life long learner.