【发布时间】:2015-05-05 15:14:21
【问题描述】:
下面是我用于循环广告横幅的 jQuery 代码。出于某种原因,背景颜色在每个图像淡出之前都会发生变化,尽管在代码中采用了相反的方式?有人知道我在这里可能会出错吗?谢谢。 '#contentHome' Div 是内部自行车广告(类 .advertSlide 的广告)的父 DIV。父 DIV 宽度为 100%,内部的广告具有固定宽度。一个广告有蓝色背景“#103663”和另一个黑色“#000000”。代码旨在在每次图像更改时更改父 div 背景颜色。
我想实现这个顺序:
- 当前广告以自己的背景颜色淡出(bg 颜色 分配给父 DIV:contentHome)
- 然后背景颜色和/或背景图像发生变化
- 然后下一个广告 div(带图像)淡入。
本质上:淡出 > bg 变化 > 淡入
目前:
- 背景颜色变化(因此与广告不匹配)
- 然后广告淡出。
- 然后下一个广告淡入?
所以...做错了:bg Change > FadeOut > FadeIn.
这是我的代码:
sliderInt = 1;
sliderNext = 2;
$(document).ready(function() {
$("#slider > div#myDIV1.advertSlide").fadeIn(1000);
startSlider();
});
function startSlider() {
count = $("#slider > div.advertSlide").size();
loop = setInterval(function(){
if(sliderNext > count) {
sliderNext = 1;
sliderInt = 1;
}
if(sliderNext == 2) {
$("#slider > div.advertSlide").fadeOut(1000).delay(500);
$("#contentHome").delay(2000).css("background-image", "url(images/ssBackground2px.png)").css("background-repeat", "repeat").css("background-color","#103663");
}
if(sliderNext == 1) {
$("#slider > div.advertSlide").fadeOut(1000).delay(500);
$("#contentHome").delay(2000).css("background-image", "none").css("background-color", "#000000");
}
$("#slider > div#myDIV" + sliderNext + ".advertSlide").delay(500).fadeIn(1000);
sliderInt = sliderNext;
sliderNext = sliderNext + 1;
}, 10000)
提前感谢您提供的任何帮助。
【问题讨论】:
-
之前有评论关于在fadeOut中添加背景颜色更改作为回调。刚刚尝试过,代码横幅仍按要求循环,但背景颜色仍在淡出之前发生变化。 FadeOut 时间为 1000,背景更改的 .delay 设置为 2000。是 .delay 的问题吗?我的意图是这会将背景更改延迟到淡出完成之后。
-
图像在蓝色背景上淡出(比如说蓝色图像)。剩下的就是蓝色背景。这将变为黑色背景。新图像现在淡入(比如说黑色图像)。该图像(几秒钟后)然后淡出。剩下的就是黑色背景。这将变为蓝色背景。下一张图像淡入。等等。我不太清楚你所说的不匹配是什么意思。对我来说,上面的顺序是否意味着背景总是与图像的颜色相匹配?抱歉,如果我在这里遗漏了什么。
-
谢谢皮特,这看起来像我所追求的,太好了,还没有尝试过,但你的示例功能就像我所追求的那样。我在问题中错误地提出的唯一一件事是,需要更改颜色的 div 是滑块 div 上方的一个。因此,包含“滑块 div”的 Div 和需要更改颜色的是子“广告”div,而不是 Slider Div。您的代码是否易于适应不同的“选择器 div”上的颜色变化。另外,您知道您使用的数据标签的支持程度吗?谢谢
-
在您的示例中,Pete '#slider' 定义了幻灯片的大小,这很好并且符合我的需要,但它是#slider 位于内部的 Div,需要 100% 的宽度并具有这是背景颜色的变化。感谢您的帮助。
标签: jquery css background-color