Berbagi teknologi

konsep dan penggunaan scss

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Daftar isi

apa itu scss

Perbandingan antara scss dan css

Penggunaan scss

mendeklarasikan variabel

Bedakan variabel default

Bedakan antara variabel global dan variabel lokal

Sintaks bersarang

Pemilih bersarang

sarang dasar

Referensi pemilih induk bertingkat (&)

Pertimbangan bersarang

bersarang bersarang

Properti bersarang

Atribut dasar bersarang

Pertimbangan bersarang

mewarisi

Penggunaan dasar

Catatan tentang warisan

Skenario aplikasi

Tempat penampung%

tentukan penggantinya

pengganti warisan

Keuntungan dan skenario yang dapat diterapkan

Tindakan pencegahan

Campur @mixin

Definisikan campuran

campuran panggilan

contoh

Keuntungan dan skenario yang dapat diterapkan

Tindakan pencegahan

SCSS menggunakan pernyataan kondisional

@jika pernyataan

pernyataan @else dan @else if

Bersarangnya pernyataan bersyarat

Kesimpulannya

Tiga jenis loop di SCSS

@untuk lingkaran

@setiap putaran

@sementara putaran

Meringkaskan

Fungsi dan penggunaan khusus

Tentukan fungsi khusus

Gunakan fungsi khusus

Tindakan pencegahan

Pekerjaan rumah


apa itu scss

SCSS (Sassy CSS) adalah bahasa praprosesor untuk CSS. Ini memberikan lebih banyak fungsi dan fleksibilitas berdasarkan CSS, membuat penulisan dan pengelolaan style sheet lebih efisien dan nyaman.

Berikut beberapa kelebihan SCSS:

  • Variabel: SCSS memungkinkan penggunaan variabel untuk menyimpan nilai-nilai seperti warna, ukuran font, dll., membuatnya lebih mudah dan mudah dikelola untuk menyesuaikan nilai-nilai ini secara seragam di seluruh style sheet.
  • Aturan Bersarang: Aturan bersarang dapat digunakan di SCSS untuk mengatur gaya agar struktur kode lebih jelas. Misalnya, Anda dapat menulis gaya kelas semu suatu elemen di blok gaya elemen induknya alih-alih menuliskannya di banyak tempat.
  • Mixin: Mixin adalah cara menggabungkan sekumpulan properti gaya menjadi blok yang dapat digunakan kembali. Hal ini menghindari penulisan kode gaya yang sama berulang kali dan meningkatkan penggunaan kembali dan keterbacaan kode.
  • Impor (Impor Sebaris): Beberapa file SCSS dapat digabungkan menjadi satu file melalui aturan @import. Pendekatan ini membantu membagi style sheet menjadi unit-unit logis dan dapat diatur dan dikelola secara fleksibel sesuai kebutuhan.
  • Warisan (Perluas): SCSS mendukung pewarisan gaya melalui kata kunci @extend, yang dapat membuat lembar gaya lebih modular dan mudah dipelihara.
  • Operasi: SCSS memungkinkan operasi matematika dalam style sheet, seperti penjumlahan, pengurangan, perkalian dan pembagian, yang berguna untuk menangani beberapa perhitungan gaya dinamis.
  • Modularitas: Karakteristik SCSS membuat style sheet lebih modular dan terstruktur, yang dapat mengelola dan memelihara gaya dengan lebih baik, terutama dalam proyek besar.

Singkatnya, SCSS tidak hanya mempertahankan semua fungsi CSS, tetapi juga memperkenalkan fitur-fitur canggih seperti variabel, bersarang, mencampur, mengimpor, dll. Fungsi-fungsi ini memungkinkan pengembang untuk menulis dan mengelola style sheet dengan lebih efisien dan umumnya digunakan di front-end modern. pengembangan akhir.

Perbandingan antara scss dan css

tata bahasa:

  • CSS: Sintaks dasar cascading style sheet, aturan ditentukan melalui penyeleksi, atribut, dan nilai.
  • SCSS: SCSS adalah bahasa praprosesor untuk CSS. Ini menyediakan lebih banyak fungsi dan sintaksis, seperti variabel, aturan bersarang, mixin, impor, dll., yang membuat penulisan style sheet lebih fleksibel dan efisien.

Keterbacaan dan pemeliharaan:

  • CSS: Dalam proyek yang lebih besar, file CSS bisa menjadi sangat bertele-tele dan sulit dipelihara karena tidak memiliki fitur terstruktur dan modular.
  • SCSS: SCSS mendukung variabel dan aturan bersarang. Dengan menggunakan variabel dan mixin, penulisan kode yang berulang dapat dikurangi, dan aturan yang disarangkan dapat mengekspresikan hubungan hierarki struktur HTML dengan lebih jelas.

Ekstensi fungsi:

  • CSS: CSS standar hanya dapat melakukan definisi gaya dasar dan pencocokan pemilih.
  • SCSS: SCSS memperkenalkan fungsi-fungsi lanjutan seperti pencampuran, pewarisan, dan perhitungan. Fungsi-fungsi ini membuat style sheet lebih fleksibel dan kuat, dan dapat mengatasi persyaratan gaya yang kompleks dengan lebih baik.

kesesuaian:

  • CSS: Browser mendukung CSS secara langsung, tidak diperlukan langkah kompilasi tambahan.
  • SCSS: SCSS perlu diubah menjadi file CSS normal oleh kompiler sebelum dapat dipahami dan diterapkan oleh browser.

kurva belajar:

  • CSS: Mempelajari CSS relatif sederhana, cukup pahami kombinasi dasar penyeleksi, properti, dan nilai.
  • SCSS: Mempelajari SCSS memerlukan penguasaan sintaksis dan fungsinya yang unik, seperti variabel, pencampuran, sarang, dll., yang memerlukan proses pembelajaran dan adaptasi tertentu.

Singkatnya, dibandingkan dengan CSS biasa, SCSS menyediakan lebih banyak alat dan fitur untuk menyederhanakan penulisan dan pemeliharaan style sheet, dan sangat cocok untuk pengembangan proyek besar dan kompleks. Namun, untuk proyek kecil atau kebutuhan penataan gaya sederhana, CSS biasa mungkin lebih mudah dan nyaman.

Penggunaan scss

Sebelum mempelajari scss, instal dulu dua plug-in di vscode untuk mengubah scss menjadi file CSS biasa untuk pembelajaran selanjutnya!

Cari sass di toko plugin, unduh dua plugin berikut dan mulai ulang vscode!

mendeklarasikan variabel

Mendeklarasikan variabel di SCSS sangat sederhana, Anda dapat menggunakan simbol $ untuk mendefinisikan variabel.

Berikut adalah contoh sederhana yang menunjukkan cara mendeklarasikan dan menggunakan variabel di SCSS:

  1. // 定义变量
  2. $primary-color: #3498db;
  3. $secondary-color: #2ecc71;
  4. // 使用变量
  5. body {
  6. background-color: $primary-color;
  7. }
  8. a {
  9. color: $secondary-color;
  10. }

Dalam contoh di atas, kita mendefinisikan dua variabel $warna primer dan $warna sekunder untuk masing-masing menyimpan warna primer dan warna sekunder. Kita kemudian dapat menggunakan variabel-variabel ini dalam aturan gaya untuk menjaga konsistensi warna dan mudah dimodifikasi di seluruh lembar gaya.

Ketika file SCSS dikompilasi menjadi file CSS normal, semua variabel akan diganti dengan nilai yang sesuai, sehingga file CSS akhir yang dihasilkan tidak akan berisi deklarasi variabel apa pun.

Bedakan variabel default

Di SCSS, Anda dapat menggunakan variabel default untuk memastikan bahwa suatu variabel memiliki nilai alternatif jika tidak ditentukan. Ini sangat berguna ketika bekerja dengan tema atau mengonfigurasi gaya.

Berikut ini contoh cara mendeklarasikan dan menggunakan variabel default:

  1. // 声明变量,并设置默认值
  2. $primary-color: #3498db !default;
  3. $secondary-color: #2ecc71 !default;
  4. // 使用变量
  5. body {
  6. background-color: $primary-color;
  7. }
  8. a {
  9. color: $secondary-color;
  10. }

Dalam contoh di atas, kami menggunakan tag !default untuk menentukan nilai default. Ini berarti bahwa jika $warna primer atau $warna sekunder tidak ditentukan di tempat lain sebelum dimasukkan ke dalam file SCSS tersebut, mereka akan menggunakan nilai default yang ditentukan (#3498db dan #2ecc71). Jika variabel-variabel ini telah ditentukan sebelum mengimpor file, nilai defaultnya akan diabaikan.

Keuntungan menggunakan variabel default adalah memungkinkan Anda memberikan nilai alternatif untuk variabel tanpa menimpa variabel yang sudah ditentukan. Ini sangat berguna untuk membuat tema atau berbagi variabel di beberapa file gaya.

Bedakan antara variabel global dan variabel lokal

  • Variabel global: Variabel global adalah variabel yang dideklarasikan di luar pemilih atau di luar mixer/fungsi. Mereka dapat diakses di seluruh stylesheet, dan jika variabel global yang sama didefinisikan dalam beberapa file, nilainya akan tetap konsisten.
  • Variabel lokal: Variabel lokal adalah variabel yang didefinisikan di dalam pemilih atau di dalam mixer/fungsi. Mereka hanya dapat digunakan dalam lingkup di mana mereka didefinisikan dan tidak lagi berlaku di luar lingkup tersebut.

Catatan: variabel lokal menggantikan variabel global

Ketika variabel dengan nama yang sama dengan variabel global dideklarasikan ulang dalam lingkup lokal, variabel lokal akan menimpa nilai variabel global. Hal ini memungkinkan nilai variabel yang berbeda ditentukan untuk pemilih atau mixer tertentu tanpa mempengaruhi situasi global.

Gunakan kata kunci !global untuk mengubah variabel lokal menjadi variabel global

SCSS menyediakan kata kunci !global untuk mendeklarasikan variabel lokal secara eksplisit sebagai variabel global. Hal ini menyebabkan nilai variabel lokal dipromosikan ke lingkup global tempat ia dideklarasikan, menimpa variabel global yang ada dengan nama yang sama.

Contoh:

  1. // 全局变量
  2. $primary-color: #3498db;
  3. .button {
  4. // 局部变量,覆盖全局变量
  5. $primary-color: #cc582e;
  6. background-color: $primary-color; // 使用局部变量值
  7. }
  8. // 使用 !global 将局部变量变为全局变量
  9. $primary-color: #cddb34;
  10. .button {
  11. // 使用 !global 将局部变量变为全局变量
  12. $primary-color: #2ecc71 !global;
  13. }
  14. body {
  15. background-color: $primary-color; // 这里使用的是已变为全局的 $primary-color
  16. }

Pada contoh pertama, variabel lokal $warna primer di dalam pemilih .button menggantikan nilai variabel global. Pada contoh kedua, dengan menggunakan kata kunci !global, variabel lokal di dalam pemilih .button diubah menjadi variabel global, sehingga mempengaruhi nilai variabel dalam lingkup global.

Sintaks bersarang

Pemilih bersarang

sarang dasar

Penyarangan pemilih memungkinkan aturan gaya untuk penyeleksi anak disarangkan di dalam penyeleksi induk, misalnya:

  1. // SCSS代码
  2. .navbar {
  3. background-color: #333;
  4. padding: 10px;
  5. ul {
  6. list-style: none;
  7. margin: 0;
  8. padding: 0;
  9. li {
  10. display: inline-block;
  11. margin-right: 10px;
  12. a {
  13. text-decoration: none;
  14. color: #fff;
  15. &:hover {
  16. text-decoration: underline;
  17. }
  18. }
  19. }
  20. }
  21. }

Dalam kode di atas, pemilih .navbar berisi ul, li, dan sub-selektor yang disarangkan. Struktur bertingkat ini membuat aturan gaya lebih jelas dan mudah dikelola.

Referensi pemilih induk bertingkat (&)

Di SCSS, simbol & digunakan untuk merujuk ke pemilih induk, terutama berguna dalam kasus kelas semu atau elemen semu. Misalnya, gunakan &:hover untuk mereferensikan pemilih induk pemilih saat ini dan menambahkan gaya status :hover.

  1. .button {
  2. background-color: #3498db;
  3. color: #fff;
  4. padding: 8px 16px;
  5. border: none;
  6. text-align: center;
  7. text-decoration: none;
  8. display: inline-block;
  9. &:hover {
  10. background-color: #2980b9;
  11. }
  12. }

Pertimbangan bersarang
  • Kedalaman pemilih: Hindari penumpukan pemilih yang terlalu dalam karena dapat meningkatkan prioritas gaya, sehingga mempersulit penggantian dan pemeliharaan gaya.
  • Keterbacaan: Saat menggunakan kumpulan pemilih, perhatikan agar kode tetap dapat dibaca dan jelas, dan hindari struktur bersarang yang terlalu rumit.
  • Kinerja: Struktur bersarang dapat meningkatkan ukuran file CSS yang dihasilkan, namun biasanya dapat dioptimalkan dengan gaya organisasi dan penulisan yang tepat.
bersarang bersarang

SCSS memungkinkan beberapa tingkatan pemilih bersarang, misalnya:

  1. .container {
  2. .row {
  3. .col {
  4. width: 100%;
  5. }
  6. }
  7. }

Properti bersarang

Di SCSS, selain selector nesting, juga terdapat fitur atribut nesting, yaitu fitur lain yang membuat stylesheet lebih bersih dan mudah dikelola. Penyarangan properti memungkinkan properti terkait diatur bersama, mirip dengan bentuk objek.

Atribut dasar bersarang

Pengumpulan properti dapat digunakan untuk menempatkan properti terkait dalam satu blok kode, misalnya:

  1. .navbar {
  2. font: {
  3. family: Arial, sans-serif;
  4. size: 16px;
  5. weight: bold;
  6. }
  7. margin: {
  8. top: 10px;
  9. bottom: 15px;
  10. }
  11. padding: {
  12. left: 20px;
  13. right: 20px;
  14. }
  15. }

Dalam contoh di atas, blok font, margin, dan padding berisi atribut terkait. Organisasi ini membuat properti dalam setiap blok lebih jelas dan lebih mudah untuk dimodifikasi dan dipelihara.

Pertimbangan bersarang
  • Properti yang didukung: Tidak semua properti CSS mendukung penyarangan, biasanya properti yang dapat menerima pasangan nilai kunci, seperti font, margin, padding, border, dll.
  • Keterbacaan: Saat menggunakan penyarangan atribut, pastikan keterbacaan dan kejelasan kode serta hindari penyarangan yang berlebihan dan struktur yang rumit.
  • Penyusunan bersarang: Anda juga dapat menyarangkan properti lain di dalam kumpulan properti, yang selanjutnya dapat mengatur dan menyusun gaya Anda.

mewarisi

Di SCSS, pewarisan (Extend) adalah fitur yang sangat berguna yang memungkinkan satu pemilih mewarisi aturan gaya pemilih lainnya. Fitur ini mengurangi duplikat kode CSS dan membuat stylesheet lebih modular dan mudah dipelihara.

Penggunaan dasar

Warisan pemilih dapat dicapai dengan menggunakan kata kunci @extend. Misalnya:

  1. %message-shared {
  2. border: 1px solid #ccc;
  3. padding: 10px;
  4. color: #333;
  5. }
  6. .success-message {
  7. @extend %message-shared;
  8. background-color: lightgreen;
  9. }
  10. .error-message {
  11. @extend %message-shared;
  12. background-color: lightcoral;
  13. }

Dalam contoh di atas, %message-shared adalah pemilih placeholder yang mendefinisikan serangkaian gaya umum. .success-message dan .error-message masing-masing mewarisi gaya %message-shared dan menambahkan warna latar belakangnya sendiri.

Catatan tentang warisan

  • Urutan pemilih: Warisan dapat menghasilkan daftar penyeleksi yang panjang, yang dapat memengaruhi prioritas gaya. Pastikan urutan dan posisi pemilih sudah benar saat menggunakan @extend untuk menghindari masalah prioritas yang tidak perlu.
  • Batasan: Pemilih yang diwariskan harus muncul setelah pemilih yang diwarisi. Artinya, jika Anda menentukan pemilih dalam file SCSS dan menggunakan @extend untuk mewarisi gayanya dalam kode berikutnya, pewarisan ini hanya akan berlaku setelah ditentukan.
  • Pemilih placeholder vs pemilih kelas: Pemilih placeholder yang dimulai dengan % umumnya merupakan target pewarisan yang lebih baik daripada pemilih kelas langsung karena mereka tidak menghasilkan pemilih yang berlebihan setelah kompilasi. Sebaliknya, penyeleksi kelas akan menghasilkan gaya duplikat di mana pun gaya tersebut digunakan, sehingga meningkatkan ukuran dan kompleksitas file.

Skenario aplikasi

Warisan sangat cocok untuk penyeleksi dengan karakteristik umum, seperti komponen tombol, kotak pesan, dll. Melalui pewarisan, Anda dapat menggunakan kembali aturan gaya yang sama dalam skenario berbeda sambil menjaga kode Anda tetap bersih dan terpelihara.

Singkatnya, pewarisan di SCSS adalah alat yang ampuh yang dapat membantu Anda menghindari duplikasi gaya dan menjaga modularitas dan kejelasan kode Anda, namun saat menggunakannya, Anda perlu memperhatikan urutan dan posisi penyeleksi, dan kewajaran penggunaan placeholder untuk memaksimalkan efeknya.

Tempat penampung%

Placeholder % adalah pemilih khusus di SCSS yang sering digunakan untuk menentukan aturan gaya yang dapat diwarisi tetapi tidak menghasilkan keluaran CSS sebenarnya. Secara khusus:

tentukan penggantinya

  1. %placeholder-selector {
  2. // 样式规则
  3. }

Dalam contoh di atas, %placeholder-selector adalah pemilih placeholder yang dimulai dengan %. Ini mendefinisikan seperangkat aturan gaya, tetapi nama pemilih yang sesuai tidak akan muncul di CSS yang dikompilasi.

pengganti warisan

  1. .some-class {
  2. @extend %placeholder-selector;
  3. // 可选的额外样式
  4. }

Menggunakan kata kunci @extend memungkinkan .some-class mewarisi gaya %placeholder-selector. Artinya .some-class akan menerapkan semua aturan gaya yang ditentukan dalam %placeholder-selector dan menghasilkan keluaran CSS yang sesuai.

Keuntungan dan skenario yang dapat diterapkan

  • Kurangi duplikasi: Pemilih placeholder memungkinkan untuk menentukan seperangkat aturan gaya umum dan menggunakannya kembali melalui pewarisan bila diperlukan, sehingga menghindari duplikasi kode.
  • Modularitas: Pemilih placeholder berkontribusi pada modularitas dan pemeliharaan kode, terutama dalam proyek besar, dan dapat meningkatkan kejelasan struktural stylesheet.
  • Hindari redundansi: Dibandingkan dengan menggunakan penyeleksi kelas, penyeleksi placeholder tidak menghasilkan penyeleksi yang berlebihan, sehingga mengurangi ukuran file CSS.

Tindakan pencegahan

  • Urutan dan posisi: Saat menggunakan @extend untuk mewarisi pemilih placeholder, pemilih placeholder yang diwarisi harus ditentukan sebelum pemilihnya digunakan, jika tidak, masalah hierarki gaya yang tidak terduga dapat terjadi.
  • Pencampuran: Anda dapat menggabungkan pemilih placeholder dengan pemilih kelas biasa, namun Anda harus menanganinya dengan hati-hati untuk menghindari keluaran CSS yang tidak terduga.

Singkatnya, pemilih placeholder% adalah alat yang ampuh di SCSS yang dapat membantu pengembang meningkatkan penggunaan kembali dan pemeliharaan style sheet sekaligus mengurangi redundansi CSS yang tidak perlu.

Campur @mixin

Mixin adalah fitur lain yang sangat kuat di SCSS yang memungkinkan seperangkat aturan gaya dienkapsulasi dalam blok kode yang dapat digunakan kembali dan kemudian direferensikan dimanapun diperlukan. Berbeda dengan pemilih placeholder %, mixin dapat langsung menghasilkan keluaran CSS, sehingga cocok untuk situasi di mana gaya yang sama perlu digunakan di banyak tempat.

Definisikan campuran

  1. @mixin mixin-name($parameter1, $parameter2, ...) {
  2. // 样式规则使用参数
  3. }

Dalam contoh di atas, kata kunci @mixin mendefinisikan mixin yang disebut mixin-name yang dapat menerima banyak argumen (jika diperlukan) dan mendefinisikan serangkaian aturan gaya di dalamnya.

campuran panggilan

  1. .some-class {
  2. @include mixin-name(value1, value2, ...);
  3. // 可选的额外样式
  4. }

Gunakan kata kunci @include untuk memanggil mixin di pemilih dan meneruskan parameter ke sana. Dengan cara ini, .some-class akan menerapkan aturan gaya yang ditentukan dalam mixin dan menerapkan nilai parameter yang diteruskan ke variabel parameter terkait.

contoh

  1. @mixin button-style($background-color, $text-color) {
  2. display: inline-block;
  3. padding: 10px 20px;
  4. border: none;
  5. border-radius: 4px;
  6. background-color: $background-color;
  7. color: $text-color;
  8. text-align: center;
  9. text-decoration: none;
  10. font-size: 16px;
  11. cursor: pointer;
  12. transition: background-color 0.3s ease;
  13. &:hover {
  14. background-color: darken($background-color, 10%);
  15. }
  16. }
  17. .button-primary {
  18. @include button-style(#3498db, #fff);
  19. }
  20. .button-secondary {
  21. @include button-style(#2ecc71, #fff);
  22. }

 

Keuntungan dan skenario yang dapat diterapkan

  • Fleksibilitas: Pencampuran memungkinkan parameter diteruskan dan keluaran gaya yang berbeda dapat dihasilkan secara dinamis sesuai kebutuhan, menjadikan gaya lebih fleksibel dan dapat disesuaikan.
  • Keterbacaan: Mengenkapsulasi aturan gaya yang umum digunakan dalam mixin dapat meningkatkan keterbacaan dan pemeliharaan kode Anda, terutama jika gaya yang sama diperlukan di banyak tempat.
  • Dapat digunakan kembali: Campuran yang sama dapat dipanggil beberapa kali dalam penyeleksi dan file yang berbeda untuk menghindari definisi gaya yang berulang dan mengurangi jumlah kode.

Tindakan pencegahan

  • Konflik penamaan: Pastikan mixin tidak bertentangan dengan nama kelas CSS yang ada atau mixin lainnya untuk menghindari penggantian gaya atau kesalahan yang tidak terduga.
  • Pengoperan parameter: Saat memanggil mixin, pastikan jenis parameter dan urutan yang diteruskan konsisten dengan persyaratan definisi mixin untuk menghindari kesalahan kompilasi atau perilaku yang tidak terduga.
  • Dampak kinerja: Penggunaan mixin secara ekstensif dapat meningkatkan ukuran file CSS yang dihasilkan, jadi berhati-hatilah dengan dampak kinerjanya.

Singkatnya, mix @mixin adalah alat yang ampuh untuk merangkum dan menggunakan kembali aturan gaya di SCSS. Ini dapat secara signifikan meningkatkan pemeliharaan dan fleksibilitas CSS dan cocok untuk berbagai persyaratan gaya yang kompleks dan berulang.

SCSS menggunakan pernyataan kondisional

Di SCSS, pernyataan kondisional memungkinkan gaya CSS dihasilkan secara dinamis berdasarkan kondisi tertentu. Pernyataan kondisional di SCSS mirip dengan pernyataan kondisional dalam bahasa pemrograman lain, termasuk @if, @else if, dan @else.

@jika pernyataan

Pernyataan @if memungkinkan gaya dihasilkan berdasarkan suatu kondisi. Sintaksnya adalah sebagai berikut:

  1. $use-rounded-corners: true;
  2. .button {
  3. @if $use-rounded-corners {
  4. border-radius: 4px;
  5. }
  6. }

Dalam contoh di atas, jika nilai variabel $use-rounded-corners benar, gaya kelas .button akan dihasilkan, termasuk radius batas: 4px;. Jika kondisinya salah, bagian gaya ini tidak akan dihasilkan.

pernyataan @else dan @else if

Selain @if, Anda juga dapat menggunakan @else if dan @else untuk menambahkan lebih banyak cabang bersyarat.

  1. $button-size: medium;
  2. .button {
  3. @if $button-size == small {
  4. padding: 5px 10px;
  5. } @else if $button-size == medium {
  6. padding: 10px 25px;
  7. } @else if $button-size == large {
  8. padding: 15px 30px;
  9. } @else {
  10. padding: 10px 20px; // 默认值
  11. }
  12. }

Dalam contoh ini, bergantung pada nilai variabel $button-size, nilai padding yang berbeda dipilih untuk diterapkan ke kelas .button. Jika tidak ada kondisi yang cocok, blok kode di @else akan dieksekusi.

Bersarangnya pernyataan bersyarat

Pernyataan kondisional juga dapat disarangkan untuk menangani logika yang lebih kompleks.

  1. $button-style: flat;
  2. $button-size: medium;
  3. .button {
  4. @if $button-style == flat {
  5. background-color: transparent;
  6. color: #333;
  7. border: 1px solid #333;
  8. @if $button-size == small {
  9. padding: 5px 10px;
  10. } @else if $button-size == medium {
  11. padding: 10px 25px;
  12. } @else if $button-size == large {
  13. padding: 15px 30px;
  14. } @else {
  15. padding: 10px 20px; // 默认值
  16. }
  17. } @else if $button-style == raised {
  18. background-color: #3498db;
  19. color: #fff;
  20. padding: 10px 20px;
  21. border-radius: 4px;
  22. } @else {
  23. // 默认样式
  24. background-color: #db6334;
  25. color: #fff;
  26. padding: 10px 20px;
  27. }
  28. }

Dalam contoh ini, gaya berbeda dipilih untuk diterapkan berdasarkan nilai $button-style dan $button-size. Pendekatan bertingkat ini memungkinkan pembuatan aturan gaya kompleks berdasarkan berbagai kondisi.

Kesimpulannya

Dengan menggunakan pernyataan kondisional, Anda dapat mencapai definisi gaya yang lebih fleksibel dan dinamis di SCSS, dan menghasilkan aturan CSS yang berbeda berdasarkan kondisi yang berbeda, sehingga meningkatkan pemeliharaan dan skalabilitas style sheet.

Tiga jenis loop di SCSS

Di SCSS, ada tiga konstruksi perulangan utama yang dapat digunakan untuk menghasilkan aturan CSS berulang: @for, @each, dan @ while.

@untuk lingkaran

Perulangan @for digunakan untuk menghasilkan gaya berulang kali sesuai dengan langkah dan kondisi tertentu.

tata bahasa dasar

  1. @for $i from <start> through <end> {
  2. // 循环体
  3. }
  • dari<start> melalui<end> : Tentukan nilai awal dan nilai akhir perulangan (termasuk nilai akhir).
  • Variabel $i dapat digunakan di badan perulangan untuk mewakili nilai indeks perulangan saat ini.

Contoh

  1. @for $i from 1 through 3 {
  2. .item-#{$i} {
  3. width: 100px * $i;
  4. }
  5. }

Dalam contoh di atas, tiga kelas .item-1, .item-2, dan .item-3 dihasilkan, dengan lebar masing-masing diatur ke 100px, 200px, dan 300px.

@setiap putaran

Perulangan @each digunakan untuk menelusuri data tipe daftar atau peta dan menghasilkan gaya untuk setiap elemen.

tata bahasa dasar

  1. @each $var in <list or map> {
  2. // 循环体
  3. }
  • $var: mewakili variabel loop saat ini.
  • <list or map>: Dapat berupa daftar (seperti $list: item1, item2, item3;) atau peta (pasangan nilai kunci).

Contoh

  1. $colors: (red, green, blue);
  2. @each $color in $colors {
  3. .text-#{$color} {
  4. color: $color;
  5. }
  6. }

 

Dalam contoh ini, tiga kelas .text-red, .text-green dan .text-blue dihasilkan, dan warna teksnya diatur ke nilai warna yang sesuai.

@sementara putaran

Perulangan @ while berulang kali menghasilkan gaya berdasarkan suatu kondisi hingga kondisi tersebut tidak terpenuhi.

tata bahasa dasar

  1. $i: 1;
  2. @while $i < 4 {
  3. // 循环体
  4. $i: $i + 1; // 更新条件
  5. }
  • $i: sebagai penghitung loop atau variabel kondisi.
  • Kode SCSS apa pun dapat dieksekusi di badan perulangan. Biasanya, variabel kondisi perlu diperbarui di akhir badan perulangan untuk menghindari perulangan tak terbatas.

Contoh

  1. $i: 1;
  2. @while $i < 4 {
  3. .item-#{$i} {
  4. width: 100px * $i;
  5. }
  6. $i: $i + 1;
  7. }

Kode ini menghasilkan tiga kelas .item-1, .item-2 dan .item-3, dan menyetel lebarnya masing-masing menjadi 100px, 200px, dan 300px.

Meringkaskan

Tiga struktur perulangan SCSS @for, @each, dan @ while digunakan untuk melakukan perulangan berdasarkan indeks, melintasi daftar atau jenis data peta, dan menghasilkan gaya berdasarkan perulangan bersyarat masing-masing. Struktur loop ini membuat SCSS lebih kuat dan fleksibel, mampu menghasilkan aturan CSS yang kompleks sesuai kebutuhan.

Fungsi dan penggunaan khusus

Di SCSS, style sheet dapat ditingkatkan dengan fungsi kustom yang menerima parameter dan mengembalikan nilai yang diproses.

Tentukan fungsi khusus

Di SCSS, gunakan kata kunci @function untuk mendefinisikan fungsi, yang dapat memiliki parameter dan nilai kembalian. Misalnya, kita mendefinisikan fungsi untuk menghitung total lebar model kotak suatu elemen:

  1. @function total-width($padding, $border, $margin, $content-width) {
  2. @return $padding + $border + $margin + $content-width;
  3. }

Dalam contoh di atas:

  • lebar total adalah nama fungsinya.
  • Fungsi ini menerima empat parameter: $padding, $border, $margin, $content-width.
  • Pernyataan @return digunakan untuk mengembalikan nilai terhitung.

Gunakan fungsi khusus

Setelah suatu fungsi ditentukan, fungsi tersebut dapat digunakan dalam gaya untuk menghitung dan menghasilkan nilai yang diperlukan. Misalnya:

  1. .element {
  2. width: total-width(10px, 1px, 5px, 100px);
  3. }

 

Dalam contoh ini, fungsi lebar total akan dipanggil dengan parameter 10px, 1px, 5px, dan 100px. Hasil yang dikembalikan oleh fungsi (116px) akan diterapkan ke properti lebar .element.

Tindakan pencegahan

  • Fungsi dapat disertakan dalam file SCSS apa pun dan dapat diatur serta diimpor seperti aturan gaya lainnya.
  • Semua fitur SCSS, seperti pernyataan kontrol (seperti @if, @for, @each, @ while) dan fungsi bawaan, dapat digunakan dalam fungsi.
  • Parameter fungsi dapat berupa tipe data SCSS apa pun, termasuk angka, string, warna, dll.

Pekerjaan rumah

Gunakan SCSS untuk mengganti tema hitam putih halaman

Bahasa Indonesia

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <link rel="stylesheet" href="main.css">
  7. <title>黑白色主题切换</title>
  8. </head>
  9. <body>
  10. <div class="container">
  11. <button id="theme-toggle">切换主题</button>
  12. <div class="box">
  13. <div class="content">
  14. <p>这是一些文本内容。</p>
  15. <p>这是一些文本内容。</p>
  16. <p>这是一些文本内容。</p>
  17. <p>这是一些文本内容。</p>
  18. <p>这是一些文本内容。</p>
  19. <p>这是一些文本内容。</p>
  20. <p>这是一些文本内容。</p>
  21. </div>
  22. </div>
  23. </div>
  24. <script src="main.js"></script>
  25. </body>
  26. </html>

scss

  1. // 定义轻主题的样式变量
  2. $light-theme: (
  3. background-color: white,
  4. text-color: black,
  5. highlight-color: #f0f0f0
  6. );
  7. // 定义暗主题的样式变量
  8. $dark-theme: (
  9. background-color: black,
  10. text-color: white,
  11. highlight-color: #333333
  12. );
  13. // 定义一个混合(mixin)来应用主题样式
  14. // 参数 $theme: 要应用的主题,是一个包含背景色、文本颜色和高亮颜色的映射(map)
  15. @mixin theme($theme) {
  16. background-color: map-get($theme, background-color);
  17. color: map-get($theme, text-color);
  18. // 为 .box 类应用主题的高亮颜色
  19. .box {
  20. background-color: map-get($theme, highlight-color);
  21. }
  22. }
  23. // 应用轻主题样式到 body 元素,并添加过渡效果
  24. body {
  25. @include theme($light-theme);
  26. transition: all 0.3s ease;
  27. }
  28. // 为 body 的 dark 类应用暗主题样式
  29. body.dark {
  30. @include theme($dark-theme);
  31. }
  32. // 设置容器的文本居中和顶部间距
  33. .container {
  34. text-align: center;
  35. margin-top: 20px;
  36. }
  37. // 配置主题切换按钮的样式
  38. #theme-toggle {
  39. padding: 10px 20px;
  40. cursor: pointer;
  41. border: none;
  42. outline: none;
  43. background-color: #007bff;
  44. color: white;
  45. font-size: 16px;
  46. border-radius: 5px;
  47. }
  48. // 鼠标悬停在主题切换按钮上时改变背景色
  49. #theme-toggle:hover {
  50. background-color: #0056b3;
  51. }
  52. // 定义 .box 类的基本样式和过渡效果
  53. .box {
  54. margin: 20px auto;
  55. padding: 20px;
  56. width: 50%;
  57. border: 1px solid #ccc;
  58. transition: all 0.3s ease;
  59. // 内容区域的样式配置
  60. .content {
  61. p {
  62. margin: 10px 0;
  63. }
  64. }
  65. }

Bahasa Inggris

  1. /**
  2. * 为主题切换按钮添加点击事件监听器
  3. * 当按钮被点击时,切换文档主体的黑暗主题样式
  4. *
  5. * 该函数通过toggle方法动态切换body元素的'dark'类,从而实现主题的切换。
  6. * 如果body已经应用了'dark'类,那么点击按钮将移除这个类,反之亦然。
  7. * 这种方式允许用户在黑暗主题和默认主题之间自由切换。
  8. */
  9. document.getElementById('theme-toggle').addEventListener('click', () => {
  10. document.body.classList.toggle('dark');
  11. });