Saya memiliki ini di file SCSS saya:
.class-a{
display: inline-block;
//some other properties
&:hover{
color: darken(#FFFFFF, 10%);
}
}
.class-b{
//Inherite class-a here
//some properties
}
Di kelas-b, saya ingin mewarisi semua properti dan deklarasi bersarang dari class-a
. Bagaimana ini dilakukan? Saya mencoba menggunakan @include class-a
, tetapi itu hanya melempar kesalahan saat kompilasi.
inheritance
sass
F21
sumber
sumber
@extend
- ada beberapa efek samping rumit yang harus Anda waspadai: stackoverflow.com/questions/30744625/….myclass
tidak digunakan di tempat lain (saya kira) selain.myotherclass
, maka lebih baik untuk.myclass
didefinisikan sebagai%myclass
dan diperluas.myotherclass
sebagai@extend %myclass;
. Ini akan menghasilkan sebagai.myotherclass{ font-weight: bold; font-size: 90px; color: #000000; }
Coba ini:
Sekarang Anda dapat memperluas% kelas dasar di salah satu kelas Anda (mis. Kelas saya).
sumber
Menggunakan @extend adalah solusi yang bagus, tetapi perlu diketahui bahwa css yang dikompilasi akan memecah definisi kelas. Setiap kelas yang memperpanjang placeholder yang sama akan dikelompokkan bersama dan aturan yang tidak diperpanjang di kelas akan berada dalam definisi yang terpisah. Jika beberapa kelas diperluas, akan sulit untuk mencari pemilih di css yang dikompilasi atau alat dev. Sedangkan mixin akan menduplikasi kode mixin dan menambahkan gaya tambahan.
Anda dapat melihat perbedaan antara @extend dan @mixin di sassmeister ini
sumber
sumber
@extend #{'.my-class', '.my-other-class'};
Opsi lain bisa menggunakan Pemilih Atribut:
Sedangkan setiap kelas dimulai dengan "nama kelas Anda" menggunakan gaya ini.
Jadi dalam kasus Anda, Anda bisa melakukannya seperti ini:
Lebih lanjut tentang Selektor Atribut di w3Schools
sumber