为什么 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 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告