更改正文中的背景图像

IT技术 javascript css
2021-03-15 10:45:03

如何在运行时更改 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; }
4个回答

为此,您需要使用 Javascript。您可以background-image像这样设置body的样式

var body = document.getElementsByTagName('body')[0];
body.style.backgroundImage = 'url(http://localhost/background.png)';

只需确保将 URL 替换为实际URL。

您需要将它放在 body 标签的末尾,或者在文档加载时调用它。
2021-04-27 10:45:03
感谢您提供此解决方案。只有一个问题;为什么不使用document.body代替document.getElementsByTagName('body')[0]
2021-05-07 10:45:03
嗨,谢谢,但我没有从下面的代码中得到任何更改。<script type="text/javascript"> var body = document.getElementsByTagName('body')[0]; body.style.backgroundImage = ' localhost/ABC/images/backgrounds/header-top1.jpg '; </脚本>
2021-05-14 10:45:03
IIRCdocument.body是 DOM 级别 0,并且在历史上得到广泛支持。根据devdocs.io它不是首选,因为如果文档 MIME 类型未设置为text/html,Firefox 可能无法正确处理它application/xhtml+xml
2021-05-19 10:45:03

如果你已经加载了 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>
我尝试在 html 中应用您的代码,但没有任何更改。<script type="text/javascript"> $('body').css('background-image', 'url(../images/backgrounds/header-top1.jpg)'); </脚本>
2021-04-20 10:45:03
对于纯 javascript 代码,您必须使用background语法,而不是backgroungImage. 情商element.style.background = "url('/img/loading/loading.gif') no-repeat center center"
2021-04-23 10:45:03
只是指出,原始问题要求严格的 javascript 答案,这使用了 jquery。下面的答案是根据实际问题执行此操作的正确方法。不知道为什么这被选为最佳答案。
2021-05-08 10:45:03
答案从“如果你已经加载了 JQuery...”开始,很多网站已经这样做了。
2021-05-10 10:45:03

只需在 body 上设置一个 onload 函数:

<body onload="init()">

然后在javascript中做这样的事情:

function init() {
  var someimage = 'changableBackgroudImage';
  document.body.style.background = 'url(img/'+someimage+'.png) no-repeat center center'
}

您可以根据某些条件(例如一天中的时间或其他时间)将 'someimage' 变量更改为您想要的任何值,并且该图像将被设置为背景图像。

如果您的页面有一个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属性选择器分配 meta它选择的第一个开放图图像。执行类似的任务以获取body. 最后,串内插用于分配bodybackground.style路径到打开图图像的值。

如果您希望图像覆盖整个视口并保持固定设置,background-size如下所示:

body.style.background = `url(${meta.content}) center center no-repeat fixed`;
body.style.backgroundSize = 'cover';

使用这种方法,您可以使用 CSS 设置低质量的背景图像占位符,然后使用图像onload事件与高保真图像交换,从而减少感知延迟