CSS `url()` 中的 `~` 波浪号有啥作用?

Posted

技术标签:

【中文标题】CSS `url()` 中的 `~` 波浪号有啥作用?【英文标题】:What does a `~` tilde in a CSS `url()` do?CSS `url()` 中的 `~` 波浪号有什么作用? 【发布时间】:2017-01-24 22:26:24 【问题描述】:

例如@import url("~./foobar");

看到here,不确定它是特定于包的东西还是实际的 CSS 语法。

【问题讨论】:

@JackMiller 不,这不是选择运算符,它是文件目录的一部分。 【参考方案1】:

CSS @import 路径 <url> 通常是相对于当前工作目录的。

因此,在路径的开头使用前缀 ~ 会告诉 Webpack 的 css-loader 从 node_modules 目录开始“像模块一样”解析导入。

这意味着如果您安装了一个名为 normalize 的节点模块,并且您需要从其中导入一个名为 /normalize.css 的文件,您可以这样做:

@import "~normalize/normalize.css";

在您的链接示例中,在 font-loader/example/test.js 内部有一个名为 font-boon 的模块的导入。

var boon = require('./font-boon');

font-loader/example/test.css 内部,font-boon 模块是@imported,因此它在text.css 中可用。

@import url("~./font-boon");

【讨论】:

so.. 基本上,~ 是否包含 node_module 路径? ~ 显然是 handled by webpack css-loader,raw postcss-import doesn't support it。【参考方案2】:

2021 年 3 月更新

来自 sass-loader 波浪号 '~' 的导入已弃用,建议将其删除。

【讨论】:

@cbp 官方链接已经在评论里了... 哦,对不起,我写的时候一定是瞎了眼…… 请注意,~ 导入在 sass-loader 中已弃用,但在 css-loader 中未弃用。 webpack.js.org/loaders/css-loader/#url【参考方案3】:

使用 @import 语句假定您从 node_modules 文件夹导入。因此,例如,如果您尝试导入 bootstrap.css,则可以使用

@import "~bootstrap/dist/css/bootstrap.css"

也就是说,您放置的是相对于 node_modules 文件夹的路径。

【讨论】:

以上是关于CSS `url()` 中的 `~` 波浪号有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章

模板-haskell中的单双引号/撇号有啥区别?

更改 config.assets.version 号有啥作用?

MySQL自动撇号有啥想法吗?

package.json 中的波浪号(~)和插入符号(^)有啥区别?

package.json 中的波浪号(~)和插入符号(^)有啥区别?

package.json 中的波浪号(~)和插入符号(^)有啥区别?