Table of contents
¿Qué es Less.js?
Less es un preprocesador para CSS.
- Nos permite trabajar con hojas de estilo con funcionalidades de un lenguaje de programación.
- Existen otros preprocesadores como SASS o Stylus, aunque sólo LESS.js se puede integrar desde el front.
Sus principales ventajas son:
- Nos permite ser más productivos
- Ayuda a organizar mejor nuestras hojas de estilo y a la compatibilidad entre navegadores.
- El código que generamos es reutilizable
Instalación y uso
- Descargar el archivo de http://lesscss.org/
- Cargar dentro del head de la página el archivo .css o .less. No importa la extensión pero hay que indicar el atributo ‘rel’ como stylesheet/less
Después hay que llamar al script:
Less.js funciona en servidor, ya sea remoto o local
Los principales aspectos de Less
- Variables
- Operaciones
- Anidamiento
- Mixins
- Funciones
Variables
En realidad se trata de constantes. Las variables se definen de la siguiente forma:
@size: 100px;
@color: #ff3;
@ruta: ‘images/background.gif’;
Las variables en Less pueden tener ámbito global o local:
@colorbase: red; body{ @colorbase: blue; color: @colorbase; } //Salida: body{ color: blue; }
Las variables del tipo string se pueden embeber dentro de otra cadena de manera similar a como se hace en PHP, es decir, mediante llaves:
@rutabase: "https://gamedevacademy.org/"; background-image: url("@{rutabase}/images/fondo.png");
En ocasiones encontraremos expresiones no reconocidas por CSS (por ejemplo los filtros de IE). En este caso y para evitar errores usaremos el carácter de escape ‘~’ para evitar que esa sentencia se trate:
filter: ~”ms:alwaysHasItsOwnSyntax.For.Stuff()”;
//Salida
filter: ms:alwaysHasItsOwnSyntax.For.Stuff();
Operaciones
Las variables son susceptibles de operaciones:
@ancho: 100px; div{ width: @ancho * 2; } //Salida div{ width: 200px; }
Less diferencia las unidades usadas en cada operación:
@colorbase: #eee + #111; //Valor de salida de @colorbase: color: #fff;
La jerarquía de las operaciones es la común en cualquier lenguaje de programación:
*, /, +, –
Podemos alterar esta jerarquía mediante el uso de paréntesis:
@distancia: 10px; @size: @distancia / (8 - 3); //Salida @size: 2px;
Podemos usar operaciones dentro de una sentencia shorthand siempre que separemos por espacios:
@distancia: 10px; margin: @distancia @distancia / 2; //Salida margin: 10px 5px;
Anidamiento
LESS permite anidar clases
body{ width: 100px; article{ width: 200px; } } //salida body{ width: 100px; } body article{width: 100px; }
Para indicar que concatenamos en lugar de anidar usamos el operador &:
div{ width: 100px; &.clase{ width: 50px; } } //salida div{width: 100px;} div.clase{width: 50px;}
Esto también se aplica para propiedades como :hover, :active, :visited…
a{ color: blue; &:hover{ color: red; } } //salida a{color:blue;} a:hover{color: red;}
Mixins
Tal vez el aspecto más interesante de Less son los Mixins, es decir, conjuntos de reglas que se pueden anidar dentro de otras reglas. Su funcionalidad es similar a la de una función.
.derecha{ float: right; text-align: right; } div{ width: 100px; height: auto; .derecha; } //Salida div{ width: 100px; height: auto; float: right; text-align: right; }
Similar a las funciones, los mixins pueden recibir parámetros:
.contenido(@var: ''){ content: @var; } div{ display: inline-block; .contenido('Pandereta'); }
Se pueden enviar y recibir varios parámetros siempre que en la definición del mixin se separen por comas:
.borderradius(@a:0px, @b:0px, @c:0px, @d:0px){ border-radius: @a @b @c @d; }
Los operadores usables para las condiciones when son ‘<‘, ‘>’, ‘<=’, ‘>=’ e ‘=’.
En algunos casos queremos evaluar que se cumplan una expresión entre varias o varias expresiones a la vez. Separaremos entonces cada condición por una coma que funcionaría a modo de operador “or” o usaremos “and”:
.mixin (@a) when (@a > 10), (@a < -10) { … } // Si se cumple que @a es mayor que 10 o menor de -10 se carga el mixin. .mixin (@a) when (@a > 10) and (@a < -10) { … } // Sólo si se cumple que @a es mayor que 10 y es menor de -10 se carga el mixin.
Por último usaremos la palabra clave “not” si queremos negar una condición:
.mixin (@a) when not (@a = 10) { … } // Si se cumple que @a es distinto de 10 se carga el mixin.
Funciones matemáticas
Existen además una serie de funciones matemáticas:
Round redondea por aproximación
round(1.2); // Salida, 1
round(1.51); // Salida 2
ceil(2.2); // Redondea al alza –> 3
floor(2.9); // Redondea a la baja –> 2
Conviértete en un desarrollador web profesional
[button type=”bd_button btn_large” url=”https://academy.zenva.com/product/desarrollador-web-profesional-paquete-de-6-cursos/” target=”on” button_color_fon=”#3fc2da” button_text_color=”#FFFFFF” ]Accede al curso más completo de desarrollo web[/button]