javascript - 在运行时更改元素的 `backgroundImage` 会干扰类属性
问题描述
div
我在运行时更改了我的背景:
this.style.backgroundImage = "url('./images/back.jpg')";
但是,以前它的类是在 css 中设置的:
.myMainDiv {width: 100%;height: 100%;min-height: 100vh;background-color: #000000;background-position: center;background-repeat: no-repeat;background-size: cover;background-attachment: fixed;}
当我有一张更大的照片时,它工作得很好。但是,当我减小背景图片的尺寸以节省一点内存时,它会按照应有的方式将图片完全拉伸到屏幕上,但在高度下重复图片 3 次。
这到底是什么原因造成的?
解决方案
此代码可以按您的意愿工作(如果未更新,背景将是灰色占位符)。图像质量很差,因为我要求它只有 120 像素正方形。
我还更改了高度.myMainDiv
以确保其高度大于占位符,并设置以确保占位符在不工作width: 120px;
时应垂直重复。background-repeat: no-repeat;
更新所有样式都存储在一个字符串中,以便您可以在需要时通过 JS 应用它。这将覆盖特定于该元素的所有其他 CSS 样式(但不是来自类的样式等),因此您需要小心一点。
cssAllStyles = "min-height: 100vh; background-color: #000000; background-position: center; background-repeat: no-repeat; background-size: cover; background-attachment: fixed;"
var elements = document.getElementsByClassName('myMainDiv');
var requiredElement = elements[0];
requiredElement.style.cssText = cssAllStyles + "background-image: url('https://placeimg.com/120/120/any')";
.myMainDiv {
width: 120px;
height: 300px;
background-image: url('"https://via.placeholder.com/150');
}
<div class="myMainDiv"></div>
推荐阅读
- linux - 在 Haskell 中,在检索时间的同时同步硬件时钟会导致严重的问题吗?
- apache-spark - 我们有火花连续处理的监听器吗?
- docker - Spring Cloud Data Flow:在 Kubernetes 集群中运行示例应用程序“partitioned-batch-job”时出现 Docker URI 错误
- asp.net - google AuthenticationManager.GetExternalLoginInfoAsync() 总是返回 null
- java - 如何区分 RequestInterceptor 中两个/多个端点之间的标头
- android - 我们可以使用 iot 从外部设备控制我们的 Android 设备吗?
- memory - IMFMediaSession::SetTopology() 导致内存不断增长
- apache - 使用 Apache 了解 ASP.NET Core
- react-native - 不能将动画图表与 react-native expo 一起使用
- c# - 模拟接口返回 NULL