如何在运行时更改CSS中的背景图像?我在身体中有以下背景图像,可以在运行时更改图像吗?
body {
height: 100%;
background: #fff8db url(../images/backgrounds/header-top.jpg) no-repeat center top;
/*background-color: #fff8db;*/
/*background-size: 1650px 900px;*/
font-family: Arial, Verdana, Helvetica, sans-serif;
font-size:12px;
font-weight:normal;
color:#404040;
line-height:20px; }
答案 0 :(得分:56)
您需要使用Javascript。您可以为身体设置background-image
的样式。
var body = document.getElementsByTagName('body')[0];
body.style.backgroundImage = 'url(http://localhost/background.png)';
请确保使用实际网址替换网址。
答案 1 :(得分:21)
如果你已经加载了JQuery,你可以这样做:
$('body').css('background-image', 'url(../images/backgrounds/header-top.jpg)');
修改强>:
首先在head标签中加载JQuery:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
然后调用Javascript以在页面上发生某些事情时更改背景图像,例如当它完成加载时:
<script type="text/javascript">
$(document).ready(function() {
$('body').css('background-image', 'url(../images/backgrounds/header-top.jpg)');
});
</script>
答案 2 :(得分:5)
只需在身体上设置一个onload函数:
<body onload="init()">
然后在javascript中执行以下操作:
function init() {
var someimage = 'changableBackgroudImage';
document.body.style.background = 'url(img/'+someimage+'.png) no-repeat center center'
}
您可以更改某些图片&#39;根据某些条件(例如一天中的某个时间等)变量到您想要的任何值,并且该图像将被设置为背景图像。
答案 3 :(得分:0)
如果您的网页上有一张Open Graph图片,通常用于社交分享,您可以使用它在运行时使用vanilla JavaScript设置背景图片,如下所示:
<script>
const meta = document.querySelector('[property="og:image"]');
const body = document.querySelector("body");
body.style.background = `url(${meta.content})`;
</script>
以上内容使用document.querySelector
和Attribute Selectors 分配 meta
它选择的第一个Open Graph图像。执行类似的任务以获得body
。最后,字符串插值用于将body
background.style
路径的值分配给Open Graph图像。
如果您希望图片覆盖整个视口并保持固定设置background-size
,请执行以下操作:
body.style.background = `url(${meta.content}) center center no-repeat fixed`;
body.style.backgroundSize = 'cover';
使用此方法,您可以使用CSS设置低质量背景图像占位符,稍后使用图像onload
事件与高保真图像交换,从而减少感知延迟。 / p>