预加载图像,然后更改背景JavaScript
preload image then change background javascript
我在脚本标记中使用以下代码更改背景图像。当背景发生变化时,这会导致白闪,我所有的页面都是ajax。我不能只选择像背景这样的背景颜色,因为我也在个人资料页面上使用它,并且每个配置文件都有不同的背景。
是否可以预加载图像然后更改背景以停止白闪? 谢谢
$('body').css('background-image', 'url(../images/waves.jpg)');
$('body').css('background-attachment', 'fixed');
$('body').css('background-size', 'cover');
您可以加载隐藏的图像并在图像加载完成后对其进行更改,如下所示:
function preloadImage(source, destElem) {
var image = new Image();
image.src = source;
image.onload = function () {
var cssBackground = 'url(' + image.src + ')';
$(destElem).css('background-image', cssBackground);
};
}
用法:
preloadImage('images/waves.jpg', 'body');
编辑:将代码包装在函数中。
编辑2:这是一个在更改时没有背景闪光的示例。 http://jsbin.com/admmx/4/edit?html,css,js,output。
您可以使用 Image() 对象预置图像。
var newImg = new Image();
newImg.src = "img2.jpg";
$('body').css('background-image', 'url('+ newImg.src +')');
我不知道它是否适合你,但我会在背景中使用包装器,为内容使用包装器。这样,我就可以为背景的更改添加动画效果,而无需过多担心页面的其余部分。如果你事先知道图片,你可以使用CSS类来顺利地改变它们。
<body>
<div id="bg-wrapper" style="position: absolute; left: 0; top: 0"></div>
<div id="content-wrapper"></div>
</body>
当然,我会编写一些代码来调整浏览器窗口的大小。
这是一个示例小提琴
相关文章:
- 如何使用css动画/javascript使具有背景图像的元素出现
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 强制谷歌为javascript背景图像编制索引
- Javascript通过列表项的函数和css来更改背景颜色
- Javascript没有从数组中选择背景颜色
- 背景图像前显示Javascript警报
- javascript背景图像位置循环
- 通过ID JavaScript显示随机背景图像
- JavaScript背景图像
- 无法在qualtrics上使用javascript显示背景图像
- 使用JavaScript的带有背景图像的径向光标
- 使用Javascript对象为具有两个背景图像的DIV设置样式时出现问题
- 背景's/JavaScript在本地显示/工作,而不是在服务器上
- javascript样式的背景颜色在设置时闪烁.ASP.NET
- JavaScript:为什么不't将背景变化发送给用户's选择(简单)
- 使用javascript更改任意文本的背景颜色
- 如果类中的数字大于0,请使用JavaScript更改CSS背景
- 在用Javascript更改背景颜色后:hover don'不要改变颜色
- 预加载图像,然后更改背景JavaScript
- 在边界上也应用背景-Javascript/CSS