我尝试使用CSS属性设置背景图像,但使用webpack导入/导出。我遇到了CSS规则不适用的问题,并且在开发控制台上显示划掉了,但我不确定为什么或如何修复它。
body {
margin: 0;
max-height: 100vh;
background-size: cover;
background-repeat: no-repeat;
}
HTML代码是
<html>
<head>
<meta charset="utf-8" />
<title>Asset Management</title>
<script src="bundle.js" defer></script>
</head>
<body>
<div id="content"></div>
</body>
</html>
导出的JS为:
import Background from './background.png';
export const setBackGroundImage = () => {
let body = document.querySelector('body');
body.style.background = `url(${Background})`;
};
导入的JS为:
import './style.css';
import { setBackGroundImage } from './initial-page-load';
setBackGroundImage();
我知道这个设置是完全不必要的,但它是顶部,课程步骤,以适应webpack。
当我在dist/中加载index.html时,它显示https://i.imgur.com/38ljGad.png和CSS文件规则被划掉并被https://i.imgur.com/aAz1GF7.png覆盖,这使得图像重复。
我不知道为什么会发生这种情况,并希望得到任何帮助。我试过直接在CSS上将图像设置为背景图像,这是可行的,但我想练习webpack,并被困在我错过的东西上。
谢谢!
2条答案
按热度按时间fnvucqvd1#
更新您的
setBackgroundImage()
函数到这个
而不是做你想做的事我用你提供的东西进行了测试,这似乎解决了我的问题。
v9tzhpje2#
CSS
background
属性简写包含其他背景属性的默认值,这些属性覆盖了CSS选择器,因为它比元素上的内联属性(JavaScript负责)更不具体。如果只更改负责背景图像的background-image
,则可以避免此冲突。这里有一个简单的例子来说明:
正如您所看到的,设置了
background
的元素没有继承background-repeat`值。如果在检查器中展开background属性(通常在速记属性旁边有一个小箭头),您应该能够看到值已被更改。