您现在的位置是:网站首页> 编程资料编程资料

完美解决webpack打包css背景图片路径问题使用CSS cross-fade()实现背景图像半透明效果的示例代码CSS3为背景图设置遮罩并解决遮罩样式继承问题CSS设置div背景图的实现代码CSS背景图片设置的6个有趣的技巧CSS3 实现响应鼠标移动背景图片漂移效果的用户介绍卡片源码使用css写带纹理渐变背景图的示例代码

2021-09-03 720人已围观

简介 这篇文章主要介绍了完美解决webpack打包css背景图片路径问题,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

在vue组件的style标签内部有如下一段使用背景图片的css代码

 background-image: url("../assets/img/icon_add.png");

在webpack中css-loader的解析配置如下

 { test: /\.(css|less)$/, exclude: path.resolve(__dirname, 'node_modules'), use: ['style-loader', 'css-loader', 'less-loader'] }

打包后在dist目录的发现没有css文件。这是因为css文件被转化成了js文件。

 

此时启动项目,背景图片引入正确,能够正常显示。

2 将css文件提取到单独的文件目录

使用 mini-css-extract-plugin 将css文件单独提取到dist目录下的css目录下。

2.1 loader配置

 { test: /\.(css|less)$/, exclude: path.resolve(__dirname, 'node_modules'), use: [MiniCssExtractPlugin.loader, 'css-loader', 'less-loader'] }

2.2 plugin配置

 new MiniCssExtractPlugin({ filename: 'css/[name][contenthash].css', })

打包后,dist目录结构如下

可以看到此时图片在根目录(dist)目录下,但是css文件处在dist/css/目录下。现在来看一下打包后的css文件是如何引用图片的路径。

2.3 打包结果

 background-image: url(bb65a86a2fe7669e483a56b970bea421.png);

可以看到在dist/css目录下没有bb65a86a2fe7669e483a56b970bea421.png图片。因此图片无法正常显示。理想的情况是

 background-image: url(../bb65a86a2fe7669e483a56b970bea421.png);

3 解决方案

更改loader的配置如下

 { loader: MiniCssExtractPlugin.loader, options: { // 当前的css所在的文件相对于打包后的根路径dist的相对路径 publicPath: '../' } }, 'css-loader', 'less-loader'

总结

分离css文件导致css背景图片路径错误,解决方案的核心是配置publicPath的值,publicPath的值是css文件所在的文件目录相对于根目录的相对路径值。 比如,根路径是/,css文件所在的目录是/css/,因此相对路径是..

意外问题

为什么webpack打包后,css文件被混入到bundle.js文件中,但是图片没有被混入到bundle.js中???

到此这篇关于完美解决webpack打包css背景图片路径问题的文章就介绍到这了,更多相关webpack打包css背景图片路径内容请搜索以前的文章或继续浏览下面的相关文章,希望大家以后多多支持!

相关内容

-六神源码网