八进制字面量在严格模式下是不允许的。

34

我正在使用Angular 2。

当我在SCSS文件中使用它时,它运行良好。

.text::after {
  content: "\00a0\00a0";
}

然而,当我移动它时

styles: [``]

它显示:

未捕获的语法错误:严格模式下不允许使用八进制字面值。

我知道在styles: [``]中的代码需要是CSS代码。

然后我尝试了

styles: [`
    .text::after {
      content: "  ";
    }
`]

但是屏幕直接显示出了  ,我该如何正确书写?

3个回答

50

你需要对它进行转义

.text::after {
  content: "\\00a0\\00a0";  // now it's just a simple plain string
}

"use strict" 是 JavaScript 1.8.5(ECMAScript 版本 5)中引入的新功能。

其中,

  • 不允许使用八进制数值文字
  • 不允许使用转义字符
  • 查看更多...

1
W3schools以提供虚假信息和不良实践而臭名昭著,建议链接到Mozilla MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode。 - Skere

2

或者你可以在 \ 前面加上 u (unicode)

  .text::after {
    content: "\u00a0\u00a0"
  }

0

存在一个问题,\00a0 值不是八进制数(八进制字符为 0-7),而是十六进制数,因此请使用以下内容:

.text::after {
  content: "\x00a0\x00a0";
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接