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

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

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

CSS 命名約定有很多。您可能已經(jīng)了解 BEM 和 SMACSS(后者不僅僅是命名約定)。還有 OOCSS,它更像是一種完整的方法論。它們都嚴重依賴 CSS 類選擇器,因為它們具有很強的可重用性。

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

原生選擇器嵌套

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

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

<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)點

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

缺點

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

BEM mixin

因為在 Sass 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)建一個塊 mixin,但它不會像塊那樣有用,因為塊只是一個類名稱。讓我們保持簡單。盡管對于某些人來說,修飾符和元素似乎太長了,所以我們看到一些 e 和 m 在盛開。

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

優(yōu)點

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

缺點

  • 邏輯隱藏在 mixin 后面,除非您明確知道發(fā)生了什么,否則生成新的選擇器和類并不那么明顯。
  • 單個字母 mixin 可能不是一個好主意,因為它們使理解 mixin 的用途變得困難。b 和 m 可以表示很多東西。

Humanified-BEM mixin

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

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

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

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

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

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

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

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

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

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

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

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

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

優(yōu)點

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

缺點

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

最終想法

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

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

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

無論如何,朋友們,以下是我知道的用 Sass 編寫 CSS 選擇器最流行的方法,在我和你之間,我不喜歡它們。而且不僅僅是因為搜索問題,對我來說這并不是什么大問題。

我可以看出他們試圖解決的問題,但有時簡單勝過 DRY。重復根選擇器并不是什么大問題,它不僅使代碼更易于閱讀,因為嵌套較少,而且更接近 CSS。

有時簡單勝過 DRY。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

如何在 SASS 中使用 & 運算符引用父選擇器?

SASS 中的 & 運算符可用于在嵌套規(guī)則中引用父選擇器。這對于創(chuàng)建偽類或偽元素選擇器非常有用。例如,如果您有一個嵌套規(guī)則用于 .link 規(guī)則內(nèi)的 a:hover,則可以使用 & 運算符創(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è)計非常有用。您可以將 @media 指令用于選擇器中,僅當媒體查詢條件滿足時才應(yīng)用樣式。

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

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的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)器和動畫 CSS教程,用于創(chuàng)建加載旋轉(zhuǎn)器和動畫 Jul 07, 2025 am 12:07 AM

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

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

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

使用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)整,適配移動端;3.易于動畫化,可結(jié)合hover或JavaScript實現(xiàn)動態(tài)效果;4.不影響布局流,僅裁剪顯示區(qū)域。常見用法如圓形裁剪clip-path:circle(50pxatcenter)和三角形裁剪clip-path:polygon(50%0%,1000%,00%)。注意

顯示:內(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不同訪問的鏈接 造型與CSS不同訪問的鏈接 Jul 11, 2025 am 03:26 AM

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

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

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

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

不同瀏覽器對CSS解析存在差異,導致顯示效果不一致,主要包括默認樣式差異、盒模型計算方式、Flexbox和Grid布局支持程度及某些CSS屬性行為不一致。1.默認樣式處理不一致,解決方法是使用CSSReset或Normalize.css統(tǒng)一初始樣式;2.舊版IE的盒模型計算方式不同,建議統(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è)計需求和響應(yīng)式要求。1.px用于固定尺寸,適合精確控制但缺乏彈性;2.em是相對單位,受父元素影響易導致級聯(lián)問題,rem則基于根元素更穩(wěn)定,適合全局縮放;3.vw/vh基于視口大小,適合響應(yīng)式設(shè)計,但需注意極端屏幕下的表現(xiàn);4.選擇時應(yīng)根據(jù)是否需要響應(yīng)式調(diào)整、元素層級關(guān)系及視口依賴程度來決定,合理搭配使用可提升布局靈活性與維護性。

See all articles