w3schools scss multiple imports classes css css3 sass less extend

scss - sass vs less 2018



¿LESS tiene una función de "extender"? (2)

SASS tiene una función llamada @extend que permite a un selector heredar las propiedades de otro selector, pero sin copiar las propiedades (como mixins).

¿MENOS tiene esta característica también?


Una forma sencilla de extender una función en Menos marco

.sibling-1 { color: red } .sibling-2 { background-color: #fff; .sibling-1(); }

Salida

.sibling-1 { color: red } .sibling-2 { background-color: #fff; color: red }

Consulte https://codepen.io/sprushika/pen/MVZoGB/


Sí, Less.js introdujo extend en v1.4.0 .

:extend()

En lugar de implementar la sintaxis at-rule ( @extend ) utilizada por SASS y Stylus, LESS implementó la sintaxis de pseudoclase, que le da a la implementación de LESS la flexibilidad de aplicarse directamente a un selector, o dentro de una declaración. Entonces ambos funcionarán:

.sidenav:extend(.nav) {...}

o

.sidenav { &:extend(.nav); ... }

Además, puede usar la directiva all para extender las clases "anidadas" también:

.sidenav:extend(.nav all){};

Y puede agregar una lista de clases separadas por comas que desee ampliar:

.global-nav { &:extend(.navbar, .nav all, .navbar-fixed-top all, .navbar-inverse); height: 70px; }

Al extender selectores anidados, debe observar las diferencias:

selectores anidados .selector1 y selector2 :

.selector1 { property1: a; .selector2 { property2: b; } }

Ahora .selector3:extend(.selector1 .selector2){}; productos:

.selector1 { property1: a; } .selector1 .selector2, .selector3 { property2: b; }

, .selector3:extend(.selector1 all){}; productos:

.selector1, .selector3 { property1: a; } .selector1 .selector2, .selector3 .selector2 { property2: b; }

, .selector3:extend(.selector2){}; salidas

.selector1 { property1: a; } .selector1 .selector2 { property2: b; }

y finalmente .selector3:extend(.selector2 all){}; :

.selector1 { property1: a; } .selector1 .selector2, .selector1 .selector3 { property2: b; }