SASS verfügt über eine Funktion namens @extend, mit der ein Selektor die Eigenschaften eines anderen Selektors erben kann, ohne jedoch die Eigenschaften (wie Mixins) zu kopieren.
Zur Verdeutlichung stellen die anderen Fragenreferenzen NICHT dasselbe. Diese Frage ist einfach: "Hat WENIGER eine Erweiterungsfunktion?". Die andere Frage ist, etwas zu fragen, das viel mehr Gedanken über Stylingentscheidungen erfordert.
Jonschlinkert
... um meinen letzten Kommentar zu ergänzen, enthält die andere Frage das "Coding-Style" -Tag, das meinen Standpunkt weiter unterstützt.
Jonschlinkert
Antworten:
156
Ja, Less.js wurde extendin Version 1.4.0 eingeführt .
:extend()
Anstatt @extenddie von SASS und Stylus verwendete at-rule ( ) -Syntax zu implementieren, implementierte LESS die Pseudoklassensyntax, die der Implementierung von LESS die Flexibilität gibt, entweder direkt auf einen Selektor selbst oder innerhalb einer Anweisung angewendet zu werden. Beides wird also funktionieren:
.sidenav:extend(.nav){...}
oder
.sidenav {&:extend(.nav);...}
Darüber hinaus können Sie die allDirektive auch verwenden, um "verschachtelte" Klassen zu erweitern:
.sidenav:extend(.nav all){};
Und Sie können eine durch Kommas getrennte Liste von Klassen hinzufügen, die Sie erweitern möchten:
"Die Syntax von LESS ist dem herkömmlichen CSS" getreuer "als die @extendvon SASS und Stylus implementierte at-rule ( ) -Syntax, die normalerweise für die Übermittlung von Anweisungen oder Anweisungen an den CSS-Parser im Browser reserviert ist." <- was zum Teufel soll das heißen? Gerüche wie Marketing sprechen.
@cimmanon Ich denke du hast recht, ich wollte nicht, dass es so klingt. Aber es gibt viele Kontroversen über die Syntax von Less, anscheinend, weil die Leute erwartet haben, dass Less dieselbe Syntax wie SASS verwendet. In CSS werden Pseuso-Selektoren für Mustervergleichsregeln verwendet, um zu bestimmen, welche Stilregeln für Elemente im Dokumentbaum gelten, während at-Regeln für "übergeordnete" Anweisungen verwendet werden (wie bereits erwähnt). Vielleicht sollte ich die Antwort bearbeiten, um dieses Detail bereitzustellen? Oder ist das eine andere Frage: "Warum hat WENIGER die Pseudo-Selektor-Syntax gewählt?"
Jonschlinkert
4
Sie sollten wirklich die weniger Dokumentation online aktualisieren, ich kann nichts über sehen: verlängern () und es wäre gut gewesen, früher zu wissen
Joshua Bambrick
2
Die Dokumentation wird wie der Code von der Community gepflegt. Diese Art von Vorschlägen wäre großartig für das eigentliche Repo, und Pull-Anfragen sind immer willkommen ;-)
Jonschlinkert
6
Einfache Möglichkeit, eine Funktion in Less Framework zu erweitern
.sibling-1{
color: red
}.sibling-2{
background-color:#fff;.sibling-1();}
Ausgabe
.sibling-1{
color: red
}.sibling-2{
background-color:#fff;
color: red
}
Antworten:
Ja, Less.js wurde
extend
in Version 1.4.0 eingeführt .Anstatt
@extend
die von SASS und Stylus verwendete at-rule ( ) -Syntax zu implementieren, implementierte LESS die Pseudoklassensyntax, die der Implementierung von LESS die Flexibilität gibt, entweder direkt auf einen Selektor selbst oder innerhalb einer Anweisung angewendet zu werden. Beides wird also funktionieren:oder
Darüber hinaus können Sie die
all
Direktive auch verwenden, um "verschachtelte" Klassen zu erweitern:Und Sie können eine durch Kommas getrennte Liste von Klassen hinzufügen, die Sie erweitern möchten:
Wenn Sie verschachtelte Selektoren erweitern, sollten Sie die Unterschiede beachten:
verschachtelte Selektoren
.selector1
undselector2
:Jetzt
.selector3:extend(.selector1 .selector2){};
gibt es aus:,
.selector3:extend(.selector1 all){};
Ausgänge:,
.selector3:extend(.selector2){};
Ausgängeund schließlich
.selector3:extend(.selector2 all){};
:quelle
@extend
von SASS und Stylus implementierte at-rule ( ) -Syntax, die normalerweise für die Übermittlung von Anweisungen oder Anweisungen an den CSS-Parser im Browser reserviert ist." <- was zum Teufel soll das heißen? Gerüche wie Marketing sprechen.Einfache Möglichkeit, eine Funktion in Less Framework zu erweitern
Siehe https://codepen.io/sprushika/pen/MVZoGB/
quelle