javascript - Laggy 淡入淡出背景

标签 javascript jquery html css

我希望我的网页的背景图片随着下一张图片淡入而淡出,我是这样做的:

    var backgrounds = [];
    backgrounds[0] = './img/bg.jpg';
    backgrounds[1] = './img/bg2.jpg';
    backgrounds[2] = './img/bg3.jpg';



function changeBackground() {
    currentBackground++;
if(currentBackground > backgrounds.length-1) currentBackground = 0;

$('.bgContainer').fadeOut(1500,function() {
    $('.bgContainer').attr('src', backgrounds[currentBackground]);
    $('.bgContainer').fadeIn(3000);
});



    setTimeout(changeBackground, 5000);
}

并且它工作正常,但是每次下一个图像在任何其他元素中淡出时都会开始掉帧并变得非常滞后。有什么办法可以减少丢帧吗?

.bgContainer{
position:fixed;
z-index: -1;
width:100vw;
height:100%;
top:0;
}

<img class="bgContainer" src = "./img/bg.jpg">

最佳答案

我不知道你是否可以使用 css transitions 来实现浏览器兼容性,但你可以尝试类似的方法:

.bgContainer {
    transition: opacity 1500ms ease-in-out;
}

$('.bgContainer').css('opacity', 0);

setTimeout(function() {
    $('.bgContainer').attr('src', backgrounds[currentBackground]);
    $('.bgContainer').css('opacity', 1);
}, 1500);

这样您就不会使用 javascript 来更改 css 属性,而是使用 CSS3 来淡化背景的不透明度。

比 javascript 动画慢得多,但只适用于现代浏览器。 ie10+

关于javascript - Laggy 淡入淡出背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22613078/

相关文章:

jQuery 如何设置第一个选项卡处于事件状态?

javascript - 随机CSS位置jquery

html - 将元素固定到容器底部

javascript - 动态添加脚本时捕获js错误

asp.net - 如何使用 ASP.Net Ajax $addHandler 将参数传递给被调用函数

javascript - 在对象上使用过滤器

jquery - 如何让两个<p>标签显示在同一行

javascript - Tinymce + Filemanager = 缺少图像显示浏览按钮

javascript - 创建要绘制的网格

html - 是否有任何 HTML5 UI 框架可以呈现到 Canvas 而不是使用 HTML 元素?