如何在React和NextJS中从CSS加载背景图片

时间:2019-04-03 05:16:53

标签: css reactjs next.js

图像不是从用于背景的CSS文件加载的,而是在jsx中加载的

在CSS文件中,我像下面这样使用

.main-banner {
  position: relative;
  height: 910px;
  z-index: 1;
  background: transparent url(../../static/images/banner-bg1.jpg) right top no-repeat;
}

图片网址绝对正确

和这样的配置文件

//next.config.js
const withImages = require('next-images');
const withCSS = require('@zeit/next-css')

module.exports = withImages(withCSS({
    cssLoaderOptions: {
        url: false
    }
}))

实际上是什么问题?

谢谢

2 个答案:

答案 0 :(得分:2)

您的静态文件被部署到Web的根目录。与编译的js和CSS文件相同。

因此,您可以使用以下网址访问它们:url(/static/images/banner-bg1.jpg)

有关this github问题的更多信息。

答案 1 :(得分:1)

我在css prop背景图像中收到了[object Module]。 url-loader选项中的标志esModule: false解决了该问题。

const withCSS = require('@zeit/next-css');
const nextConfig = withCSS({
    webpack(config, options) {
        config.module.rules.push({
            test: /\.(png|jpg|gif|svg|eot|ttf|woff|woff2)$/,
            use: {
                loader: 'url-loader',
                options: {
                    limit: 100000,
                    esModule: false,
                    name: '[name].[ext]'
                }
            }
        });
        return config;
    }
});