SASS tiene una característica llamada @extendque permite que un selector herede las propiedades de otro selector, pero sin copiar las propiedades (como mixins).
Para aclarar, las otras referencias a preguntas NO hacen lo mismo. Esta pregunta es simple: "¿LESS tiene una función de extensión?". La otra pregunta es hacer algo que requiere mucha más reflexión con respecto a las decisiones de estilo.
jonschlinkert
... para agregar a mi último comentario, la otra pregunta incluye la etiqueta "estilo de codificación" que respalda aún más mi punto.
En lugar de implementar la @extendsintaxis at-rule ( ) utilizada por SASS y Stylus, LESS implementó la sintaxis de pseudo-clase, que le da a la implementación de LESS la flexibilidad de ser aplicada 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 alldirectiva para extender las clases "anidadas" también:
.sidenav:extend(.nav all){};
Y puede agregar una lista separada por comas de las clases que desea extender:
"La sintaxis de LESS es más" fiel "al CSS tradicional que la @extendsintaxis at-rule ( ) implementada por SASS y Stylus, que normalmente se reserva para dar instrucciones o directivas al analizador CSS en el navegador". <- ¿Qué diablos se supone que significa esto? Huele a hablar de marketing.
@cimmanon Supongo que tienes razón, no quise sonar así. Pero hay mucha controversia sobre la sintaxis de Less, aparentemente porque la gente esperaba que Less usara la misma sintaxis que SASS. Pero en CSS, los pseuso-selectores se usan para reglas de coincidencia de patrones para determinar qué reglas de estilo se aplican a elementos en el árbol del documento, mientras que las reglas at se usan para directivas de "nivel superior" (como mencioné). Entonces, ¿quizás debería editar la respuesta para proporcionar ese detalle? O es otra pregunta: "¿Por qué LESS eligió la sintaxis del pseudo-selector?"
jonschlinkert
4
realmente debería actualizar la menor documentación en línea, no puedo ver nada sobre: extend () y hubiera sido bueno saberlo antes
Joshua Bambrick
2
La documentación, al igual que el código, es mantenida por la comunidad. Sería genial tener este tipo de sugerencias en el repositorio real, y las solicitudes de extracción siempre son bienvenidas ;-)
jonschlinkert
6
Manera fácil de extender una función en Less framework
.sibling-1{
color: red
}.sibling-2{
background-color:#fff;.sibling-1();}
Salida
.sibling-1{
color: red
}.sibling-2{
background-color:#fff;
color: red
}
Respuestas:
Sí, Less.js introducido
extend
en v1.4.0 .En lugar de implementar la
@extend
sintaxis at-rule ( ) utilizada por SASS y Stylus, LESS implementó la sintaxis de pseudo-clase, que le da a la implementación de LESS la flexibilidad de ser aplicada directamente a un selector o dentro de una declaración. Entonces ambos funcionarán:o
Además, puede usar la
all
directiva para extender las clases "anidadas" también:Y puede agregar una lista separada por comas de las clases que desea extender:
Al extender selectores anidados, debería notar las diferencias:
selectores anidados
.selector1
yselector2
:Ahora
.selector3:extend(.selector1 .selector2){};
salidas:,
.selector3:extend(.selector1 all){};
salidas:,
.selector3:extend(.selector2){};
salidasy finalmente
.selector3:extend(.selector2 all){};
:fuente
@extend
sintaxis at-rule ( ) implementada por SASS y Stylus, que normalmente se reserva para dar instrucciones o directivas al analizador CSS en el navegador". <- ¿Qué diablos se supone que significa esto? Huele a hablar de marketing.Manera fácil de extender una función en Less framework
Consulte https://codepen.io/sprushika/pen/MVZoGB/
fuente