css - 使用 svg-url-loader 在 webpack 中加载 svg

标签 css svg webpack loader data-uri

我在 webpack 工作流中使用 SVG 遇到了很多麻烦。我试图让它与 CSS 中的 background: url(sample.svg) 属性一起显示。单独使用它是行不通的,所以我想我已经使用了加载程序。以下是我使用的步骤。

我用了svg-url-loader加载 SVG。

1. 我通过 npm 安装了 svg-url-loader 并将其添加到我的 module.exports:

 {
        test: /\.svg/,
        use: {
            loader: 'svg-url-loader'
        }
      },

2. 我将其添加到我的 index.js 文件的顶部:

require('svg-url-loader!./images/topography.svg');

3. 我添加了 background-image 和我的 CSS 的 SVG 路径:

body {
  background-image: url("../images/topography.svg");
  background-size: 340px, auto;
  min-height: calc(100vh - 100px);
  margin: 50px;
  background-attachment: fixed;
  letter-spacing: -1px;
}

4. SVG 未呈现到页面。当我在浏览器中检查正文时,我发现了这个:

background: url(data:image/svg+xml,module.exports = __webpack_public_path__ + '8dccca4….svg';);

我对 data-uri 了解不多,所以也许我在那里遇到了问题。

此外,我已经尝试使用不同的 SVG 文件,但没有一个有效。

最佳答案

我遇到了同样的错误。经过一些调查,我发现我添加了另一个 svg 加载器导致了这个问题,所以我通过删除另一个 svg 加载器来修复它:

      {
        test: /\.svg/,
        use: {
            loader: 'svg-url-loader'
        }
      },

      {
        test: /\.svg$/,
        use: [
          "babel-loader",
          {
            loader: "react-svg-loader",
            options: {
              svgo: {
                plugins: [{ removeTitle: false }],
                floatPrecision: 2
              },
              jsx: true
            }
          }
        ]
      }

所以你可能还添加了一些额外的加载器来同时处理 svg 文件,请检查。

关于css - 使用 svg-url-loader 在 webpack 中加载 svg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51886785/

相关文章:

javascript - 使用 jquery 为 SVG 的填充设置动画?

javascript - 在应用程序中的任何位置调用 svg View 元素

html - 将 FontAwesome 图标包含到 SVG 中

css - 如何在 ReactJS 中将 JSON 传递给 Sass?

javascript - 使用 webpack output.target 选项创建 ES6 模块 'equivalent'

node.js - 如何在将 webpack 构建的输出写入磁盘之前将其捕获为字符串?

javascript - 全日历过去一个月的容器样式

css - MVC : which CSS class implements Html. EditorFor() 方法?

jquery - 幻灯片导航控制按钮的自定义图标/图像,如 viber.com

css - 访问链接时突出​​显示图像