亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
優(yōu)點(diǎn)
缺點(diǎn)
關(guān)於使用 SASS 結(jié)構(gòu)化 CSS 類選擇器的常見問題
使用 SASS 結(jié)構(gòu)化 CSS 類選擇器的意義是什麼?
如何在 SASS 中使用通配符選擇器?
我可以在 SASS 中使用 @extend 指令與類選擇器嗎?
如何使用 SASS 更有效地組織 CSS 代碼?
使用 SASS 結(jié)構(gòu)化 CSS 類選擇器的最佳實(shí)踐是什麼?
如何在 SASS 中使用 mixin 重用 CSS 代碼?
我可以在 SASS 中使用函數(shù)生成 CSS 代碼嗎?
如何在 SASS 中使用 @import 指令組織 CSS 代碼?
如何在 SASS 中使用 & 運(yùn)算符引用父選擇器?
如何在 SASS 中使用 @media 指令創(chuàng)建響應(yīng)式樣式?
首頁 web前端 css教學(xué) 與SASS結(jié)構(gòu)CSS類選擇器

與SASS結(jié)構(gòu)CSS類選擇器

Feb 24, 2025 am 10:01 AM

Structuring CSS Class Selectors with Sass

關(guān)鍵要點(diǎn)

  • BEM 和 SMACSS 等 CSS 命名約定嚴(yán)重依賴 CSS 類選擇器,而使用 Sass 可以使編寫這些選擇器更模塊化和可重用。
  • Sass 中的原生選擇器嵌套允許從文檔根級別的原始塊名稱創(chuàng)建子類名稱,從而簡化代碼並減少對變量或 mixin 等額外輔助工具的需求。
  • BEM mixin 提供了一個(gè)友好的 API,一旦您了解 BEM 的工作原理,就很容易理解,儘管邏輯隱藏在 mixin 後面,這可能會(huì)使生成新的選擇器和類不那麼明顯。
  • Humanified-BEM mixin 旨在通過隱藏 Block-Element-Modifier 專業(yè)術(shù)語來提高代碼的可讀性,但這對於某些開發(fā)人員來說可能涉及過多的抽象。

CSS 命名約定有很多。您可能已經(jīng)了解 BEM 和 SMACSS(後者不僅僅是命名約定)。還有 OOCSS,它更像是一種完整的方法論。它們都嚴(yán)重依賴 CSS 類選擇器,因?yàn)樗鼈兙哂泻軓?qiáng)的可重用性。

使用 Sass 可以幫助以更模塊化的方式編寫這些選擇器。通過選擇器嵌套和 mixin,我們可以提出花哨的瘋狂的解決方案來構(gòu)建所需的 API。在本文中,我將(重新)介紹其中幾種方法,列出我認(rèn)為每種方法的優(yōu)缺點(diǎn)。

原生選擇器嵌套

為了不必重複原始塊名稱而能夠嵌套選擇器,這在 Sass 中一直是一個(gè)長期要求的功能。在 Sass 3.3 版本中,此功能最終已引入。在測試版期間,首先使用非常奇怪的語法,後來在穩(wěn)定版本上線時(shí)更改為更好的語法。 Natalie Weizenbaum 在這篇文章中解釋了更改背後的原因。

基本上,引用選擇器(&)可以用作子類名稱的一部分,以便從文檔的根級別(這意味著此處不需要@at-root)創(chuàng)建第一個(gè)類名稱的另一個(gè)類名稱。

<code>.foo {
  // .foo 的樣式

  &-bar {
    // .foo-bar 的樣式
  }
}</code>

此功能很快就被過度使用來編寫 BEM 選擇器,例如非常流行的媒體對象:

<code>.media {
  // .media 塊的樣式

  &__img {
    // .media__image 元素的樣式

    &--full {
      // .media__image--full 修改后的元素的樣式
    }
  }

  &--new {
    // .media--new 修飾符的樣式
  }
}</code>

之前的代碼將編譯為:

<code>.media {}
.media__img {}
.media__img--full {}
.media--new {}</code>

優(yōu)點(diǎn)

  • 它依賴於原生功能,不需要額外的輔助工具,例如變量或 mixin。
  • 一旦您了解引用選擇器(&)的工作原理,總體上就很容易掌握。

缺點(diǎn)

  • 它公開了 & 語法,如果對於不熟悉 Sass 的開發(fā)人員來說,這可能會(huì)稍微令人困惑,甚至令人恐懼。
  • 除非使用 @at-root,否則嵌套通常不會(huì)在根目錄打印,這可能會(huì)令人不安。

BEM mixin

因?yàn)樵赟ass 3.3 的測試版期間類生成的語法非常難看(@at-root #{&}__element),我們很快就在這里和那裡看到了一些mixin 來隱藏痛苦並提供更友好的API 。

<code>.foo {
  // .foo 的樣式

  &-bar {
    // .foo-bar 的樣式
  }
}</code>

您可以像這樣使用它們:

<code>.media {
  // .media 塊的樣式

  &__img {
    // .media__image 元素的樣式

    &--full {
      // .media__image--full 修改后的元素的樣式
    }
  }

  &--new {
    // .media--new 修飾符的樣式
  }
}</code>

我們也可以以同樣的方式創(chuàng)建一個(gè)塊 mixin,但它不會(huì)像塊那樣有用,因?yàn)閴K只是一個(gè)類名稱。讓我們保持簡單。儘管對於某些人來說,修飾符和元素似乎太長了,所以我們看到一些 e 和 m 在盛開。

<code>.media {}
.media__img {}
.media__img--full {}
.media--new {}</code>

優(yōu)點(diǎn)

  • 此版本提供了一個(gè)友好的 API,一旦您了解 BEM 的工作原理,就很容易理解。

缺點(diǎn)

  • 邏輯隱藏在 mixin 後面,除非您明確知道發(fā)生了什麼,否則生成新的選擇器和類並不那麼明顯。
  • 單個(gè)字母 mixin 可能不是一個(gè)好主意,因?yàn)樗鼈兪估斫?mixin 的用途變得困難。 b 和 m 可以表示很多東西。

Humanified-BEM mixin

最近,我閱讀了 Anders Schmidt Hansen 的一種新的類似 BEM 的方法。其思想是將 Block-Element-Modifier 專業(yè)術(shù)語隱藏在朗讀時(shí)有意義的常用詞彙後面。

<code>@mixin element($element) {
  &__#{$element} {
    @content;
  }
}

@mixin modifier($modifier) {
  &--#{$modifier} {
    @content;
  }
}</code>

在這種情況下,重點(diǎn)是將代碼隱藏在精心命名的 mixin 後面,以便代碼看起來像是在講述一個(gè)故事,因此新的 mixin 實(shí)際上很有用。

<code>.media {
  // .media 塊的樣式

  @include element("image") {
    // .media__image 元素的樣式

    @include modifier("full") {
      // .media__image--full 修改后的元素的樣式
    }
  }

  @include modifier("new") {
    // .media--new 修飾符的樣式
  }
}</code>

Anders 進(jìn)一步使用 is(..) 和 holds(..) mixin。整個(gè)想法讓我想起了我的 when-inside(..) mixin,當(dāng)根據(jù)其上級上下文設(shè)置元素樣式時(shí),它將 & 隱藏在一個(gè)用戶友好的 mixin 後面。

<code>.media {
  // .media 塊的樣式

  @include e("image") {
    // .media__image 元素的樣式

    @include m("full") {
      // .media__image--full 修改后的元素的樣式
    }
  }

  @include m("new") {
    // .media--new 修飾符的樣式
  }
}</code>

優(yōu)點(diǎn)

  • 這種方法有助於提高代碼的可讀性,就像我們開始使用前導(dǎo) is-(由 SMACSS 推廣)為我們的狀態(tài)類命名一樣。
  • 仍然堅(jiān)持特定方法(在本例中為 BEM),但使其更易於開發(fā)人員使用。

缺點(diǎn)

  • 更多的 mixin、更多的輔助工具、更多的東西需要學(xué)習(xí),才能獲得更穩(wěn)定的學(xué)習(xí)曲線。並非每個(gè)人都喜歡處理大量的 mixin 來編寫諸如 CSS 選擇器之類的簡單內(nèi)容。
  • 這對於某些人來說可能過於抽象;並非每個(gè)人都喜歡像閱讀英語一樣閱讀代碼。這取決於情況。

最終想法

請記住,使用任何這些技術(shù)都會(huì)阻止選擇器代碼庫可搜索,因?yàn)檫x擇器在由 Sass 生成之前實(shí)際上並不存在。在選擇器之前添加註釋可以解決這個(gè)問題,但為什麼不一開始就直接編寫選擇器呢?

如果您關(guān)心擁有可搜索的代碼庫,請不要使用新的 Sass 功能來 BEM 化所有選擇器(.b { &__e { } })。

— Kaelig (@kaelig) 2014 年 3 月 12 日

無論如何,朋友們,以下是我知道的用 Sass 編寫 CSS 選擇器最流行的方法,在我和你之間,我不喜歡它們。而且不僅僅是因?yàn)樗阉鲉栴},對我來說這並不是什麼大問題。

我可以看出他們試圖解決的問題,但有時(shí)簡單勝過 DRY。重複根選擇器並不是什麼大問題,它不僅使代碼更易於閱讀,因?yàn)榍短纵^少,而且更接近 CSS。

有時(shí)簡單勝過 DRY。

— Hugo Giraudel (@HugoGiraudel) 2015 年 5 月 19 日

關(guān)於使用 SASS 結(jié)構(gòu)化 CSS 類選擇器的常見問題

使用 SASS 結(jié)構(gòu)化 CSS 類選擇器的意義是什麼?

使用 SASS 結(jié)構(gòu)化 CSS 類選擇器對於維護(hù)乾淨(jìng)、有序和高效的樣式表至關(guān)重要。 SASS(代表 Syntactically Awesome Stylesheets)是一種 CSS 預(yù)處理器,允許開發(fā)人員使用變量、嵌套規(guī)則、mixin 和函數(shù),使 CSS 更具動(dòng)態(tài)性和可重用性。通過結(jié)構(gòu)化類選擇器,您可以創(chuàng)建樣式層次結(jié)構(gòu),從而更容易理解不同元素及其樣式之間的關(guān)係。這可以極大地提高 CSS 代碼的可維護(hù)性和可擴(kuò)展性。

如何在 SASS 中使用通配符選擇器?

通配符選擇器,也稱為通用選擇器,可以在 SASS 中用於選擇與特定模式匹配的任何元素。例如,您可以使用通配符選擇器“*”來選擇所有元素。但是,SASS 不直接支持通配符類名。如果您想選擇類名以特定字符串開頭的元素,則需要使用變通方法,例如使用屬性選擇器。例如,您可以使用選擇器[class^="prefix-"]來選擇所有類名以“prefix-”開頭的元素。

我可以在 SASS 中使用 @extend 指令與類選擇器嗎?

是的,@extend 指令可以在 SASS 中與類選擇器一起使用。 @extend 指令允許一個(gè)選擇器繼承另一個(gè)選擇器的樣式。這對於減少 CSS 代碼中的冗餘非常有用。例如,如果您有兩個(gè)類共享許多相同的樣式,則可以在一個(gè)類中定義這些樣式,然後使用 @extend 指令將這些樣式應(yīng)用於另一個(gè)類。

如何使用 SASS 更有效地組織 CSS 代碼?

SASS 提供了一些功能,可以幫助您更有效地組織 CSS 代碼。其中一項(xiàng)功能是嵌套,它允許您將 CSS 選擇器嵌套在其他選擇器中,從而反映 HTML 結(jié)構(gòu)。這可以使您的 CSS 代碼更易於閱讀和維護(hù)。另一個(gè)功能是變量,它允許您定義可重用的值。這對於維護(hù)樣式的一致性(例如顏色、字體和間距)非常有用。

使用 SASS 結(jié)構(gòu)化 CSS 類選擇器的最佳實(shí)踐是什麼?

使用 SASS 結(jié)構(gòu)化 CSS 類選擇器有幾種最佳實(shí)踐。一種最佳實(shí)踐是使選擇器盡可能具體。這可以幫助防止樣式意外影響其他元素。另一種最佳實(shí)踐是使用有意義的類名來描述元素的目的或功能。這可以使您的 CSS 代碼更易於閱讀和維護(hù)。此外,最好對您的類使用一致的命名約定,例如 BEM(塊、元素、修飾符),以便更容易理解不同類之間的關(guān)係。

如何在 SASS 中使用 mixin 重用 CSS 代碼?

SASS 中的 mixin 是一種定義可以在整個(gè)樣式表中重用的樣式的方法。 mixin 使用 @mixin 指令定義,後跟名稱和 CSS 代碼塊。然後,您可以使用 @include 指令(後跟 mixin 的名稱)在任何選擇器中包含 mixin。這對於減少 CSS 代碼中的冗餘並使其更易於維護(hù)非常有用。

我可以在 SASS 中使用函數(shù)生成 CSS 代碼嗎?

是的,SASS 支持函數(shù),可用於生成 CSS 代碼。 SASS 中的函數(shù)使用 @function 指令定義,後跟名稱和代碼塊。函數(shù)可以接受參數(shù),並返回一個(gè)值,該值可以在您的 CSS 代碼中使用。這對於創(chuàng)建依賴於特定條件或計(jì)算的複雜樣式非常有用。

如何在 SASS 中使用 @import 指令組織 CSS 代碼?

SASS 中的 @import 指令可用於將其他 SASS 文件導(dǎo)入 SASS 文件。這對於將 CSS 代碼組織到單獨(dú)的文件中非常有用,每個(gè)文件都專注於網(wǎng)站樣式的特定部分。例如,您可以為頁眉樣式、頁腳樣式和主要內(nèi)容樣式創(chuàng)建單獨(dú)的 SASS 文件,然後將它們?nèi)繉?dǎo)入主 SASS 文件。

如何在 SASS 中使用 & 運(yùn)算符引用父選擇器?

SASS 中的 & 運(yùn)算符可用於在嵌套規(guī)則中引用父選擇器。這對於創(chuàng)建偽類或偽元素選擇器非常有用。例如,如果您有一個(gè)嵌套規(guī)則用於 .link 規(guī)則內(nèi)的 a:hover,則可以使用 & 運(yùn)算符創(chuàng)建選擇器 .link:hover。

如何在 SASS 中使用 @media 指令創(chuàng)建響應(yīng)式樣式?

SASS 中的 @media 指令可用於創(chuàng)建媒體查詢,允許您根據(jù)查看頁面的設(shè)備的特性(例如其寬度或高度)應(yīng)用不同的樣式。這對於創(chuàng)建適應(yīng)不同屏幕尺寸的響應(yīng)式設(shè)計(jì)非常有用。您可以將 @media 指令用於選擇器中,僅當(dāng)媒體查詢條件滿足時(shí)才應(yīng)用樣式。

以上是與SASS結(jié)構(gòu)CSS類選擇器的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
CSS教程,用於創(chuàng)建加載旋轉(zhuǎn)器和動(dòng)畫 CSS教程,用於創(chuàng)建加載旋轉(zhuǎn)器和動(dòng)畫 Jul 07, 2025 am 12:07 AM

創(chuàng)建CSS加載旋轉(zhuǎn)器的方法有三種:1.使用邊框的基本旋轉(zhuǎn)器,通過HTML和CSS實(shí)現(xiàn)簡單動(dòng)畫;2.使用多個(gè)點(diǎn)的自定義旋轉(zhuǎn)器,通過不同延遲時(shí)間實(shí)現(xiàn)跳動(dòng)效果;3.在按鈕中添加旋轉(zhuǎn)器,通過JavaScript切換類來顯示加載狀態(tài)。每種方法都強(qiáng)調(diào)了設(shè)計(jì)細(xì)節(jié)如顏色、大小、可訪問性和性能優(yōu)化的重要性,以提升用戶體驗(yàn)。

解決CSS瀏覽器兼容性問題和前綴 解決CSS瀏覽器兼容性問題和前綴 Jul 07, 2025 am 01:44 AM

處理CSS瀏覽器兼容性和前綴問題需理解瀏覽器支持差異並合理使用廠商前綴。 1.了解常見問題如Flexbox、Grid支持不一,position:sticky失效,動(dòng)畫表現(xiàn)不同;2.查閱CanIuse確認(rèn)特性支持情況;3.正確使用-webkit-、-moz-、-ms-、-o-等廠商前綴;4.推薦使用Autoprefixer自動(dòng)添加前綴;5.安裝PostCSS並配置browserslist指定目標(biāo)瀏覽器;6.構(gòu)建時(shí)自動(dòng)處理兼容性;7.老項(xiàng)目可用Modernizr檢測特性;8.不必追求所有瀏覽器一致,確

顯示:內(nèi)聯(lián),顯示:塊和顯示:內(nèi)聯(lián)塊之間有什麼區(qū)別? 顯示:內(nèi)聯(lián),顯示:塊和顯示:內(nèi)聯(lián)塊之間有什麼區(qū)別? Jul 11, 2025 am 03:25 AM

Themaindifferencesbetweendisplay:inline,block,andinline-blockinHTML/CSSarelayoutbehavior,spaceusage,andstylingcontrol.1.Inlineelementsflowwithtext,don’tstartonnewlines,ignorewidth/height,andonlyapplyhorizo????ntalpadding/margins—idealforinlinetextstyling

使用CSS剪輯路徑創(chuàng)建自定義形狀 使用CSS剪輯路徑創(chuàng)建自定義形狀 Jul 09, 2025 am 01:29 AM

使用CSS的clip-path屬性可以裁剪元素為自定義形狀,如三角形、圓形缺口、多邊形等,無需依賴圖片或SVG。其優(yōu)勢包括:1.支持circle、ellipse、polygon等多種基本形狀;2.可響應(yīng)式調(diào)整,適配移動(dòng)端;3.易於動(dòng)畫化,可結(jié)合hover或JavaScript實(shí)現(xiàn)動(dòng)態(tài)效果;4.不影響佈局流,僅裁剪顯示區(qū)域。常見用法如圓形裁剪clip-path:circle(50pxatcenter)和三角形裁剪clip-path:polygon(50%0%,1000%,00%)。注意

造型與CSS不同訪問的鏈接 造型與CSS不同訪問的鏈接 Jul 11, 2025 am 03:26 AM

設(shè)置訪問過鏈接的樣式能提升用戶體驗(yàn),尤其在內(nèi)容密集型網(wǎng)站中幫助用戶更好導(dǎo)航。 1.使用CSS的:visited偽類可定義已訪問鏈接樣式,如顏色變化;2.注意瀏覽器出於隱私限制僅允許修改部分屬性;3.顏色選擇應(yīng)與整體風(fēng)格協(xié)調(diào),避免突兀;4.移動(dòng)端可能不顯示該效果,建議結(jié)合其他視覺提示如icon輔助標(biāo)識。

如何使用CSS創(chuàng)建響應(yīng)式圖像? 如何使用CSS創(chuàng)建響應(yīng)式圖像? Jul 15, 2025 am 01:10 AM

要使用CSS創(chuàng)建響應(yīng)式圖片,主要可通過以下方法實(shí)現(xiàn):1.使用max-width:100%和height:auto讓圖片在保持比例的同時(shí)自適應(yīng)容器寬度;2.結(jié)合HTML的srcset和sizes屬性智能加載適配不同屏幕的圖片源;3.利用object-fit和object-position控製圖片裁剪與焦點(diǎn)展示。這些方法共同確保圖片在不同設(shè)備上清晰、美觀地呈現(xiàn)。

什麼是常見的CSS瀏覽器不一致? 什麼是常見的CSS瀏覽器不一致? Jul 26, 2025 am 07:04 AM

不同瀏覽器對CSS解析存在差異,導(dǎo)致顯示效果不一致,主要包括默認(rèn)樣式差異、盒模型計(jì)算方式、Flexbox和Grid佈局支持程度及某些CSS屬性行為不一致。 1.默認(rèn)樣式處理不一致,解決方法是使用CSSReset或Normalize.css統(tǒng)一初始樣式;2.舊版IE的盒模型計(jì)算方式不同,建議統(tǒng)一使用box-sizing:border-box;3.Flexbox和Grid在邊緣情況或舊版本中表現(xiàn)有差異,應(yīng)多測試並使用Autoprefixer;4.某些CSS屬性行為不一致,需查閱CanIuse並提供降級

揭開CSS單元的神秘面紗:PX,EM,REM,VW,VH比較 揭開CSS單元的神秘面紗:PX,EM,REM,VW,VH比較 Jul 08, 2025 am 02:16 AM

CSS單位的選擇取決於設(shè)計(jì)需求和響應(yīng)式要求。 1.px用於固定尺寸,適合精確控制但缺乏彈性;2.em是相對單位,受父元素影響易導(dǎo)致級聯(lián)問題,rem則基於根元素更穩(wěn)定,適合全局縮放;3.vw/vh基於視口大小,適合響應(yīng)式設(shè)計(jì),但需注意極端屏幕下的表現(xiàn);4.選擇時(shí)應(yīng)根據(jù)是否需要響應(yīng)式調(diào)整、元素層級關(guān)係及視口依賴程度來決定,合理搭配使用可提升佈局靈活性與維護(hù)性。

See all articles