【问题标题】:Compass don't compile @charset rule指南针不编译@charset 规则
【发布时间】:2014-03-25 04:04:41
【问题描述】:

我的 _base.scss 部分中有 @charset "utf-8" 规则,当我在主文件中导入 _base.scss 时,@charset 规则不编译。 我尝试@viewport {width:device-width;},它编译得很好,但@charset 没有。知道问题出在哪里吗?

是的,这是我的 _base.scss 部分中的第一条规则,我尝试了其他 CSS @rules,它们工作正常,但 @charset 不想在 .css 文件中编译。

【问题讨论】:

    标签: sass compass-sass


    【解决方案1】:

    好的,我花了一些时间来解决这个问题。这是我认为的错误,尽管它可能被认为是 SASS 中的实际“功能”。

    因此,即使您在 SASS 文件中使用以下代码指定 utf-8 编码:

    @charset "UTF-8";
    

    ...如果您不使用任何非 ascii 字符,那么它实际上会删除字符集定义。目前(据我所知)在任何 SASS 发行版中都没有解决此问题的方法 - 我看起来很难。

    因此,为了强制将字符集定义呈现到输出 .css 文件中,我添加了以下包含非 ascii 字符并使其立即开始输出字符集的虚拟类:

    //In your main .scss file - first line, first character:
    @charset "UTF-8";
    [more code...]
    

    然后,在任何属于 SASS 编译的文件中,添加以下规则:

    .force-UTF-8{
        content: "¡";
    }
    

    您可以将规则命名为任何您想要的名称,并且您可以将该倒置感叹号更改为您想要的任何其他名称,只要它是一个非 ascii 字符即可。您可以通过按住“alt”并在小键盘上点击“0-1-6-1”来键入该字符(至少在 Windows 上)。只需 google 非 ascii 字符,您应该就能弄清楚。

    我知道这不太理想,但它确实有效。

    【讨论】:

      【解决方案2】:

      基于the underlying SASS for @charset,它看起来必须在样式表的第一行:

      添加@charset "encoding-name";在样式表的开头 (在任何空格或 cmets 之前),Sass 会将其解释为 给定的编码。请注意,无论您使用什么编码,它都必须是 可转换为 Unicode。

      【讨论】:

      • 这没有帮助,因为我已经走那条路了。我遇到了与 OP 相同的问题,即使使用 charset 指令作为第一行/字符或样式表,我的 SASS 仍然不会输出 charset 规则。还有其他想法吗?我有另一个具有相同设置的项目,它输出@charset“UTF-8”;进入css,所以这行不通很奇怪......!
      猜你喜欢
      • 2018-08-17
      • 2011-10-06
      • 2013-12-29
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多