Para esclarecimento, as outras referências de pergunta NÃO perguntam a mesma coisa. Esta pergunta é simples: "O LESS tem um recurso de extensão?". A outra questão é perguntar algo que requer muito mais reflexão sobre as decisões de estilo.
jonschlinkert
... para adicionar ao meu último comentário, a outra pergunta inclui a tag "estilo de codificação" que apóia ainda mais meu ponto.
Em vez de implementar a @extendsintaxe at-rule ( ) usada por SASS e Stylus, o LESS implementou a sintaxe de pseudo-classe, que dá à implementação do LESS a flexibilidade de ser aplicada diretamente a um seletor em si ou dentro de uma instrução. Portanto, ambos funcionarão:
.sidenav:extend(.nav){...}
ou
.sidenav {&:extend(.nav);...}
Além disso, você também pode usar a alldiretiva para estender classes "aninhadas":
.sidenav:extend(.nav all){};
E você pode adicionar uma lista separada por vírgulas de classes que deseja estender:
"A sintaxe do LESS é mais" fiel "ao CSS tradicional do que a @extendsintaxe at-rule ( ) implementada pelo SASS e Stylus, que normalmente é reservada para fornecer instruções ou diretivas ao analisador CSS no navegador." <- o que diabos isso quer dizer? Cheira a falar de marketing.
@cimmanon Acho que você está certo, não foi minha intenção soar assim. Mas há muita controvérsia sobre a sintaxe de Less, aparentemente porque as pessoas esperavam que Less usasse a mesma sintaxe do SASS. Mas em CSS, pseuso-seletores são usados para regras de correspondência de padrões para determinar quais regras de estilo se aplicam a elementos na árvore do documento, enquanto as regras-at são usadas para diretivas de "nível superior" (como mencionei). Então, talvez eu deva editar a resposta para fornecer esse detalhe? Ou é outra pergunta: "Por que LESS escolheu a sintaxe do pseudo-seletor?"
jonschlinkert
4
você realmente deveria atualizar a documentação menos online, não consigo ver nada sobre: extend () e teria sido bom saber antes
Joshua Bambrick
2
A documentação, assim como o código, é mantida pela comunidade. Seria ótimo ter esse tipo de sugestão no repo real, e solicitações pull são sempre bem-vindas ;-)
jonschlinkert
6
Maneira fácil de estender uma função no framework Less
.sibling-1{
color: red
}.sibling-2{
background-color:#fff;.sibling-1();}
Resultado
.sibling-1{
color: red
}.sibling-2{
background-color:#fff;
color: red
}
Respostas:
Sim, Less.js introduzido
extend
na v1.4.0 .Em vez de implementar a
@extend
sintaxe at-rule ( ) usada por SASS e Stylus, o LESS implementou a sintaxe de pseudo-classe, que dá à implementação do LESS a flexibilidade de ser aplicada diretamente a um seletor em si ou dentro de uma instrução. Portanto, ambos funcionarão:ou
Além disso, você também pode usar a
all
diretiva para estender classes "aninhadas":E você pode adicionar uma lista separada por vírgulas de classes que deseja estender:
Ao estender os seletores aninhados, você deve notar as diferenças:
seletores aninhados
.selector1
eselector2
:Agora
.selector3:extend(.selector1 .selector2){};
produz:,
.selector3:extend(.selector1 all){};
saídas:,
.selector3:extend(.selector2){};
saídase finalmente
.selector3:extend(.selector2 all){};
:fonte
@extend
sintaxe at-rule ( ) implementada pelo SASS e Stylus, que normalmente é reservada para fornecer instruções ou diretivas ao analisador CSS no navegador." <- o que diabos isso quer dizer? Cheira a falar de marketing.Maneira fácil de estender uma função no framework Less
Referir https://codepen.io/sprushika/pen/MVZoGB/
fonte