SASS memiliki fitur bernama @extend
yang memungkinkan selektor untuk mewarisi properti selektor lain, tetapi tanpa menyalin properti (seperti mixin).
Apakah LESS juga memiliki fitur ini?
SASS memiliki fitur bernama @extend
yang memungkinkan selektor untuk mewarisi properti selektor lain, tetapi tanpa menyalin properti (seperti mixin).
Apakah LESS juga memiliki fitur ini?
Jawaban:
Ya, Less.js diperkenalkan extend
di v1.4.0 .
:extend()
Daripada mengimplementasikan @extend
sintaks at-rule ( ) yang digunakan oleh SASS dan Stylus, LESS mengimplementasikan sintaks pseudo-class, yang memberi implementasi LESS fleksibilitas untuk diterapkan baik secara langsung ke selektor itu sendiri, atau di dalam sebuah pernyataan. Jadi keduanya akan bekerja:
.sidenav:extend(.nav) {...}
atau
.sidenav {
&:extend(.nav);
...
}
Selain itu, Anda juga dapat menggunakan all
perintah untuk memperluas kelas "bersarang":
.sidenav:extend(.nav all){};
Dan Anda dapat menambahkan daftar kelas yang dipisahkan koma yang ingin Anda perluas:
.global-nav {
&:extend(.navbar, .nav all, .navbar-fixed-top all, .navbar-inverse);
height: 70px;
}
Saat memperluas pemilih bersarang, Anda akan melihat perbedaannya:
pemilih bersarang .selector1
dan selector2
:
.selector1 {
property1: a;
.selector2 {
property2: b;
}
}
Sekarang .selector3:extend(.selector1 .selector2){};
keluaran:
.selector1 {
property1: a;
}
.selector1 .selector2,
.selector3 {
property2: b;
}
, .selector3:extend(.selector1 all){};
keluaran:
.selector1,
.selector3 {
property1: a;
}
.selector1 .selector2,
.selector3 .selector2 {
property2: b;
}
, .selector3:extend(.selector2){};
keluaran
.selector1 {
property1: a;
}
.selector1 .selector2 {
property2: b;
}
dan terakhir .selector3:extend(.selector2 all){};
:
.selector1 {
property1: a;
}
.selector1 .selector2,
.selector1 .selector3 {
property2: b;
}
@extend
sintaks at-rule ( ) yang diimplementasikan oleh SASS dan Stylus, yang biasanya disediakan untuk memberikan instruksi atau arahan ke parser CSS di browser." <- apa sih maksudnya ini? Baunya seperti pembicaraan pemasaran.
.sibling-1 {
color: red
}
.sibling-2 {
background-color: #fff;
.sibling-1();
}
Keluaran
.sibling-1 {
color: red
}
.sibling-2 {
background-color: #fff;
color: red
}