SASS `@at-root`
Artikel ini menjelaskan @at-root
pada SASS.
Kami akan membahas semuanya mulai dari penggunaan dasar @at-root
hingga contoh lanjutan, selangkah demi selangkah.
YouTube Video
Tentang SASS @at-root
@at-root
adalah direktif yang disediakan SASS untuk memindahkan selektor atau properti yang bersarang dari nesting saat ini ke cakupan induk. Dengan memanfaatkan fitur ini, Anda dapat mengontrol kedalaman nesting dan menghasilkan CSS yang diinginkan dengan lebih efisien.
Penggunaan dasar @at-root
Nesting SASS membuat kode lebih mudah dibaca, tetapi nesting yang terlalu dalam dapat menghasilkan CSS yang tidak diinginkan. Dengan menggunakan @at-root
, Anda dapat mengecualikan blok kode tertentu dari struktur nesting.
Sintaks Dasar
1@at-root {
2 // Code to be output at the parent (root) scope
3}
Contoh Penggunaan
1.nav {
2 color: blue;
3 @at-root {
4 .nav-item {
5 color: red;
6 }
7 }
8}
CSS yang dikompilasi
1.nav {
2 color: blue;
3}
4.nav-item {
5 color: red;
6}
- Karena
@at-root
,.nav-item
dihasilkan di luar.nav
.
@at-root pada selektor bersarang
Bahkan dalam nesting yang dalam, penggunaan @at-root
memungkinkan Anda memindahkan selektor tertentu ke tingkat root. Ini memungkinkan Anda menghasilkan CSS yang terkontrol bahkan di dalam struktur yang kompleks.
Contoh Penggunaan
1.card {
2 background: white;
3 .card-header {
4 color: black;
5 @at-root .card-title {
6 font-size: 20px;
7 }
8 }
9}
CSS yang dikompilasi
1.card {
2 background: white;
3}
4.card .card-header {
5 color: black;
6}
7.card-title {
8 font-size: 20px;
9}
- Dengan
@at-root
,.card-title
dihasilkan di luar.card-header
.
@at-root dengan argumen
Dengan menentukan argumen, @at-root
dapat dikendalikan dengan lebih fleksibel.
tanpa argumen
Saat Anda menggunakan argumen without
, keluaran akan mengabaikan cakupan yang ditentukan. Dengan kata lain, Anda dapat menghapus aturan induk atau media query.
Contoh Penggunaan
1.nav {
2 @media (min-width: 768px) {
3 &__item {
4 @at-root (without: media) {
5 color: red;
6 }
7 }
8 }
9}
CSS yang dikompilasi
1.nav__item {
2 color: red;
3}
- Dalam kasus ini,
@at-root (without: media)
mengecualikan cakupan media query, dan.nav__item
dihasilkan pada tingkat root.
dengan argumen
Menggunakan with
hanya mempertahankan cakupan yang ditentukan dalam keluaran. Berguna saat Anda ingin menghasilkan ke root sambil mempertahankan cakupan tertentu.
Contoh Penggunaan
1.nav {
2 &__item {
3 @media (min-width: 768px) {
4 @at-root (with: media) {
5 &-large {
6 font-size: 18px;
7 }
8 }
9 }
10 }
11}
CSS yang dikompilasi
1@media (min-width: 768px) {
2 .nav__item-large {
3 font-size: 18px;
4 }
5}
@at-root (with: media)
memindahkan selektor ke root sambil mempertahankan struktur media query.
Menentukan beberapa kondisi
Anda juga dapat menentukan beberapa cakupan sekaligus, dipisahkan dengan spasi.
Contoh Penggunaan
1.wrapper {
2 @media (min-width: 600px) {
3 @at-root (without: rule media) {
4 .global-style {
5 color: green;
6 }
7 }
8 }
9}
CSS yang dikompilasi
1.global-style {
2 color: green;
3}
- Dalam contoh ini,
rule
(selektor biasa) danmedia
(media query) keduanya dikecualikan, sehingga.global-style
tidak termasuk dalam cakupan mana pun dan sepenuhnya dihasilkan pada tingkat root. Ini berguna ketika Anda ingin dengan sengaja mendefinisikan gaya global bahkan di dalam nesting yang kompleks.
Menggabungkan dengan media query
Dengan menggunakan @at-root
, Anda dapat menghasilkan gaya pada tingkat root dari dalam media query. Ini memungkinkan Anda mendefinisikan desain responsif pada tingkat komponen.
Contoh Penggunaan
1.container {
2 @media (min-width: 768px) {
3 @at-root {
4 .container-large {
5 width: 80%;
6 }
7 }
8 }
9}
CSS yang dikompilasi
1.container-large {
2 width: 80%;
3}
- Dengan
@at-root
, Anda juga dapat menghasilkan gaya tingkat root dari dalam media query. Ini memudahkan Anda mendefinisikan gaya global yang independen untuk setiap breakpoint.
Kasus penggunaan @at-root
@at-root
berguna ketika Anda ingin menghasilkan gaya pada tingkat root dalam kondisi tertentu. Ini sangat membantu saat menangani media query atau gaya khusus tema di dalam komponen.
Memisahkan komponen dan tema
Dengan menggunakan @at-root
, Anda dapat menghasilkan kelas global yang independen bahkan dari dalam media query. Ini memudahkan pengorganisasian tema dan status per komponen.
Contoh Penggunaan
1.card {
2 background: white;
3 color: black;
4
5 @media (prefers-color-scheme: dark) {
6 @at-root (with: media) {
7 .card-dark {
8 background: #222;
9 color: white;
10 }
11 }
12 }
13}
CSS yang dikompilasi
1.card {
2 background: white;
3 color: black;
4}
5
6@media (prefers-color-scheme: dark) {
7 .card-dark {
8 background: #222;
9 color: white;
10 }
11}
- Dalam contoh ini, saat mendefinisikan gaya untuk tema gelap di dalam
.card
,@at-root
menghasilkan kelas.card-dark
yang terpisah. Ini memungkinkan Anda mengganti kelas secara fleksibel di berbagai tema.
Catatan
Saat menggunakan @at-root
, perhatikan poin-poin berikut.
-
Hindari penggunaan berlebihan
@at-root
itu kuat, tetapi penggunaan berlebihan dapat mengaburkan maksud nesting Anda. -
Perjelas maksud Menambahkan komentar tentang alasan Anda menggunakan
@at-root
memudahkan pengembang lain untuk memahami. -
Perhatikan konsistensi cakupan Memindahkan keluaran ke root dapat mengubah dependensi gaya. Pastikan jelas elemen mana yang diterapkan.
-
Gabungkan dengan fitur SASS lainnya Menggabungkan
@at-root
dengan@mixin
dan@function
memungkinkan perancangan CSS yang lebih fleksibel.
Ringkasan
{^ i18n_speak
@at-root
は、SASSのネスト構文を補完する強力なツールです。不要なネストを解消し、構造を整理することで、より明確で再利用性の高いCSSを生成できます。スコープの理解を深め、目的に応じて使い分けることで、プロジェクト全体の可読性と保守性を高めることができます。^}
Anda dapat mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Silakan periksa juga saluran YouTube kami.