2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Sisällysluettelo
Erota globaalit muuttujat ja paikalliset muuttujat
Sisäkkäisen vanhemman valitsimen viite (&)
Perusattribuuttien sisäkkäisyys
SCSS käyttää ehdollisia lausekkeita
Ehdollisten lauseiden sisäkkäisyys
Kolme tyyppistä silmukkaa SCSS:ssä
Mukautetut toiminnot ja käyttö
SCSS (Sassy CSS) on CSS:n esiprosessorikieli. Se tarjoaa enemmän toimintoja ja joustavuutta CSS-pohjaisena, mikä tekee tyylisivujen kirjoittamisesta ja hallinnasta tehokkaampaa ja kätevämpää.
Tässä on joitain SCSS:n etuja:
Yhteenvetona voidaan todeta, että SCSS ei ainoastaan säilytä kaikki CSS:n toiminnot, vaan se sisältää myös edistyneitä ominaisuuksia, kuten muuttujia, sisäkkäisyyttä, miksausta, tuontia jne. Näiden toimintojen avulla kehittäjät voivat kirjoittaa ja hallita tyylisivuja tehokkaammin, ja niitä käytetään yleisesti nykyaikaisissa etu- yksi työkaluista.
kielioppi:
Luettavuus ja ylläpidettävyys:
Toiminnon laajennus:
yhteensopivuus:
oppimiskäyrä:
Yhteenvetona voidaan todeta, että tavalliseen CSS:ään verrattuna SCSS tarjoaa enemmän työkaluja ja ominaisuuksia tyylisivujen kirjoittamisen ja ylläpidon yksinkertaistamiseksi, ja se sopii erityisen hyvin suurten ja monimutkaisten projektien kehittämiseen. Pienissä projekteissa tai yksinkertaisissa muotoilutarpeissa tavallinen CSS voi kuitenkin olla yksinkertaisempi ja kätevämpi.
Ennen kuin opit scss:n, asenna ensin kaksi vscode-laajennusta, jotta scss muunnetaan tavallisiksi CSS-tiedostoiksi myöhempää oppimista varten!
Etsi sass laajennuskaupasta, lataa seuraavat kaksi laajennusta ja käynnistä vscode uudelleen!
Muuttujien ilmoittaminen SCSS:ssä on hyvin yksinkertaista, voit käyttää $-symbolia muuttujien määrittämiseen.
Tässä on yksinkertainen esimerkki muuttujien ilmoittamisesta ja käytöstä SCSS:ssä:
- // 定义变量
- $primary-color: #3498db;
- $secondary-color: #2ecc71;
-
- // 使用变量
- body {
- background-color: $primary-color;
- }
-
- a {
- color: $secondary-color;
- }
Yllä olevassa esimerkissä määritimme kaksi muuttujaa $primary-color ja $secondary-color tallentamaan ensisijaisen värin ja toissijaisen värin. Voimme sitten käyttää näitä muuttujia tyylisäännöissä pitääksemme värit yhtenäisinä ja helposti muokattavissa koko tyylisivun ajan.
Kun SCSS-tiedosto käännetään normaaliksi CSS-tiedostoksi, kaikki muuttujat korvataan niitä vastaavilla arvoilla, joten lopullinen luotu CSS-tiedosto ei sisällä muuttujamäärityksiä.
SCSS:ssä voit käyttää oletusmuuttujia varmistaaksesi, että muuttujalla on vaihtoehtoinen arvo, jos sitä ei ole määritetty. Tämä on erityisen hyödyllistä, kun työskentelet teeman kanssa tai määrität tyylejä.
Tässä on esimerkki oletusmuuttujien ilmoittamisesta ja käytöstä:
- // 声明变量,并设置默认值
- $primary-color: #3498db !default;
- $secondary-color: #2ecc71 !default;
-
- // 使用变量
- body {
- background-color: $primary-color;
- }
-
- a {
- color: $secondary-color;
- }
Yllä olevassa esimerkissä käytimme !default-tunnistetta oletusarvon määrittämiseen. Tämä tarkoittaa, että jos $primary-color tai $secondary-color ei ole määritelty muualla ennen kuin ne lisätään kyseiseen SCSS-tiedostoon, ne käyttävät määritettyjä oletusarvoja (#3498db ja #2ecc71). Jos nämä muuttujat on määritetty ennen tiedoston tuontia, oletusarvot ohitetaan.
Oletusmuuttujien käytön etuna on, että sen avulla voit antaa muuttujille vaihtoehtoisia arvoja ilman, että jo määritettyjä muuttujia korvataan. Tämä on erityisen hyödyllistä luotaessa teemoja tai jaettaessa muuttujia useiden tyylitiedostojen välillä.
Huomautus: paikalliset muuttujat ohittavat globaalit muuttujat
Kun muuttuja, jolla on sama nimi kuin globaalilla muuttujalla, ilmoitetaan uudelleen paikallisessa laajuudessa, paikallinen muuttuja korvaa globaalin muuttujan arvon. Tämä mahdollistaa eri muuttuja-arvojen määrittämisen tietylle valitsimelle tai sekoittimelle vaikuttamatta globaaliin tilanteeseen.
Käytä avainsanaa !global muuttaaksesi paikalliset muuttujat globaaleiksi muuttujiksi
SCSS tarjoaa !global-avainsanan paikallisten muuttujien ilmoittamiseksi globaaleiksi muuttujiksi. Tämä saa paikallisen muuttujan arvon nousemaan globaaliin laajuuteen, jossa se on ilmoitettu, ja korvaa kaikki olemassa olevat samannimiset globaalit muuttujat.
Esimerkki:
- // 全局变量
- $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
- }
Ensimmäisessä esimerkissä paikallinen muuttuja $primary-color .button-valitsimen sisällä ohittaa globaalin muuttujan arvon. Toisessa esimerkissä !global-avainsanaa käyttämällä .button-valitsimen sisällä olevat paikalliset muuttujat muunnetaan globaaleiksi muuttujiksi, mikä vaikuttaa muuttujien arvoihin globaalissa laajuudessa.
Valitsin sisäkkäin mahdollistaa alavalitsimien tyylisääntöjen sisäkkäisyyden ylävalitsimien sisään, esimerkiksi:
- // 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;
- }
- }
- }
- }
- }
Yllä olevassa koodissa .navbar-valitsin sisältää sisäkkäisen ul-, li- ja alivalitsimen. Tämä sisäkkäinen rakenne tekee tyylisäännöistä selkeämpiä ja helpompia hallita.
SCSS:ssä &-symbolia käytetään viittaamaan päävalitsimeen, mikä on erityisen hyödyllistä pseudoluokkien tai pseudoelementtien tapauksessa. Käytä esimerkiksi &:hover-näppäintä viitataksesi nykyisen valitsimen päävalitsimeen ja lisäämällä :hover-tilan tyyli.
- .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 mahdollistaa usean tasoisen valitsimen sisäkkäisyyden, esimerkiksi:
- .container {
- .row {
- .col {
- width: 100%;
- }
- }
- }
SCSS:ssä valitsimien sisäkkäisyyden lisäksi on myös attribuuttien sisäkkäistoiminto, joka on toinen ominaisuus, joka tekee tyylitaulukoista selkeämpiä ja helpompia hallita. Kiinteistöjen sisäkkäisyyden ansiosta toisiinsa liittyvät ominaisuudet voidaan järjestää yhteen objektin muodon tapaan.
Kiinteistöjen sisäkkäisyyttä voidaan käyttää vastaavien ominaisuuksien sijoittamiseen koodilohkoon, esimerkiksi:
- .navbar {
- font: {
- family: Arial, sans-serif;
- size: 16px;
- weight: bold;
- }
- margin: {
- top: 10px;
- bottom: 15px;
- }
- padding: {
- left: 20px;
- right: 20px;
- }
- }
Yllä olevassa esimerkissä fontti-, marginaali- ja täytelohkot sisältävät toisiinsa liittyviä attribuutteja. Tämä organisaatio tekee kunkin lohkon ominaisuuksista selkeämpiä ja helpompia muokata ja ylläpitää.
SCSS:ssä periytyminen (Extend) on erittäin hyödyllinen ominaisuus, jonka avulla yksi valitsin voi periä toisen valitsimen tyylisäännöt. Tämä ominaisuus vähentää päällekkäistä CSS-koodia ja tekee tyylitaulukoista modulaarisempia ja helpompia ylläpitää.
Valitsin periytyminen voidaan saavuttaa @extend-avainsanalla. Esimerkiksi:
- %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;
- }
Yllä olevassa esimerkissä %message-shared on paikkamerkkivalitsin (Placeholder Selector), joka määrittää yleisen tyylijoukon. .success-message ja .error-message perivät %message-shared-tyylin ja lisäävät omat taustavärinsä.
Periytys sopii erityisen hyvin valitsimille, joilla on yhteisiä ominaisuuksia, kuten painikekomponentit, viestilaatikot jne. Perinnön avulla voit käyttää samoja tyylisääntöjä uudelleen eri skenaarioissa ja pitää koodisi puhtaana ja ylläpidettävänä.
Yhteenvetona voidaan todeta, että periytyminen SCSS:ssä on tehokas työkalu, jonka avulla voit välttää tyylien päällekkäisyyksiä ja ylläpitää koodin modulaarisuutta ja selkeyttä. Sitä käytettäessä on kuitenkin kiinnitettävä huomiota valitsimien järjestykseen ja sijaintiin sekä järkevään käyttämällä paikkamerkkiä sen vaikutuksen maksimoimiseksi.
Paikkamerkki % on SCSS:n erityinen valitsin, jota käytetään usein määrittämään tyylisääntöjä, jotka voidaan periä, mutta jotka eivät tuota todellista CSS-tulostetta. Erityisesti:
- %placeholder-selector {
- // 样式规则
- }
Yllä olevassa esimerkissä %placeholder-selector on paikkamerkkivalitsin, joka alkaa %:lla. Se määrittelee joukon tyylisääntöjä, mutta vastaava valitsimen nimi ei näy käännetyssä CSS:ssä.
- .some-class {
- @extend %placeholder-selector;
- // 可选的额外样式
- }
@extend-avainsanan avulla .some-class voi periä %placeholder-selectorin tyylin. Tämä tarkoittaa, että .some-class soveltaa kaikkia %placeholder-selctorissa määritettyjä tyylisääntöjä ja luo vastaavan CSS-tulosteen.
Yhteenvetona voidaan todeta, että paikkamerkkivalitsin% on tehokas työkalu SCSS:ssä, joka voi auttaa kehittäjiä parantamaan tyylisivujen uudelleenkäytettävyyttä ja ylläpidettävyyttä ja vähentämään samalla tarpeetonta CSS-redundanssia.
Mixiinit ovat toinen erittäin tehokas ominaisuus SCSS:ssä, joka mahdollistaa tyylisääntöjen joukon kapseloinnin uudelleenkäytettävään koodilohkoon ja viitata niihin tarvittaessa. Toisin kuin paikkamerkkivalitsin %, mixinit voivat tuottaa suoraan CSS-tulosteen, joten se sopii tilanteisiin, joissa samaa tyyliä on käytettävä useissa paikoissa.
- @mixin mixin-name($parameter1, $parameter2, ...) {
- // 样式规则使用参数
- }
Yllä olevassa esimerkissä @mixin-avainsana määrittää mixinin nimeltä mixin-name, joka voi hyväksyä useita argumentteja (tarvittaessa) ja määrittää sen sisällä joukon tyylisääntöjä.
- .some-class {
- @include mixin-name(value1, value2, ...);
- // 可选的额外样式
- }
Käytä @include-avainsanaa kutsuaksesi mixin valitsimessa ja välittääksesi sille parametreja. Tällä tavalla .some-class soveltaa mixinissä määriteltyjä tyylisääntöjä ja siirtää välitetyt parametriarvot vastaaviin parametrimuuttujiin.
- @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);
- }
Yhteenvetona voidaan todeta, että mix @mixin on tehokas työkalu tyylisääntöjen kapseloimiseen ja uudelleenkäyttöön SCSS:ssä. Se voi parantaa merkittävästi CSS:n ylläpidettävyyttä ja joustavuutta ja sopii erilaisiin monimutkaisiin ja toistuviin tyylivaatimuksiin.
SCSS:ssä ehdollisten lausekkeiden avulla CSS-tyylejä voidaan luoda dynaamisesti tiettyjen ehtojen perusteella. SCSS:n ehdolliset käskyt ovat samanlaisia kuin muiden ohjelmointikielten ehdolliset käskyt, mukaan lukien @if, @else if ja @else.
@if-lause sallii tyylien luomisen ehdon perusteella. Syntaksi on seuraava:
- $use-rounded-corners: true;
-
- .button {
- @if $use-rounded-corners {
- border-radius: 4px;
- }
- }
Jos yllä olevassa esimerkissä muuttujan $use-rounded-corners arvo on tosi, luodaan .button-luokan tyyli, mukaan lukien border-radius: 4px;. Jos ehto on epätosi, tätä tyylin osaa ei luoda.
@if:n lisäksi voit myös käyttää @else if ja @else lisätäksesi ehdollisia haaroja.
- $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; // 默认值
- }
- }
Tässä esimerkissä $button-size-muuttujan arvosta riippuen valitaan erilaisia täytearvoja käytettäväksi .button-luokkaan. Jos vastaavaa ehtoa ei ole, @else-koodilohko suoritetaan.
Ehdolliset lauseet voidaan myös upottaa monimutkaisempaa logiikkaa varten.
- $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;
- }
- }
Tässä esimerkissä eri tyylejä on valittu käytettäväksi $button-style- ja $button-size arvojen perusteella. Tämä sisäkkäinen lähestymistapa mahdollistaa monimutkaisten tyylisääntöjen luomisen useisiin ehtoihin perustuen.
Ehdollisten lausekkeiden avulla voit saavuttaa joustavamman ja dynaamisemman tyylimäärittelyn SCSS:ssä ja luoda erilaisia CSS-sääntöjä eri ehtojen perusteella, mikä parantaa tyylisivun ylläpidettävyyttä ja skaalautuvuutta.
SCSS:ssä on kolme pääsilmukkarakennetta, joita voidaan käyttää toistuvien CSS-sääntöjen luomiseen: @for, @each ja @while.
@for-silmukkaa käytetään toistuvasti luomaan tyylejä tiettyjen vaiheiden ja ehtojen mukaan.
perus kielioppi:
- @for $i from <start> through <end> {
- // 循环体
- }
Esimerkki:
- @for $i from 1 through 3 {
- .item-#{$i} {
- width: 100px * $i;
- }
- }
Yllä olevassa esimerkissä luodaan kolme luokkaa .item-1, .item-2 ja .item-3, joiden leveydet on asetettu vastaavasti 100 pikseliä, 200 pikseliä ja 300 kuvapistettä.
@each-silmukkaa käytetään luettelo- tai karttatyyppitietojen läpikulkuun ja tyylien luomiseen kullekin elementille.
perus kielioppi:
- @each $var in <list or map> {
- // 循环体
- }
Esimerkki:
- $colors: (red, green, blue);
-
- @each $color in $colors {
- .text-#{$color} {
- color: $color;
- }
- }
Tässä esimerkissä luodaan kolme luokkaa .text-red, .text-green ja .text-blue, ja niiden tekstin värit on asetettu vastaaviin väriarvoihin.
@while-silmukka luo toistuvasti tyylejä ehdon perusteella, kunnes ehto ei täyty.
perus kielioppi:
- $i: 1;
- @while $i < 4 {
- // 循环体
- $i: $i + 1; // 更新条件
- }
Esimerkki:
- $i: 1;
- @while $i < 4 {
- .item-#{$i} {
- width: 100px * $i;
- }
- $i: $i + 1;
- }
Tämä koodi luo kolme luokkaa .item-1, .item-2 ja .item-3 ja asettaa niiden leveydeksi 100 pikseliä, 200 pikseliä ja 300 pikseliä.
Kolmea SCSS-silmukkarakennetta @for, @each ja @while käytetään silmukointiin indeksi-, lista- tai karttatyyppitiedon perusteella ja ehdollisiin silmukoihin perustuvien tyylien luomiseen. Nämä silmukkarakenteet tekevät SCSS:stä tehokkaamman ja joustavamman, pystyen luomaan monimutkaisia CSS-sääntöjä tarpeiden mukaan.
SCSS:ssä tyylisivuja voidaan parantaa mukautetuilla funktioilla, jotka hyväksyvät parametrit ja palauttavat käsitellyt arvot.
SCSS:ssä käytä @function-avainsanaa määrittääksesi funktioita, joilla voi olla parametreja ja palautusarvoja. Määritämme esimerkiksi funktion elementin laatikkomallin kokonaisleveyden laskemiseksi:
- @function total-width($padding, $border, $margin, $content-width) {
- @return $padding + $border + $margin + $content-width;
- }
Yllä olevassa esimerkissä:
Kun funktio on määritetty, sitä voidaan käyttää tyyleissä vaadittujen arvojen laskemiseen ja luomiseen. Esimerkiksi:
- .element {
- width: total-width(10px, 1px, 5px, 100px);
- }
Tässä esimerkissä kokonaisleveysfunktiota kutsutaan parametreilla 10px, 1px, 5px ja 100px. Toiminnon palauttama tulos (116px) otetaan käyttöön .elementin leveysominaisuuteen.
Käytä SCSS:ää vaihtaaksesi sivun mustavalkoista teemaa
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');
- });