Saya menggunakan Sass (.scss) untuk proyek saya saat ini.
Contoh berikut:
HTML
<div class="container desc">
<div class="hello">
Hello World
</div>
</div>
SCSS
.container {
background:red;
color:white;
.hello {
padding-left:50px;
}
}
Ini sangat bagus.
Bisakah saya menangani beberapa kelas saat menggunakan gaya bersarang.
Dalam contoh di atas saya berbicara tentang ini:
CSS
.container.desc {
background:blue;
}
Dalam hal ini semua div.container
biasanya akan red
tetapi div.container.desc
akan berwarna biru.
Bagaimana saya bisa bersarang di dalam ini container
dengan Sass?
Jawaban:
Anda dapat menggunakan referensi pemilih induk
&
, itu akan diganti oleh pemilih induk setelah kompilasi:Sebagai contoh Anda:
The
&
benar-benar akan menyelesaikan, jadi jika pemilih orang tua bersarang itu sendiri, bersarang akan diselesaikan sebelum mengganti&
.Notasi ini paling sering digunakan untuk menulis pseudo-elements dan -classes :
Namun, Anda dapat menempatkannya
&
di hampir semua posisi yang Anda suka * , jadi berikut ini dimungkinkan juga:Namun perlu diperhatikan, bahwa ini entah bagaimana menghancurkan struktur sarang Anda dan karenanya dapat meningkatkan upaya menemukan aturan khusus di stylesheet Anda.
*: Tidak ada karakter selain spasi putih yang diizinkan di depan
&
. Jadi, Anda tidak dapat melakukan gabungan langsungselector
+&
-#id&
akan menimbulkan kesalahan.sumber
&
adalah ketika menggunakan elemen semu dan kelas semu. Sebagai contoh:&:hover
.&
digunakan di akhir baris, itu menempatkan garis itu di awal kelas di semua level lainnya. Anda dapat menggabungkan elemen dengan melakukan di&.desc
bawah.container
, yang akan menambahkan .desc untuk itu, menghasilkan.container.desc
Jika itu masalahnya, saya pikir Anda perlu menggunakan cara yang lebih baik untuk membuat nama kelas atau konvensi nama kelas. Misalnya, seperti yang Anda katakan, Anda ingin
.container
kelas memiliki warna yang berbeda sesuai dengan penggunaan atau penampilan tertentu. Kamu bisa melakukan ini:SCSS
CSS
sumber
.container--desc
dan berakhir tanpa hasil.Jawaban Christoph sempurna. Namun terkadang Anda mungkin ingin naik lebih dari satu kelas. Dalam hal ini Anda bisa mencoba fitur
@at-root
dan#{}
css yang akan memungkinkan dua kelas root untuk duduk bersebelahan menggunakan&
.Ini tidak akan berfungsi (karena
nothing before &
aturan):Tapi ini akan (menggunakan
@at-root plus #{&}
):sumber