τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Πίνακας περιεχομένων
Διαφοροποίηση προεπιλεγμένων μεταβλητών
Διάκριση μεταξύ καθολικών μεταβλητών και τοπικών μεταβλητών
Ένθετη αναφορά επιλογέα γονέα (&)
ορίστε το σύμβολο κράτησης θέσης
σύμβολο κράτησης θέσης κληρονομιάς
Πλεονεκτήματα και ισχύοντα σενάρια
Πλεονεκτήματα και ισχύοντα σενάρια
Το SCSS χρησιμοποιεί εντολές υπό όρους
Προσαρμοσμένες λειτουργίες και χρήση
Ορίστε προσαρμοσμένες λειτουργίες
Χρησιμοποιήστε προσαρμοσμένες λειτουργίες
Η SCSS (Sassy CSS) είναι μια γλώσσα προεπεξεργαστή για CSS Παρέχει περισσότερες λειτουργίες και ευελιξία με βάση το CSS, καθιστώντας τη σύνταξη και τη διαχείριση των φύλλων στυλ πιο αποτελεσματική και βολική.
Ακολουθούν ορισμένα πλεονεκτήματα του SCSS:
Συνοπτικά, το SCSS όχι μόνο διατηρεί όλες τις λειτουργίες του CSS, αλλά εισάγει επίσης προηγμένα χαρακτηριστικά, όπως μεταβλητές, ένθεση, μίξη, εισαγωγή κ.λπ. ένα από τα εργαλεία.
γραμματική:
Αναγνωσιμότητα και δυνατότητα συντήρησης:
Επέκταση λειτουργίας:
συμβατότητα:
καμπύλη εκμάθησης:
Συνοψίζοντας, σε σύγκριση με το συνηθισμένο CSS, το SCSS παρέχει περισσότερα εργαλεία και δυνατότητες για την απλοποίηση της γραφής και της συντήρησης φύλλων στυλ και είναι ιδιαίτερα κατάλληλο για την ανάπτυξη μεγάλων και πολύπλοκων έργων. Ωστόσο, για μικρά έργα ή απλές ανάγκες στυλ, το απλό CSS μπορεί να είναι πιο απλό και βολικό.
Πριν μάθετε scss, εγκαταστήστε πρώτα δύο πρόσθετα στο vscode για να μετατρέψετε το scss σε συνηθισμένα αρχεία CSS για μετέπειτα εκμάθηση!
Αναζητήστε το sass στο κατάστημα προσθηκών, κατεβάστε τα δύο παρακάτω πρόσθετα και επανεκκινήστε το vscode!
Η δήλωση μεταβλητών στο SCSS είναι πολύ απλή, μπορείτε να χρησιμοποιήσετε το σύμβολο $ για να ορίσετε μεταβλητές.
Ακολουθεί ένα απλό παράδειγμα που δείχνει πώς να δηλώνετε και να χρησιμοποιείτε μεταβλητές στο SCSS:
- // 定义变量
- $primary-color: #3498db;
- $secondary-color: #2ecc71;
-
- // 使用变量
- body {
- background-color: $primary-color;
- }
-
- a {
- color: $secondary-color;
- }
Στο παραπάνω παράδειγμα, ορίσαμε δύο μεταβλητές $primary-color και $secondary-color για να αποθηκεύσουμε το κύριο χρώμα και το δευτερεύον χρώμα αντίστοιχα. Στη συνέχεια, μπορούμε να χρησιμοποιήσουμε αυτές τις μεταβλητές σε κανόνες στυλ για να διατηρήσουμε τα χρώματα συνεπή και εύκολα να τροποποιηθούν σε όλο το φύλλο στυλ.
Όταν ένα αρχείο SCSS μεταγλωττίζεται σε ένα κανονικό αρχείο CSS, όλες οι μεταβλητές θα αντικατασταθούν με τις αντίστοιχες τιμές τους, επομένως το τελικό αρχείο CSS που δημιουργείται δεν θα περιέχει δηλώσεις μεταβλητών.
Στο SCSS, μπορείτε να χρησιμοποιήσετε προεπιλεγμένες μεταβλητές για να διασφαλίσετε ότι μια μεταβλητή έχει μια εναλλακτική τιμή εάν δεν έχει οριστεί. Αυτό είναι ιδιαίτερα χρήσιμο όταν εργάζεστε με θέμα ή διαμορφώνετε στυλ.
Ακολουθεί ένα παράδειγμα του τρόπου δήλωσης και χρήσης προεπιλεγμένων μεταβλητών:
- // 声明变量,并设置默认值
- $primary-color: #3498db !default;
- $secondary-color: #2ecc71 !default;
-
- // 使用变量
- body {
- background-color: $primary-color;
- }
-
- a {
- color: $secondary-color;
- }
Στο παραπάνω παράδειγμα, χρησιμοποιήσαμε την ετικέτα !default για να ορίσουμε την προεπιλεγμένη τιμή. Αυτό σημαίνει ότι εάν το $primary-color ή το $secondary-color δεν οριστούν αλλού πριν εισαχθούν σε αυτό το αρχείο SCSS, θα χρησιμοποιήσουν τις καθορισμένες προεπιλεγμένες τιμές (#3498db και #2ecc71). Εάν αυτές οι μεταβλητές έχουν οριστεί πριν από την εισαγωγή του αρχείου, οι προεπιλεγμένες τιμές θα αγνοηθούν.
Το πλεονέκτημα της χρήσης προεπιλεγμένων μεταβλητών είναι ότι σας επιτρέπει να παρέχετε εναλλακτικές τιμές για μεταβλητές χωρίς να αντικαθιστάτε ήδη καθορισμένες μεταβλητές. Αυτό είναι ιδιαίτερα χρήσιμο για τη δημιουργία θεμάτων ή την κοινή χρήση μεταβλητών σε πολλά αρχεία στυλ.
Σημείωση: οι τοπικές μεταβλητές αντικαθιστούν τις καθολικές μεταβλητές
Όταν μια μεταβλητή με το ίδιο όνομα με μια καθολική μεταβλητή δηλώνεται εκ νέου σε ένα τοπικό πεδίο, η τοπική μεταβλητή αντικαθιστά την τιμή της καθολικής μεταβλητής. Αυτό επιτρέπει τον καθορισμό διαφορετικών μεταβλητών τιμών για έναν συγκεκριμένο επιλογέα ή μίκτη χωρίς να επηρεάζεται η παγκόσμια κατάσταση.
Χρησιμοποιήστε τη λέξη-κλειδί !global για να μετατρέψετε τις τοπικές μεταβλητές σε καθολικές μεταβλητές
Το SCSS παρέχει τη λέξη-κλειδί !global για να δηλώνει ρητά τις τοπικές μεταβλητές ως καθολικές μεταβλητές. Αυτό προκαλεί την προώθηση της τιμής μιας τοπικής μεταβλητής στο καθολικό εύρος όπου δηλώνεται, αντικαθιστώντας οποιαδήποτε υπάρχουσα καθολική μεταβλητή με το ίδιο όνομα.
Παράδειγμα:
- // 全局变量
- $primary-color: #3498db;
-
- .button {
- // 局部变量,覆盖全局变量
- $primary-color: #cc582e;
- background-color: $primary-color; // 使用局部变量值
- }
-
- // 使用 !global 将局部变量变为全局变量
- $primary-color: #cddb34;
-
- .button {
- // 使用 !global 将局部变量变为全局变量
- $primary-color: #2ecc71 !global;
- }
-
- body {
- background-color: $primary-color; // 这里使用的是已变为全局的 $primary-color
- }
Στο πρώτο παράδειγμα, η τοπική μεταβλητή $primary-color μέσα στον επιλογέα .button παρακάμπτει την τιμή της καθολικής μεταβλητής. Στο δεύτερο παράδειγμα, χρησιμοποιώντας τη λέξη-κλειδί !global, οι τοπικές μεταβλητές μέσα στον επιλογέα .button μετατρέπονται σε καθολικές μεταβλητές, επηρεάζοντας έτσι τις τιμές των μεταβλητών στο καθολικό εύρος.
Η ένθεση επιλογέα επιτρέπει την ένθεση κανόνων στυλ για θυγατρικούς επιλογείς μέσα σε γονικούς επιλογείς, για παράδειγμα:
- // SCSS代码
- .navbar {
- background-color: #333;
- padding: 10px;
-
- ul {
- list-style: none;
- margin: 0;
- padding: 0;
-
- li {
- display: inline-block;
- margin-right: 10px;
-
- a {
- text-decoration: none;
- color: #fff;
-
- &:hover {
- text-decoration: underline;
- }
- }
- }
- }
- }
Στον παραπάνω κώδικα, ο επιλογέας .navbar περιέχει ένα ένθετο ul, li και έναν υποεπιλογέα. Αυτή η ένθετη δομή κάνει τους κανόνες στυλ πιο σαφείς και ευκολότερους στη διαχείριση.
Στο SCSS, το σύμβολο & χρησιμοποιείται για να αναφέρεται σε έναν γονικό επιλογέα, ιδιαίτερα χρήσιμο στην περίπτωση ψευδοκλάσεων ή ψευδοστοιχείων. Για παράδειγμα, χρησιμοποιήστε το &:hover για να αναφέρετε τον γονικό επιλογέα του τρέχοντος επιλογέα και να προσθέσετε ένα στυλ κατάστασης :hover.
- .button {
- background-color: #3498db;
- color: #fff;
- padding: 8px 16px;
- border: none;
- text-align: center;
- text-decoration: none;
- display: inline-block;
-
- &:hover {
- background-color: #2980b9;
- }
- }
Το SCSS επιτρέπει πολλαπλά επίπεδα ένθεσης επιλογέα, για παράδειγμα:
- .container {
- .row {
- .col {
- width: 100%;
- }
- }
- }
Στο SCSS, εκτός από την ένθεση επιλογέα, υπάρχει και η δυνατότητα ένθεσης χαρακτηριστικών, η οποία είναι μια άλλη δυνατότητα που κάνει τα φύλλα στυλ πιο καθαρά και ευκολότερα στη διαχείριση. Η ένθεση ιδιοτήτων επιτρέπει τις σχετικές ιδιότητες να οργανωθούν μαζί, παρόμοια με τη μορφή ενός αντικειμένου.
Η ένθεση ιδιοτήτων μπορεί να χρησιμοποιηθεί για την τοποθέτηση σχετικών ιδιοτήτων σε ένα μπλοκ κώδικα, για παράδειγμα:
- .navbar {
- font: {
- family: Arial, sans-serif;
- size: 16px;
- weight: bold;
- }
- margin: {
- top: 10px;
- bottom: 15px;
- }
- padding: {
- left: 20px;
- right: 20px;
- }
- }
Στο παραπάνω παράδειγμα, τα μπλοκ γραμματοσειράς, περιθωρίου και συμπλήρωσης περιέχουν σχετικά χαρακτηριστικά. Αυτή η οργάνωση καθιστά τις ιδιότητες σε κάθε μπλοκ πιο σαφείς και ευκολότερες στην τροποποίηση και διατήρηση.
Στο SCSS, η κληρονομικότητα (Extend) είναι μια πολύ χρήσιμη δυνατότητα που επιτρέπει σε έναν επιλογέα να κληρονομήσει τους κανόνες στυλ ενός άλλου επιλογέα. Αυτή η δυνατότητα μειώνει τον διπλότυπο κώδικα CSS και κάνει τα φύλλα στυλ πιο αρθρωτά και ευκολότερα στη συντήρηση.
Η κληρονομικότητα επιλογέα μπορεί να επιτευχθεί χρησιμοποιώντας τη λέξη-κλειδί @extend. Για παράδειγμα:
- %message-shared {
- border: 1px solid #ccc;
- padding: 10px;
- color: #333;
- }
-
- .success-message {
- @extend %message-shared;
- background-color: lightgreen;
- }
-
- .error-message {
- @extend %message-shared;
- background-color: lightcoral;
- }
Στο παραπάνω παράδειγμα, το %message-shared είναι ένας επιλογέας κράτησης θέσης που ορίζει ένα κοινό σύνολο στυλ. Τα .success-message και .error-message αντίστοιχα κληρονομούν το στυλ %message-shared και προσθέτουν τα δικά τους χρώματα φόντου.
Η κληρονομικότητα είναι ιδιαίτερα κατάλληλη για επιλογείς με κοινά χαρακτηριστικά, όπως στοιχεία κουμπιών, πλαίσια μηνυμάτων κ.λπ. Μέσω της κληρονομικότητας, μπορείτε να επαναχρησιμοποιήσετε τους ίδιους κανόνες στυλ σε διαφορετικά σενάρια, ενώ διατηρείτε τον κώδικά σας καθαρό και διατηρήσιμο.
Συνοψίζοντας, η κληρονομικότητα στο SCSS είναι ένα ισχυρό εργαλείο που μπορεί να σας βοηθήσει να αποφύγετε την επικάλυψη στυλ και να διατηρήσετε την αρθρωτή και σαφήνεια του κώδικά σας, ωστόσο, όταν το χρησιμοποιείτε, πρέπει να προσέχετε τη σειρά και τη θέση των επιλογέων και το εύλογο χρήση του επιλογέα θέσης για να μεγιστοποιηθεί η επίδρασή του.
Το σύμβολο κράτησης θέσης % είναι ένας ειδικός επιλογέας στο SCSS που χρησιμοποιείται συχνά για τον καθορισμό κανόνων στυλ που μπορούν να κληρονομηθούν αλλά δεν δημιουργούν πραγματική έξοδο CSS. ΕΙΔΙΚΑ:
- %placeholder-selector {
- // 样式规则
- }
Στο παραπάνω παράδειγμα, %placeholder-selector είναι ένας επιλογέας κράτησης θέσης που ξεκινά με %. Ορίζει ένα σύνολο κανόνων στυλ, αλλά το αντίστοιχο όνομα επιλογέα δεν θα εμφανίζεται στο μεταγλωττισμένο CSS.
- .some-class {
- @extend %placeholder-selector;
- // 可选的额外样式
- }
Η χρήση της λέξης-κλειδιού @extend επιτρέπει στο .some-class να κληρονομήσει το στυλ του %placeholder-selector. Αυτό σημαίνει ότι το .some-class θα εφαρμόσει όλους τους κανόνες στυλ που ορίζονται στο %placeholder-selector και θα δημιουργήσει την αντίστοιχη έξοδο CSS.
Συνοπτικά, ο επιλογέας κράτησης θέσης% είναι ένα ισχυρό εργαλείο στο SCSS που μπορεί να βοηθήσει τους προγραμματιστές να βελτιώσουν την επαναχρησιμοποίηση και τη δυνατότητα συντήρησης των φύλλων στυλ, μειώνοντας παράλληλα τον περιττό πλεονασμό CSS.
Οι μίξεις είναι ένα άλλο πολύ ισχυρό χαρακτηριστικό στο SCSS που επιτρέπει την ενθυλάκωση ενός συνόλου κανόνων στυλ σε ένα μπλοκ κώδικα που μπορεί να επαναχρησιμοποιηθεί και στη συνέχεια να γίνεται αναφορά όπου χρειάζεται. Σε αντίθεση με τον επιλογέα κράτησης θέσης %, τα mixins μπορούν να δημιουργήσουν απευθείας έξοδο CSS, επομένως είναι κατάλληλο για τις περιπτώσεις όπου το ίδιο στυλ χρειάζεται να χρησιμοποιηθεί σε πολλά μέρη.
- @mixin mixin-name($parameter1, $parameter2, ...) {
- // 样式规则使用参数
- }
Στο παραπάνω παράδειγμα, η λέξη-κλειδί @mixin ορίζει ένα mixin που ονομάζεται mixin-name που μπορεί να δεχτεί πολλαπλά ορίσματα (αν χρειάζεται) και ορίζει ένα σύνολο κανόνων στυλ μέσα σε αυτό.
- .some-class {
- @include mixin-name(value1, value2, ...);
- // 可选的额外样式
- }
Χρησιμοποιήστε τη λέξη-κλειδί @include για να καλέσετε το mixin στον επιλογέα και να του μεταβιβάσετε παραμέτρους. Με αυτόν τον τρόπο, το .some-class θα εφαρμόσει τους κανόνες στυλ που ορίζονται στο mixin και θα εφαρμόσει τις τιμές παραμέτρων που έχουν περάσει στις αντίστοιχες μεταβλητές παραμέτρων.
- @mixin button-style($background-color, $text-color) {
- display: inline-block;
- padding: 10px 20px;
- border: none;
- border-radius: 4px;
- background-color: $background-color;
- color: $text-color;
- text-align: center;
- text-decoration: none;
- font-size: 16px;
- cursor: pointer;
- transition: background-color 0.3s ease;
-
- &:hover {
- background-color: darken($background-color, 10%);
- }
- }
- .button-primary {
- @include button-style(#3498db, #fff);
- }
-
- .button-secondary {
- @include button-style(#2ecc71, #fff);
- }
Συνοπτικά, το mix @mixin είναι ένα ισχυρό εργαλείο για την ενθυλάκωση και την επαναχρησιμοποίηση κανόνων στυλ στο SCSS. Μπορεί να βελτιώσει σημαντικά τη συντηρησιμότητα και την ευελιξία του CSS και είναι κατάλληλο για διάφορες σύνθετες και επαναλαμβανόμενες απαιτήσεις στυλ.
Στο SCSS, οι εντολές υπό όρους επιτρέπουν στα στυλ CSS να δημιουργούνται δυναμικά με βάση συγκεκριμένες συνθήκες. Οι δηλώσεις υπό όρους στο SCSS είναι παρόμοιες με τις προτάσεις υπό όρους σε άλλες γλώσσες προγραμματισμού, συμπεριλαμβανομένων των @if, @else if και @else.
Η δήλωση @if επιτρέπει τη δημιουργία στυλ με βάση μια συνθήκη. Η σύνταξη έχει ως εξής:
- $use-rounded-corners: true;
-
- .button {
- @if $use-rounded-corners {
- border-radius: 4px;
- }
- }
Στο παραπάνω παράδειγμα, εάν η τιμή της μεταβλητής $use-rounded-corners είναι αληθής, δημιουργείται το στυλ της κλάσης .button, συμπεριλαμβανομένου του border-radius: 4px;. Εάν η συνθήκη είναι ψευδής, αυτό το τμήμα του στυλ δεν θα δημιουργηθεί.
Εκτός από το @if, μπορείτε επίσης να χρησιμοποιήσετε τα @else if και @else για να προσθέσετε περισσότερους κλάδους υπό όρους.
- $button-size: medium;
-
- .button {
- @if $button-size == small {
- padding: 5px 10px;
- } @else if $button-size == medium {
- padding: 10px 25px;
- } @else if $button-size == large {
- padding: 15px 30px;
- } @else {
- padding: 10px 20px; // 默认值
- }
- }
Σε αυτό το παράδειγμα, ανάλογα με την τιμή της μεταβλητής $button-size, επιλέγονται διαφορετικές τιμές padding που θα εφαρμοστούν στην κλάση .button. Εάν δεν υπάρχει συνθήκη αντιστοίχισης, το μπλοκ κώδικα στο @else θα εκτελεστεί.
Οι εντολές υπό όρους μπορούν επίσης να ενσωματωθούν για να χειριστούν πιο περίπλοκη λογική.
- $button-style: flat;
- $button-size: medium;
-
- .button {
- @if $button-style == flat {
- background-color: transparent;
- color: #333;
- border: 1px solid #333;
-
- @if $button-size == small {
- padding: 5px 10px;
- } @else if $button-size == medium {
- padding: 10px 25px;
- } @else if $button-size == large {
- padding: 15px 30px;
- } @else {
- padding: 10px 20px; // 默认值
- }
- } @else if $button-style == raised {
- background-color: #3498db;
- color: #fff;
- padding: 10px 20px;
- border-radius: 4px;
- } @else {
- // 默认样式
- background-color: #db6334;
- color: #fff;
- padding: 10px 20px;
- }
- }
Σε αυτό το παράδειγμα, επιλέγονται διαφορετικά στυλ για εφαρμογή με βάση τις τιμές $button-style και $button-size. Αυτή η ένθετη προσέγγιση καθιστά δυνατή τη δημιουργία πολύπλοκων κανόνων στυλ με βάση πολλαπλές συνθήκες.
Χρησιμοποιώντας εντολές υπό όρους, μπορείτε να επιτύχετε πιο ευέλικτο και δυναμικό ορισμό στυλ στο SCSS και να δημιουργήσετε διαφορετικούς κανόνες CSS με βάση διαφορετικές συνθήκες, βελτιώνοντας έτσι τη δυνατότητα συντήρησης και επεκτασιμότητας του φύλλου στυλ.
Στο SCSS, υπάρχουν τρεις κύριες δομές βρόχου που μπορούν να χρησιμοποιηθούν για τη δημιουργία επαναλαμβανόμενων κανόνων CSS: @for, @each και @while.
Ο βρόχος @for χρησιμοποιείται για την επανειλημμένη δημιουργία στυλ σύμφωνα με συγκεκριμένα βήματα και συνθήκες.
βασική γραμματική:
- @for $i from <start> through <end> {
- // 循环体
- }
Παράδειγμα:
- @for $i from 1 through 3 {
- .item-#{$i} {
- width: 100px * $i;
- }
- }
Στο παραπάνω παράδειγμα, δημιουργούνται τρεις κλάσεις .item-1, .item-2 και .item-3, με πλάτη ρυθμισμένα σε 100px, 200px και 300px αντίστοιχα.
Ο βρόχος @each χρησιμοποιείται για τη διέλευση δεδομένων τύπου λίστας ή χαρτογράφησης και τη δημιουργία στυλ για κάθε στοιχείο.
βασική γραμματική:
- @each $var in <list or map> {
- // 循环体
- }
Παράδειγμα:
- $colors: (red, green, blue);
-
- @each $color in $colors {
- .text-#{$color} {
- color: $color;
- }
- }
Σε αυτό το παράδειγμα, δημιουργούνται τρεις κλάσεις .text-red, .text-green και .text-blue και τα χρώματα του κειμένου τους ορίζονται σε αντίστοιχες τιμές χρώματος.
Ο βρόχος @while δημιουργεί επανειλημμένα στυλ με βάση μια συνθήκη έως ότου η συνθήκη δεν πληρούται.
βασική γραμματική:
- $i: 1;
- @while $i < 4 {
- // 循环体
- $i: $i + 1; // 更新条件
- }
Παράδειγμα:
- $i: 1;
- @while $i < 4 {
- .item-#{$i} {
- width: 100px * $i;
- }
- $i: $i + 1;
- }
Αυτός ο κώδικας δημιουργεί τρεις κλάσεις .item-1, .item-2 και .item-3 και ορίζει τα πλάτη τους σε 100px, 200px και 300px αντίστοιχα.
Οι τρεις δομές βρόχου SCSS @for, @each και @while χρησιμοποιούνται για βρόχο ανά ευρετήριο, λίστα διασταύρωσης ή δεδομένα τύπου χάρτη και για τη δημιουργία στυλ που βασίζονται σε βρόχους υπό όρους αντίστοιχα. Αυτές οι δομές βρόχου κάνουν το SCSS πιο ισχυρό και ευέλικτο, ικανό να δημιουργεί πολύπλοκους κανόνες CSS σύμφωνα με τις ανάγκες.
Στο SCSS, τα φύλλα στυλ μπορούν να βελτιωθούν με προσαρμοσμένες συναρτήσεις που δέχονται παραμέτρους και επιστρέφουν επεξεργασμένες τιμές.
Στο SCSS, χρησιμοποιήστε τη λέξη-κλειδί @function για να ορίσετε συναρτήσεις, οι οποίες μπορεί να έχουν παραμέτρους και τιμές επιστροφής. Για παράδειγμα, ορίζουμε μια συνάρτηση για τον υπολογισμό του συνολικού πλάτους μοντέλου πλαισίου ενός στοιχείου:
- @function total-width($padding, $border, $margin, $content-width) {
- @return $padding + $border + $margin + $content-width;
- }
Στο παραπάνω παράδειγμα:
Μόλις οριστεί μια συνάρτηση, μπορεί να χρησιμοποιηθεί σε στυλ για τον υπολογισμό και τη δημιουργία των απαιτούμενων τιμών. Για παράδειγμα:
- .element {
- width: total-width(10px, 1px, 5px, 100px);
- }
Σε αυτό το παράδειγμα, η συνάρτηση συνολικού πλάτους θα κληθεί με τις παραμέτρους 10px, 1px, 5px και 100px. Το αποτέλεσμα που επιστρέφεται από τη συνάρτηση (116 εικονοστοιχεία) θα εφαρμοστεί στην ιδιότητα πλάτους του στοιχείου.
Χρησιμοποιήστε το SCSS για να αλλάξετε το ασπρόμαυρο θέμα της σελίδας
html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <link rel="stylesheet" href="main.css">
- <title>黑白色主题切换</title>
- </head>
- <body>
- <div class="container">
- <button id="theme-toggle">切换主题</button>
- <div class="box">
- <div class="content">
- <p>这是一些文本内容。</p>
- <p>这是一些文本内容。</p>
- <p>这是一些文本内容。</p>
- <p>这是一些文本内容。</p>
- <p>这是一些文本内容。</p>
- <p>这是一些文本内容。</p>
- <p>这是一些文本内容。</p>
- </div>
- </div>
- </div>
-
- <script src="main.js"></script>
- </body>
- </html>
scss
- // 定义轻主题的样式变量
- $light-theme: (
- background-color: white,
- text-color: black,
- highlight-color: #f0f0f0
- );
-
- // 定义暗主题的样式变量
- $dark-theme: (
- background-color: black,
- text-color: white,
- highlight-color: #333333
- );
-
- // 定义一个混合(mixin)来应用主题样式
- // 参数 $theme: 要应用的主题,是一个包含背景色、文本颜色和高亮颜色的映射(map)
- @mixin theme($theme) {
- background-color: map-get($theme, background-color);
- color: map-get($theme, text-color);
-
- // 为 .box 类应用主题的高亮颜色
- .box {
- background-color: map-get($theme, highlight-color);
- }
- }
-
- // 应用轻主题样式到 body 元素,并添加过渡效果
- body {
- @include theme($light-theme);
- transition: all 0.3s ease;
- }
-
- // 为 body 的 dark 类应用暗主题样式
- body.dark {
- @include theme($dark-theme);
- }
-
- // 设置容器的文本居中和顶部间距
- .container {
- text-align: center;
- margin-top: 20px;
- }
-
- // 配置主题切换按钮的样式
- #theme-toggle {
- padding: 10px 20px;
- cursor: pointer;
- border: none;
- outline: none;
- background-color: #007bff;
- color: white;
- font-size: 16px;
- border-radius: 5px;
- }
-
- // 鼠标悬停在主题切换按钮上时改变背景色
- #theme-toggle:hover {
- background-color: #0056b3;
- }
-
- // 定义 .box 类的基本样式和过渡效果
- .box {
- margin: 20px auto;
- padding: 20px;
- width: 50%;
- border: 1px solid #ccc;
- transition: all 0.3s ease;
-
- // 内容区域的样式配置
- .content {
- p {
- margin: 10px 0;
- }
- }
- }
js
- /**
- * 为主题切换按钮添加点击事件监听器
- * 当按钮被点击时,切换文档主体的黑暗主题样式
- *
- * 该函数通过toggle方法动态切换body元素的'dark'类,从而实现主题的切换。
- * 如果body已经应用了'dark'类,那么点击按钮将移除这个类,反之亦然。
- * 这种方式允许用户在黑暗主题和默认主题之间自由切换。
- */
- document.getElementById('theme-toggle').addEventListener('click', () => {
- document.body.classList.toggle('dark');
- });