SASS ha una funzione chiamata @extend
che consente a un selettore di ereditare le proprietà di un altro selettore, ma senza copiare le proprietà (come i mixin).
LESS ha anche questa funzione?
SASS ha una funzione chiamata @extend
che consente a un selettore di ereditare le proprietà di un altro selettore, ma senza copiare le proprietà (come i mixin).
LESS ha anche questa funzione?
Risposte:
Sì, Less.js introdotto extend
nella v1.4.0 .
:extend()
Piuttosto che implementare la @extend
sintassi at-rule ( ) usata da SASS e Stylus, LESS ha implementato la sintassi della pseudo-classe, che dà all'implementazione di LESS la flessibilità di essere applicata direttamente a un selettore stesso o all'interno di un'istruzione. Quindi entrambi funzioneranno:
.sidenav:extend(.nav) {...}
o
.sidenav {
&:extend(.nav);
...
}
Inoltre, puoi utilizzare la all
direttiva per estendere anche le classi "annidate":
.sidenav:extend(.nav all){};
E puoi aggiungere un elenco separato da virgole di classi che desideri estendere:
.global-nav {
&:extend(.navbar, .nav all, .navbar-fixed-top all, .navbar-inverse);
height: 70px;
}
Quando estendi i selettori annidati dovresti notare le differenze:
selettori annidati .selector1
e selector2
:
.selector1 {
property1: a;
.selector2 {
property2: b;
}
}
Ora .selector3:extend(.selector1 .selector2){};
produce:
.selector1 {
property1: a;
}
.selector1 .selector2,
.selector3 {
property2: b;
}
, .selector3:extend(.selector1 all){};
uscite:
.selector1,
.selector3 {
property1: a;
}
.selector1 .selector2,
.selector3 .selector2 {
property2: b;
}
, .selector3:extend(.selector2){};
uscite
.selector1 {
property1: a;
}
.selector1 .selector2 {
property2: b;
}
e infine .selector3:extend(.selector2 all){};
:
.selector1 {
property1: a;
}
.selector1 .selector2,
.selector1 .selector3 {
property2: b;
}
@extend
sintassi at-rule ( ) implementata da SASS e Stylus, che è tipicamente riservata per dare istruzioni o direttive al parser CSS nel browser." <- cosa diavolo dovrebbe significare? Puzza di marketing parlare.
.sibling-1 {
color: red
}
.sibling-2 {
background-color: #fff;
.sibling-1();
}
Produzione
.sibling-1 {
color: red
}
.sibling-2 {
background-color: #fff;
color: red
}
Fare riferimento a https://codepen.io/sprushika/pen/MVZoGB/