为什么这个 Less 表达式根据数学运算而成为语法错误?

2023-12-02

我有以下 Less 片段:

@Foo: 50px;

.someClass {
    width: calc(~'(100% - @{Foo}' - 5px);
}

这很好用。但是,如果我将其更改为:

@Foo: 50px;

.someClass {
    width: calc(~'(100% - @{Foo}' + 5px);
}

我们现在有一个ParseError。我们使用的是稍旧版本的 Less,但我已经在官方少预览网站但它还是坏了。

这是一个错误还是我做了一些愚蠢的事情?


这是一个非常有趣的案例。下面的代码可以正常编译并在以下情况下产生预期的输出:--strict-math setting已打开(--strict-math=on).

@Foo: 50px;
.someClass {
  width: calc(e('(100% - @{Foo}') - 5px);
}
.someClass {
  width: calc(e('(100% - @{Foo}') + 5px);
}

当严格数学关闭(默认情况下)时,这两行都会导致编译器错误。下面给出了错误消息,它表明 Less 编译器正在尝试对内部值执行数学运算calc功能。这种激进的编译是 Less 编译器的已知行为.

操作错误:对无效类型进行操作

正如七阶段最大在他的评论中所证实的那样,e()函数(当严格数学打开和关闭时)是正确的,错误消息也符合预期。


理想情况下,应该看到与上述相同的行为~""语法也因为它是替代品e()。但不幸的是,似乎并非如此。无论是否启用严格数学设置,代码都无法编译,显示的错误消息如下:

ParseError:无法解析调用参数或缺少“)”

错误消息表明这是解析错误而不是操作错误。正如 seven-phases-max 所指出的,解析器似乎并不期望算术运算符遵循一个不是数字的值,因此会引发解析器错误。错误消息本来可以更友好:)

仅当操作员处于以下状态时才会出现此问题+ or *而不是当它是- or /. When - or /使用时,它们不能总是被视为数学运算符(因为-用于前缀和/用于font财产为line-height等),因此编译器将它们作为标识符处理,但是+ or *总是一个数学运算符,因此会导致问题。什么时候- or /使用时,它只会导致字符串连接。


下面是解决此问题的推荐方法,因为它不会让编译器认为必须执行某种数学运算(并将其留给用户代理作为 CSS 的一部分来处理):

@Foo: 50px;
.someClass {
  width: calc(~'(100% - @{Foo} - 5px');
}
.someClass {
  width: calc(~'(100% - @{Foo} + 5px');
}

Note:缺少一个右大括号 ())在计算函数中,但这与本例无关。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么这个 Less 表达式根据数学运算而成为语法错误? 的相关文章

  • Webpack / ES6:如何导入样式表

    我看到像 bootstrap 这样的存储库开始在它们的中包含额外的标签package json 文件 例如 style 和 less https github com twbs bootstrap blob v4 0 0 alpha 2 p
  • Intellij IDEA 11:如何从 .less 编译 .css?

    如何在 intellij 中从 less 编译 css 当然这应该很容易 但它让我难住了 有人知道怎么做吗 我写了一个当 LESS 文件发生变化时 它会自动将它们编译为 CSS 您可以配置多个 LESS 目录来监视每个项目 每个目录的输出将
  • 如何在 Node.js 项目中自动执行编译 Twitter Bootstrap 等前端框架的任务?

    如何在 Node js 项目中自动执行编译 Twitter Bootstrap 的任务 我正在编辑 LESS 文件 这些文件编译成 Node js 项目的 Bootstrap 自定义版本 因此我不能只使用在线定制器或预编译的 JavaScr
  • 如何在 webpack 中以正确的顺序导入样式

    我使用 bootstrap css 和一个用 less 编写的附加模板 我将两者导入到我的反应组件的根组件中 不幸的是 即使 less 文件是第二个导入的文件 引导程序中的样式也会推翻 less 样式 有没有办法确保 webpack 中样式
  • 动态改变无点参数

    我想在数据库中存储 less 参数 一个示例用例可能是每个用户根据他或她的偏好更改颜色 我认为最好的方法是解析所有 less 文件以获取参数 然后用户可以设置参数 这些参数将保存在针对用户的数据库中 当请求 less 文件时 处理程序重载可
  • LESS @import:将路径传递给 lessc

    我想在父主题和子主题中使用 LESS 样式表 其中大部分样式表信息由父主题指定 子主题只需覆盖一些文件 这可以通过 LESS 的 Ruby 版本实现 如下所示 var parser new less Parser paths lib Spe
  • 企业云应用程序的 CSS 框架的最佳方法是什么?

    有多种方法可以设置每个页面中元素的样式 在企业应用程序中通常是CSS框架大小增加了约 1 MB 当您的用户使用较慢的互联网连接时 您应该减小 css 框架的大小 我们可以为我们的元素创建新的 CSS 例如 Blah并在 css 框架中对其进
  • 如何扩展具有动态形成选择器的类/混合

    如何扩展使用 组合器动态形成的 Less 类 less 产生预期输出 hello world color red foo extend hello world font size 20px 预期的 CSS 输出 hello world fo
  • 如何使用 16 或 24 列的 bootstrap

    我需要一些帮助将 bootstrap 2 0 4 设置为 16 或 24 列 而不是默认的 12 列 我无法理解我做错了什么我尝试了 bootstrap 站点上的自定义选项 并尝试更改变量中的网格变量 less 文件并使用 Crunch 重
  • 如何将 LESS 集成到 ZendFramework 2 中

    我已经发现本教程 https stephen rees carter net thought integrating less with zend framework the easy way这是为了Zend框架1 我下载少了放在下面项目
  • 如何使用 Grunt 为 LESS 配置 sourceMap?

    我正在使用 grunt 0 4 2 和 grunt contrib less 0 9 0 我希望将我的 LESS 编译成 CSS 并支持源映射 我的 LESS 文件位于public less 主要的称为main less 的编译public
  • SCSS 和 LESS 之间的区别

    我读过有关 SCSS 和 LESS 的内容 但我无法清楚地理解其中的差异 我知道SCSS和LESS都具有更多CSS的功能 我的意思是CSS的扩展 SCSS 和 LESS 有什么不同 哪一个更好 Both Sass https sass la
  • 按名称从 css LESS 列表中提取项目

    如果我有一个不太像的列表 colors red f00 green 0f0 blue 00f 我知道我可以循环列表并获取颜色 但如果我想获取特定的颜色怎么办 说我想做 extract colors green 将 0f0 从列表中删除 有没
  • 当项目中有多个文件时,如何使用 Grunt 配置 LESS 的 sourceMap?

    我有多个 less 文件 我希望将它们处理为匹配的 css 每个文件的 sourceMaps 都与源位于同一文件夹中 这有多难 我用 less 直接执行此操作没有问题 但无法弄清楚如何在 grunt contrib less 中执行此操作
  • 更少的 css 编译器。无法使用变暗属性

    我正在开发一个项目 使用 LESS 作为我的 CSS 编译器 我已经有一个完全工作的循环 可以正确设置背景颜色 我的问题是这样的 使用我当前的代码 当我尝试使用 darken 属性时 编译结果是这样的 SyntaxError 错误评估函数d
  • 删除编译时的 LESS // 注释

    是否可以配置LESS在通过JS编译时删除 注释 我想从输出的 less 文件中删除它们 Less的单行注释 根据文档所述 应该保持沉默 单行注释在 LESS 中也有效 但它们是 沉默的 它们不会出现在编译后的 CSS 输出中 Hi I m
  • lessc:未找到命令

    我使用的是 OS X 8 并且是 Node LESS 的新手 我以为我之前安装了 lessc 当我转到 usr local bin 时 我看到了 lessc 但对于我的生活来说 我无法运行它 每当我运行它时 我都会看到 bash lessc
  • ubuntu 的 CSS 更少(并且自动编译)? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我尝试过 simples 但现在 l
  • 使用 grunt 编译具有不同变量的 LESS

    我有基于 Bootstrap 的 HTML 模板 有不同的颜色 红色 绿色等 颜色正在改变使用 brand变量在variables less 现在我转到这个文件 更改变量 编译 less 文件 进入已编译的 css 文件目录并重命名 CSS
  • 如何使用 webpack 2 分离 css 文件中的 less 文件?

    我可以编译页面上的 less通过 webpack2 但我无法将 less 文件编译成 CSS 文件 webpack config js var path require path var webpack require webpack va

随机推荐

  • 反转数组字符串中与 Javascript 中标点符号匹配的单词

    如何反转该字符串中的单词 包括标点符号 String prototype reverse function return this split reverse join var str This is fun hopefully str r
  • Flutter 项目 - XCode 构建失败

    这几天我一直在处理很多问题 我在pod文件中更新了需要更新的地方 我尝试了太多的方法来修复我的错误 我尝试删除我的 podfile 更新我的 podfile 我尝试 pod 更新 Firebase Firestore 然后我尝试用这种方法来
  • 如何从 Windows 10 UWP 应用连接到 SQL Server 数据库

    我正在尝试从通用 Windows 应用程序连接到本地 MS SQL 数据库 我正在使用 UWP 制作 LOB 应用程序 以支持桌面 平板电脑和移动设备使用 当尝试连接到本地 内联网 SQL Server 数据库时 我习惯于使用sql连接连接
  • scala 编译错误

    我是scala的新手 我最近开始使用 netbeans 编写 scala 程序 我已经安装了 scala 版本 2 11 0 400 及其 netbeans 插件 当我尝试编译我的 scala 代码时 package scalaapplic
  • 如何修改 Fedora 软件包并修复错误

    我有一个来自 Fedora 的老游戏 位于一个名为 6 的包中 它有一个错误 我想添加一些简单的功能 我在这里询问了该过程的一部分 参见如何处理源 RPM 中的构建依赖关系 得到了一些答案 发现学习曲线对于我的老大脑来说实在是太难了 文档往
  • Cygwin bash shell 中的 For 循环,后跟“">”

    当我在 cygwin bash shell 中键入以下命令时 for i in ls do echo i done 我收到一个 gt 要求我继续输入 这与预期的行为相反 为什么 你需要将 for do 和 did 语句分开 试试这个 for
  • python中的零填充右移

    function e t return e lt lt t e gt gt gt 32 t 我在js中有这个方法 我对移位操作不太了解 我想用 python 写这个 我如何在 python 中编写等效代码 因为它不支持JS 中的零填充右移运
  • 使用具有非标准端口的远程存储库

    我正在为远程存储库设置本地 git 项目 远程存储库正在非标准端口 4019 上提供服务 但这不起作用 相反 我收到以下错误消息 ssh connect to host git host de 4019 port 22 Connection
  • Whatsapp 和 Viber 使用哪些机制进行聊天和消息传递

    我正在搜索有关 Whatsapp 和 Viber 的一些信息 他们通过 VOIP 提供免费通话 短信和聊天功能 任何人都可以确定这两个应用程序使用哪种机制 意味着聊天使用了哪种协议以及其他详细信息 以及任何其他可能有助于创建此类聊天应用程序
  • 更改带有选项卡的接受按钮

    我有一个用 C 编写的 Windows 窗体应用程序 它有三个选项卡 我希望接受按钮随活动选项卡一起更改 就像当我在选项卡 1 中时 我希望按钮 1 成为接受按钮 但当我在选项卡 3 中时 我希望按钮 3 成为我的接受按钮 我不知道如何做到
  • 如何为networkD3的sankeyNetwork中的组着色?

    我的节点由名称和组组成 但我似乎无法在桑基图中为组实现不同的颜色 默认颜色为全蓝色 或者使用下面的代码为全黑色 这是我使用的代码 sankeyNetwork Links data links Nodes data nodes Source
  • Android Java UTF-8 JSON

    我的应用程序的一部分在 mysql 数据库上执行查询 通过 php 我在数据库中使用 UTF 8 因为我有像 这样的字母需要出现 我通读了这个问题 因为这看起来几乎是一样的 Android Java UTF 8 HttpClient 问题
  • RMarkdown 自动锚定部分

    嗯 我使用 Markdown 已经一年了 今天突然在标题旁边自动添加了一个 a 标签 有人会知道为什么这些锚点是自动生成的以及我如何删除它们 Pd 解决这个问题的一种方法是使用h1 h2等 但是随着pdf输出 索引被消除 所以它并不能真正解
  • 检查字符串中是否包含对象值的任何部分

    我有一个看起来像这样的字符串 link to page foo bar test 1 另外我有一个看起来像这样的对象 key foo bar test false mock data 我想要实现的事情相当简单 我认为 但也许我在这里错过了显
  • 在 IIS 7.5 中部署 MVC3 - 不断收到 CS1009: 无法识别的转义序列错误消息

    我不断得到 Line 43 public override void Execute Line 44 WriteLiteral Line 45 Line 46 Source File c Windows Microsoft NET Fram
  • 如何在 Spring 中使用列表作为模型属性?

    我的家庭控制器是这样的 RequestMapping public ModelAndView welcome ModelAttribute myValuesInRows List
  • FolderItem.InvokeVerb("Delete") 无需确认

    我正在尝试编写一个工具 该工具将自动存档服务器上的旧日志文件并从存档中删除太旧的文件 并且有问题 我需要使用 powershell 从 ZIP 存档中删除单个文件 所以我这样做 testFile C test logs FirstEntry
  • Avaje - EBean - 部分对象查询禁用延迟加载

    我正在使用 Play 开发一个应用程序 框架 2 1 3 使用 EBean 作为模型层我希望能够执行部分对象查询 并且当我序列化为 JSON 准备将结果发送回用户时 不要按需延迟加载未选择的属性 我尝试将 AutoFetch 设置为 fal
  • 无法在 Rmarkdown 报告中生成交互式绘图

    我有一个 Rmarkdown 文档 其中包含用plotly绘制的图 并且想生成一个html文件 当我点击时它起作用编织为 HTML在 Rstudio 中 但当我在命令行上运行以下命令时则不然 Rscript e require knitr
  • 为什么这个 Less 表达式根据数学运算而成为语法错误?

    我有以下 Less 片段 Foo 50px someClass width calc 100 Foo 5px 这很好用 但是 如果我将其更改为 Foo 50px someClass width calc 100 Foo 5px 我们现在有一