為什麼 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 之間的選擇取決於專案和開發團隊的具體需求和要求。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP