立即设置超时
setTimeOut without delay
目标是让图片相互转换。
我开始时,第一张照片的不透明度为1,其他三张照片的透明度为0。
我该如何让它从一开始就开始转换,然后每12秒继续一次转换循环。我不想等待12秒才开始转换
这是我的HTML与内联CSS
<img id="01BrunetteGirl" style="width:100%; opacity:1;" src="images/brunettesmiling.jpg" alt="">
<img id="02ManAndWife" style="width:100%; opacity:0;" src="images/manandwife.jpg" alt="" />
<img id="03GlassesMan" style="width:100%; opacity:0;" src="images/manwithglasses.jpg" alt="">
<img id="04BlondeGirl" style="width:100%; opacity:0;" src="images/blondegirlsmile.jpg" alt="" />
这是我的Javascript
<script>
$(document).ready(function() {
setInterval(function() {
setTimeout(function() {
document.getElementById("01BrunetteGirl").style.opacity = "0";
document.getElementById("02ManAndWife").style.opacity = "1";
document.getElementById("03GlassesMan").style.opacity = "0";
document.getElementById("04BlondeGirl").style.opacity = "0";
}, 3000);
setTimeout(function() {
document.getElementById("01BrunetteGirl").style.opacity = "0";
document.getElementById("02ManAndWife").style.opacity = "0";
document.getElementById("03GlassesMan").style.opacity = "1";
document.getElementById("04BlondeGirl").style.opacity = "0";
}, 6000);
setTimeout(function() {
document.getElementById("01BrunetteGirl").style.opacity = "0";
document.getElementById("02ManAndWife").style.opacity = "0";
document.getElementById("03GlassesMan").style.opacity = "0";
document.getElementById("04BlondeGirl").style.opacity = "1";
}, 9000);
setTimeout(function() {
document.getElementById("01BrunetteGirl").style.opacity = "1";
document.getElementById("02ManAndWife").style.opacity = "0";
document.getElementById("03GlassesMan").style.opacity = "0";
document.getElementById("04BlondeGirl").style.opacity = "0";
}, 12000);
}, 12000);
});
</script>
像下面的一样更改代码
var currentImageIndex = 0;
setInterval(function() {
var imageArrayIds = ["01BrunetteGirl", "02ManAndWife", "03GlassesMan", "04BlondeGirl"];
if(currentImageIndex > 3) {
currentImageIndex = 0;
}
for(var index in imageArrayIds) {
document.getElementById(imageArrayIds[index]).style.opacity = (currentImageIndex == index ? "1" : "0");
}
currentImageIndex++;
}, 3000);
工作演示
使用jQuery动画效果的工作演示
晚了,有一个很好的公认答案,但您可以在Kundan的方法的基础上自动迭代图像,而无需首先在数组中定义它们。此外,只需更改图像的classname
,我们就可以将所有表示属性(如不透明度和动画)移动到样式表中,从而允许您独立于JavaScript选择显示和动画样式。
查看jsFiddle或查看下面的片段
或者看看这个具有不同风格和动画的jsFiddle(但没有更改为JS)
var images = document.querySelectorAll("#images img"),
i=images.length-1;
(function next(){
i++;
images[i-1].className="";
if(i>=images.length){i=0;}
images[i].className="active";
setTimeout(function(){next();},3000);
})();
#images img{
position:absolute;
width:100%;
opacity:0;
transition: all 1.0s;
-moz-transition: all 1.0s;
-webkit-transition: all 1.0s;
-webkit-transform:rotate(180deg) scale(0.2);
transform:rotate(180deg) scale(0.2);
}
#images img.active {
opacity:1;
-webkit-transform:rotate(0deg) scale(1);
transform:rotate(0deg) scale(1);
}
<div id="images">
<img src="http://www.placehold.it/200&text=brunettesmiling.jpg" alt="brunette smiling" />
<img src="http://www.placehold.it/200&text=manandwife.jpg" alt="man and wife" />
<img src="http://www.placehold.it/200&text=manwithglasses.jpg" alt="man with glasses" />
<img src="http://www.placehold.it/200&text=blondegirlsmile.jpg" alt="blonde girl smile" />
</div>
FYI。你可以完全在CSS中完成这项工作。我不推荐它,但它是一种选择。
您可以设置一个非常小的初始延迟时间(例如100),并在函数中将其设置为您想要的延迟时间:
var delay = 100;
function foo() {
document.getElementById("01BrunetteGirl").style.opacity = "1";
document.getElementById("02ManAndWife").style.opacity = "0";
document.getElementById("03GlassesMan").style.opacity = "0";
document.getElementById("04BlondeGirl").style.opacity = "0";
delay = 12000;
setTimeout(foo, delay);
}
相关文章:
- 设置第一次执行的超时
- 当定位模式设置为“0”时,总是达到关于地理定位的超时;仅设备”;
- 为什么页面重新加载会使设置超时无效,以及如何避免
- 立即设置超时
- 如何设置$.ajax请求的超时,并在超时时间过长时进行重做
- iOS Safari Javascript设置超时问题
- 如何将嵌套设置超时转换为承诺
- 如何设置淡出或超时以提醒成功&露天矿2.2中的警告框
- 如何在量角器测试中设置$interval而不是超时
- 如何循环设置超时函数
- 关于设置超时/间隔上下文
- 清除设置超时之前的间隔将不起作用
- 在悬停功能中设置超时
- 延迟设置超时()
- 我们是否需要设置超时进行短轮询
- 如何在firefox-sdk中设置请求超时设置
- 将超时设置为layoutTemplate流星/铁
- Jquery将超时设置为selector
- 清除javascript对象中的超时设置
- MongoError:游标被杀死或超时-Meteor超时设置无效