12

大家 — 我正在查看最近关于 960 Grid System 的演示文稿,刷新 OKC – 2011 年 4 月 19 日,在倒数第二张幻灯片 (101/102) 上,该人建议“如果您要使用 Sass,请使用 Sass,而不是 SCSS 。” 鉴于 SCSS 是新的主要语法,为什么更喜欢 Sass 而不是 SCSS?是否只是为了简洁而不是与 CSS 相似,还是有真正的理由使用 Sass,而不是 SCSS?

4

4 回答 4

20

我想不出一个很好的理由:)

我看了整套幻灯片,我认为演示者(我认为还是与 SASS 项目有联系?)的心态是使用你所知道的来“完成”

据说Sass更短更简洁,演讲者可能对 Sass 了如指掌,但从阅读和编写 CSS 10 多年的个人经验来看,我发现SCSS更直观。我不必学习 Sass 缩进规则,并且 SCSS 和 CSS 中的括号为嵌套提供了视觉缩进线索 - 这与大多数其他语言使用的非常相似,因此任何具有编程/编码背景的人都会熟悉关闭巢穴??

.. 更重要的是,每个有效的 CSS 都已经是有效的 SCSS,因此无需转换即可开始使用它 - 例如,我能够获取我的 Drupal 工作表(全部 29 个!),更改它们的扩展名并在很短的时间内重新编译/压缩它们..从那时起,我已经能够一次取一小块并“Sassify”它,使用嵌套等。我仍然喜欢看到括号和分号,没关系,你使用一次就可以了无论如何编译!

恕我直言,Sass 本身对于大型项目(现有的项目,即没有从头开始构建/验证的项目)来说是一个太高的门槛,因为它可以使用 SCSS 进行模块化

因此,为了遵循原作者(幻灯片)的想法,而不是争论优缺点,我将继续使用我知道的 TYVM :)

于 2011-04-21T15:39:33.177 回答
11

我相信括号中的.scss语法目前是默认的,只是因为它对于从 LESS 和 vanilla CSS 切换到 SASS 的新手来说更熟悉。

缩进.sass语法是 SASS 中的第一个语法,与 HAML 相同(并与HAML建立了终极团队) 。新的括号.scss语法类似于 SASS 的竞争对手 LESS,SASS 和 LESS 都可以通过重命名从 CSS 转换。

缩进.sass语法只有一个缺点:它不允许将函数/mixin 参数拆分为多行。这会使代码更难阅读(示例)。

在实践中,这个问题很少见,可能表明代码设计不佳,需要重构。

缩进.sass语法唯一但决定性的优点是它更清晰,更容易理解,同时同样具有表达力和强大功能。

我创建了一个动画供您考虑差异:

在此处输入图像描述

另外,当您的代码由于缺少分号而无法工作/编译时(并且可能解释器/编译器产生误导性错误消息),您是否不讨厌它?

基本上,缩进的.sass语法只是消除了视觉噪音的膨胀。

当然,这需要一些时间来适应。起初,对于任何有 CSS 或 LESS 经验的人来说,它看起来很陌生。但是一旦你习惯了一点,你会发现自己对 CSS/LESS/SCSS 和 JavaScript 的括号语法感到厌恶,而更喜欢 SASS、HAML、CoffeeScript 和 Python/Ruby 的简洁语法。

于 2013-07-11T09:50:44.153 回答
3

优点: 更干净。更少的视觉噪音。更优雅。

缺点: 最大的缺点:不能使用换行符。这是我唯一不喜欢 SASS 的地方。请参见下面的示例。其余的:对于那些与明显困难的缩进概念作斗争的人来说,进入门槛更高。

在 SASS 中,您被迫遵守规定。所以如果你有

@function -create-gradient-from-color($bgcolor:#000,$depth:6%)
    ...code...

那么你不能这样做,我发现它更干净

@function -create-gradient-from-color(
    $bgcolor:     #000,
    $depth:       6%
)
    ...code...

由于换行符,这将引发错误。

但是你可以在 SCSS 中做到这一点,因为它不关心换行

@function -create-gradient-from-color(
    $bgcolor:     #000,
    $depth:       6%
) {
    ...code...
}

所以我发现自己在可选参数字符串中保持简洁,以防止这种情况。

于 2012-05-28T00:18:38.210 回答
0

我发现 SASS 的打字速度要快得多。

SASS 和 SCSS 都是 CSS 的一个巨大的附加组件 - 如此不同以至于我不想将它们与标准 CSS 混淆。

学习 SASS 并不难——去掉括号,使用制表符来决定嵌套。

于 2013-07-11T07:34:28.433 回答