Generated by GPT-5-mini| LESS (stylesheet language) | |
|---|---|
![]() Unknown authorUnknown author · Public domain · source | |
| Name | LESS |
| Paradigm | Declarative stylesheet language, dynamic stylesheet authoring |
| Designer | Alexis Sellier |
| First appeared | 2009 |
| Influenced by | Sass, CSS, JavaScript |
| Influenced | Bootstrap, Foundation |
LESS (stylesheet language) is a dynamic stylesheet language designed to extend Cascading Style Sheets by introducing variables, mixins, operations, and functions to streamline web development workflows. Created to interoperate with JavaScript runtimes and Node.js toolchains, it has been adopted by projects such as Bootstrap and integrated into build systems like Grunt and Gulp. Its design reflects influences from Sass (stylesheet language), CSS, and ECMAScript tooling while targeting browser compatibility and developer productivity.
LESS was originally authored by Alexis Sellier in 2009 and evolved in parallel with other preprocessor efforts such as Sass (stylesheet language) and Stylus (stylesheet language). Early adoption grew through integrations with frameworks like Twitter Bootstrap (version 3 used LESS), and community contributions via repositories on GitHub. The project migrated implementation strategies from client-side JavaScript compilation to server-side and build-time compilation using Node.js, Ruby (programming language), and task runners such as Grunt and Gulp. Over time maintenance and ecosystem shifts saw influence from projects like PostCSS and Webpack that affected tooling choices.
LESS provides a set of abstractions intended to extend Cascading Style Sheets without breaking compatibility. Core features include: - Variables for color, dimension, and other constants, inspired by Sass (stylesheet language) and CSS Custom Properties. - Mixins for reusable rule sets, comparable to features in Sass (stylesheet language) and influenced by patterns from DRY (programming), with support for parametric mixins. - Nested rules enabling hierarchical selectors, a concept utilized by Sass (stylesheet language) and seen stylistically in LESS (stylesheet language) implementations. - Operations and functions (arithmetic, color manipulation) with semantics informed by JavaScript numeric operations and color models used in CSS Color Module specifications. - Guards and conditionals to apply mixins selectively, paralleling control structures found in ECMAScript and templating engines used in Ruby on Rails assets.
LESS syntax extends Cascading Style Sheets by introducing identifiers for variables (prefixed by @), mixin invocation syntax resembling CSS rules, and nested selectors that map to descendant and combinator expansions. Semantics preserve CSS cascade and specificity rules while adding compile-time resolution for variables and mixins, similar to macro systems used in Make (software). Scoping rules for variables and mixins follow lexical nesting comparable to scope chains in JavaScript functions. LESS supports interpolation and string operations reflective of techniques in ECMAScript string templates, and the output is standard CSS that conforms to Cascading Style Sheets parsing rules.
The LESS ecosystem includes implementations and integrations across runtime and build tooling: reference implementations in JavaScript running on Node.js, ports for .NET Framework and Java (programming language), and plugins for Webpack, Grunt, Gulp, and Parcel (software). Editors and IDEs such as Visual Studio Code, Sublime Text, Atom (text editor), and IntelliJ IDEA provide syntax highlighting and linting for LESS. Popular UI frameworks like Bootstrap historically provided source files in LESS, and package managers such as npm and Bower (software) distributed libraries and mixin sets. Continuous integration platforms like Travis CI and Jenkins commonly run LESS compilation steps in asset pipelines.
LESS saw widespread use in the early 2010s through adoption by projects like Bootstrap and integration into WordPress themes and Drupal distributions. Browser compatibility is achieved by compiling LESS to standard Cascading Style Sheets; therefore support depends on the generated CSS targeting specifications such as CSS2 and CSS3. Over time, alternatives and shifts toward native browser features like CSS Custom Properties and tooling like PostCSS and Autoprefixer influenced adoption. Large organizations using LESS typically integrate it into asset pipelines using Webpack or legacy Grunt setups to ensure cross-browser interoperability and minification with tools like UglifyJS for associated scripts.
Common patterns include: - Variable-driven theming: defining color palettes and spacing tokens with @variables for use across component rules, a technique also popularized by Bootstrap and Foundation. - Parametric mixins: creating button styles with arguments for variant, size, and state, paralleling approaches in Sass (stylesheet language) component libraries. - Nested rules: structuring component styles hierarchically similar to patterns used in BEM (methodology) and component-based frameworks like React (JavaScript library) when extracting class names. - Compile-time functions: performing color manipulation and arithmetic at build time to produce consistent gradients and responsive breakpoints used by design systems such as Material Design.
Criticisms of LESS include arguments about added build complexity versus native CSS Custom Properties, limits in modularization compared with PostCSS plugins, and differences in feature sets compared with Sass (stylesheet language). Alternatives and successors include Sass (stylesheet language), PostCSS, Stylus (stylesheet language), and native browser features promoted by standards bodies like W3C. The ecosystem trend toward JavaScript-driven bundlers such as Webpack and specification-driven features like CSS Variables reduced the uniqueness of LESS in modern stacks, though legacy codebases and certain frameworks continue to depend on it.
Category:Stylesheet languages