css - SASS/SCSS 用相对路径编译 css 文件 sass cli
问题描述
我在使用相对路径编译 scss 时遇到问题。
这是我的文件结构:
src/
├── css/
│ ├── bootstrap.scss
│ ├── main.scss
├── fonts/
│ ├── fonts.css
│ ├── font1.woff2
├── index.html
├── main.css /* Compiled css */
主要.scss:
@import './bootstrap-init';
@import '../fonts/fonts';
字体.css:
@font-face {
font-family: 'font1';
src: url('./font1.woff2') format('woff2');
}
如果您查看我的fonts.css
, src: url()
,则 url 指向正确的文件,即src/fonts/font1.woff2
. 但是,当其编译为 后src/main.css
,src: url()
现在指向src/font1.woff2
哪个不退出。
此处针对 LESS 提出了一个类似的问题:LESS importing CSS and relative paths
我正在使用 sass CLI,这就是我目前所拥有的:
sass --watch css/main.scss main.css
我将如何解决这个问题?我可以将路径替换为始终指向根文件夹,但这似乎不是一个好方法......
解决方案
您正在混淆 CSS 导入和 SASS 导入。
CSS 文件中的@import
语句将导致浏览器下载导入的 css 文件,就好像它是<style>
文档中的另一个单独的标签一样。因此,该导入文件中的所有路径都是相对于自身的。
SCSS 文件中的@import
语句将导致 SASS 编译器将导入的 css 文件编译到您的主要 sass 输出中,就好像您已将其复制并粘贴在那里一样。所以 SASS 文件中的路径总是相对于输出的文件。
如评论中所述,最好不要将 .CSS 文件混入 .SCSS 文件中。而是始终对所有内容使用 SASS,您可以使用 SASS 变量来存储字体文件的路径。
推荐阅读
- python - 使用 SequenceMatcher 查找多个字符串中的常见片段
- typescript - 在 Typescript 严格模式下调用方法
- reactjs - React 本机功能没有按应有的方式工作
- php - 从另一个 php 运行 php,而调用者无需等待被调用的 php 结束
- sql - 我的目标是返回一个结果集,其中每年(从日期开始)它将返回会议和非会议的计数
- node.js - 在发布请求 Elastic Beanstalk 时出现 nginx 500 错误
- android - Android R隐藏状态栏->向下移动视图并出现一个黑色矩形
- javascript - 使用 yarn Plug n Play 安装 React 应用程序
- php - 正则表达式:如何捕获以匹配字符集开头的组
- .htaccess - 301 到无扩展页面,仅当它存在时