為什麼 SASS 被認為比 LESS 更好?


SASS 和 LESS 都是 CSS 預處理器語言,可以幫助開發者更快地編寫 CSS,減少程式碼重複,並建立模組化的樣式表。與其為每個屬性編寫重複的程式碼,Sass 和 Less 允許我們為顏色、字型大小和其他屬性等值定義變數,這些變數可以在整個樣式表中輕鬆重用。這使得更新整個專案的樣式更加容易,並保持設計的整體一致性。

然而,由於若干原因,Sass 被認為比 Less 更好。讓我們瞭解一下它們的功能和特性。這樣您就可以更清楚地瞭解這些預處理器語言,以及為什麼 Sass 是許多開發者和開發團隊的首選。

為什麼 SASS 是更好的選擇

對於更復雜的專案,Sass 比 Less 更好,因為它具有更多功能和能力。

變數

Sass 和 Less 都允許使用變數。在 Sass 中,我們使用 $ 符號宣告變數,而在 Less 中,我們使用 @ 符號。

這是一個例子

SASS

$primary-color: #007bff;
.nav {
   background-color: $primary-color;
}

LESS

@primary-color: #007bff;
.nav {
   background-color: @primary-color;
}

函式

Sass 提供了更廣泛的內建函式,並允許建立自定義函式,而 Less 僅包含一組有限的基本函式。

SASS

$button-bg: #007bff;
$button-color: contrast($button-bg);
button {
   background-color: $button-bg;
   color: $button-color;
}

LESS

@button-bg: #007bff;
@button-color: lighten(@button-bg, 20%);
button {
   background-color: @button-bg;
   color: @button-color;
}

繼承

Sass 和 Less 使用繼承來減少程式碼重複,方法是在多個 CSS 類之間共享樣式。但是,Sass 支援更高階的繼承特性,例如佔位符,它允許更模組化和高效的樣式,而 Less 僅透過 mixin 支援基本繼承。

SASS

%message-shared {
   border: 1px solid #ccc;
   padding: 10px;
   color: #333;
}
.message {
   @extend %message-shared;
}
.success {
   @extend %message-shared;
   border-color: green;
}

LESS

.message-shared { 
   border: 1px solid #ccc; 
   padding: 10px; 
   color: #333; 
} 
.message { 
   .message-shared; 
} 
.success { 
   .message-shared; 
   border-color: green; 
}

社群和資源

Sass 的歷史比 Less 更悠久,並且擁有更大的使用者群。這意味著有更多資源可用於學習和使用 Sass。

Sass 社群開發了許多庫和框架,例如

  • Bourbon

  • Compass 和

  • Susy,

它們可以幫助加快開發速度並提高程式碼質量。此外,還有許多線上教程、文件和支援論壇可用於 Sass。這些資源可以幫助開發者提出問題並獲得幫助。總的來說,Sass 擁有更大且更活躍的社群,這使其成為開發者更具吸引力的選擇。

相容性

此外,Sass 與 Ruby 和 Node.js 相容,而 Less 僅適用於 JavaScript。Sass 可以與各種開發環境和框架一起使用,使其成為更靈活的選擇。例如,Bootstrap、Foundation 和 Materialize 等流行框架都支援 Sass。

示例

在下面的示例中,我們說明了如何使用 Sass 的高階控制結構和繼承來簡化和簡化 CSS 開發,這在 Less 中是不可能的。

在 SASS 中,我們使用 %button-style 佔位符選擇器定義一組通用的按鈕樣式。@extend 指令用於在 .button-primary 和 .button-secondary 類中繼承這些樣式。

然後我們使用 LESS,定義具有通用樣式的 .button-style 類,然後使用巢狀選擇器在 .button-primary 和 .button-secondary 類中包含它。

在輸出中,使用者可以看到 LESS 方法會導致更冗長和重複的程式碼,並且如果將來需要更改樣式,則會使其更難維護。

SASS

%button-style {
   display: inline-block;
   padding: 10px 20px;
   font-size: 16px;
   text-align: center;
   color: #ffffff;
   background-color: #007bff;
   border-radius: 5px;
} 
.button-primary {
   @extend %button-style;
} 
.button-secondary {
   @extend %button-style;
   background-color: #6c757d;
}

LESS

.button-style {
   display: inline-block;
   padding: 10px 20px;
   font-size: 16px;
   text-align: center;
   color: #ffffff;
   background-color: #007bff;
   border-radius: 5px;
} 
.button-primary {
   .button-style;
} 
.button-secondary {
   .button-style;
   background-color: #6c757d;
}

輸出

.button-primary, .button-secondary {
   display: inline-block;
   padding: 10px 20px;
   font-size: 16px;
   text-align: center;
   color: #ffffff;
   background-color: #007bff;
   border-radius: 5px;
} 
.button-secondary {
   background-color: #6c757d;
}

示例

在此示例中,我們解釋了 Sass 和 Less 如何為不同的斷點設定字型大小。Sass 使用對映和迴圈生成 CSS,而 Less 使用單個變數和媒體查詢。Sass 的方法更簡潔高效,可以更輕鬆地管理多個斷點和字型大小。Less 程式碼更長且不那麼動態,需要手動調整才能進行更改。

總的來說,Sass 能夠輕鬆高效地處理複雜的樣式情況是它被認為優於 Less 的原因之一。

SASS

$breakpoints: (
   sm: 576px,
   md: 768px,
   lg: 992px,
   xl: 1200px
);
 
$font-sizes: (
   sm: 14px,
   md: 16px,
   lg: 18px,
   xl: 20px
);
 
@each $bp, $width in $breakpoints {
   @media (min-width: $width) {
      font-size: map-get($font-sizes, $bp);
   }
}

LESS

@breakpoint-sm: 576px;
@breakpoint-md: 768px;
@breakpoint-lg: 992px;
@breakpoint-xl: 1200px;
 
@font-size-sm: 14px;
@font-size-md: 16px;
@font-size-lg: 18px;
@font-size-xl: 20px; 
.my-element {
   @media (min-width: @breakpoint-sm) {
      font-size: @font-size-sm;
   } 
   @media (min-width: @breakpoint-md) {
      font-size: @font-size-md;
   }
   @media (min-width: @breakpoint-lg) {
      font-size: @font-size-lg;
   } 
   @media (min-width: @breakpoint-xl) {
      font-size: @font-size-xl;
   }
}

輸出

@media (min-width: 576px) {
  .my-element {
    font-size: 14px;
  }
}
@media (min-width: 768px) {
  .my-element {
    font-size: 16px;
  }
}
@media (min-width: 992px) {
  .my-element {
    font-size: 18px;
  }
}
@media (min-width: 1200px) {
  .my-element {
    font-size: 20px;
  }
}

結論

使用者瞭解了使 Sass 成為更復雜專案更好選擇的優勢。使用者還了解到 Sass 還擁有更大且更活躍的社群,為開發者提供了更多資源、文件和支援。

最後,Sass 被更廣泛地使用並得到各種開發環境的支援,使其成為複雜 CSS 開發的更通用選擇。但是,Less 仍然可以成為基本 CSS 開發的有用工具。最終,Sass 和 Less 之間的選擇取決於專案和開發團隊的具體需求和要求。

更新於: 2023 年 5 月 11 日

121 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告