如何在启动另一个循环功能时通过单击停止 jquery 循环功能
How to stop jquery loop function by a click while starting another loop function
嗨,我是编程的初学者,所以我不太熟悉使用 jQuery,但我想用它解决问题。
我正在尝试制作一个 "animation/Slideshow",其中我有两个不同的绿色烟雾图像,它们会淡入淡出,所以它的移动有点像 'real' 烟雾。我可以在 jQuery 中做到这一点,所以它是循环的,但是我想在单击特定按钮时停止绿色烟雾循环的这个功能,同时另一个类似的循环功能开始,但是使用另一种颜色的烟雾图像,比如红色或蓝色。
我在 jQuery 中有此代码:
function startSlideshow(){
$(".greensmoke1").fadeIn(2000).delay(1500).fadeOut(2000); //13000
$(".greensmoke2").delay(5000).fadeIn(2000).delay(1500).fadeOut(2000, startSlideshow); //55000
}
$(document).ready(function(){
startSlideshow();
});
我的css:
.greensmoke1 {
background-position: center;
background-image: url(game/scene11.png);
width: 880px;
height: 660px;
background-size: 100%;
background-repeat: no-repeat;
position: relative;
margin: 0 auto;
overflow: hidden;
display: none;
}
.greensmoke2 {
background-position: center;
background-image: url(game/scene11b.png);
width: 880px;
height: 660px;
background-size: 100%;
background-repeat: no-repeat;
position: relative;
margin: 0 auto;
overflow: hidden;
display: none;
}
我不知道如何制作一个停止循环的按钮,所以我尝试在 CSS 中制作一个可点击的框,当你点击它时,烟雾 "visibility" 会是设置为 "hidden"。它有效,但对我来说似乎有点混乱。
$(function() {
$("#button").click(function(e){
$(".greensmoke1").css("visibility", "hidden");
$(".greensmoke2").css("visibility", "hidden");
});
}
我有点希望当您单击#button 时它会停止循环但同时开始一个新循环直到您单击另一个按钮。
我希望你能帮助它困扰我两天了!谢谢!
更新
我只是尝试像这样添加 Vladimir 的代码:
$(document).ready(function() {
function startSlideshow(){
$(".greensmoke1").fadeIn(2000).delay(1500).fadeOut(2000); //13000
$(".greensmoke2").delay(5000).fadeIn(2000).delay(1500).fadeOut(2000, startSlideshow); //55000
}
$(document).ready(function(){
startSlideshow();
});
$("#button").on("click",function(){
$(".greensmoke1").css ("visibility", "hidden");
$(".greensmoke2").css ("visibility", "hidden");
$(".bluesmoke1").fadeIn(2000).delay(1500).fadeOut(2000); //13000
$(".bluesmoke2").delay(5000).fadeIn(2000).delay(1500).fadeOut(2000, startSlideshow); //5500
});
});
我添加了 ("visibility","hidden");因为我想阻止绿烟(隐藏它们,即使它们是 display:none;在 css 中)。该按钮与之配合使用,因为绿色烟雾消失了,但它并没有被蓝色烟雾动画取代。即使我没有添加 ("visibility","hidden");代码。
我真的不知道这段代码有什么问题,因为当我点击它隐藏烟雾的按钮时它起作用了,但它不会开始添加蓝色烟雾.. :/
我去试试guest271314的代码,回来更新! :)
你可以试试:
$(document).ready(function(){
$("#button").on('click',function(){
$(".greensmoke1").fadeIn(2000).delay(1500).fadeOut(2000); //13000
$(".greensmoke2").delay(5000).fadeIn(2000).delay(1500).fadeOut(2000, startSlideshow); //5500
}
}
或类似的东西。我认为您可以使用任何元素代替 #button
。
如果有帮助,请告诉我。
尝试
$(document).ready(function () {
// added `class*=smoke` selector for `greensmooke` or `bluesmoke`
var smoke = $("[class*=smoke]");
function startSlideshow() {
$(".greensmoke1").fadeIn(2000).delay(1500).fadeOut(2000)
.siblings(".greensmoke2").delay(5000).fadeIn(2000)
.delay(1500).fadeOut(2000, function () {
if (smoke.data("stop")) {
smoke.stop(true, true)
} else {
startSlideshow()
}
});
};
startSlideshow();
$("button").on("click", function () {
// stop slideshow
smoke.data("stop", true)
// check `background-image` , `backgroundColor`
.css("backgroundColor", smoke.eq(0)
// toggle `background-image` , `backgroundColor`
.css("backgroundColor") === "rgb(0, 128, 0)" ? "blue" : "green")
// start slideshow
.data("stop", false);
startSlideshow()
})
});
$(document).ready(function () {
var smoke = $("[class*=smoke]");
function startSlideshow() {
$(".greensmoke1").fadeIn(2000).delay(1500).fadeOut(2000)
.siblings //13000
(".greensmoke2").delay(5000).fadeIn(2000)
.delay(1500).fadeOut(2000, function () {
if (smoke.data("stop")) {
smoke.stop(true, true)
} else {
startSlideshow()
}
}); //55000
};
startSlideshow();
$("button").on("click", function () {
smoke.data("stop", true)
.css("backgroundColor", smoke.eq(0).css("backgroundColor") === "rgb(0, 128, 0)" ? "blue" : "green")
.data("stop", false);
startSlideshow()
})
});
.greensmoke1, .greensmoke2 {
background-position: center;
background-color: green;
width: 880px;
height: 660px;
background-size: 100%;
background-repeat: no-repeat;
position: relative;
margin: 0 auto;
overflow: hidden;
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button>click</button>
<div class="greensmoke1"></div>
<div class="greensmoke2"></div>
嗨,我是编程的初学者,所以我不太熟悉使用 jQuery,但我想用它解决问题。
我正在尝试制作一个 "animation/Slideshow",其中我有两个不同的绿色烟雾图像,它们会淡入淡出,所以它的移动有点像 'real' 烟雾。我可以在 jQuery 中做到这一点,所以它是循环的,但是我想在单击特定按钮时停止绿色烟雾循环的这个功能,同时另一个类似的循环功能开始,但是使用另一种颜色的烟雾图像,比如红色或蓝色。
我在 jQuery 中有此代码:
function startSlideshow(){
$(".greensmoke1").fadeIn(2000).delay(1500).fadeOut(2000); //13000
$(".greensmoke2").delay(5000).fadeIn(2000).delay(1500).fadeOut(2000, startSlideshow); //55000
}
$(document).ready(function(){
startSlideshow();
});
我的css:
.greensmoke1 {
background-position: center;
background-image: url(game/scene11.png);
width: 880px;
height: 660px;
background-size: 100%;
background-repeat: no-repeat;
position: relative;
margin: 0 auto;
overflow: hidden;
display: none;
}
.greensmoke2 {
background-position: center;
background-image: url(game/scene11b.png);
width: 880px;
height: 660px;
background-size: 100%;
background-repeat: no-repeat;
position: relative;
margin: 0 auto;
overflow: hidden;
display: none;
}
我不知道如何制作一个停止循环的按钮,所以我尝试在 CSS 中制作一个可点击的框,当你点击它时,烟雾 "visibility" 会是设置为 "hidden"。它有效,但对我来说似乎有点混乱。
$(function() {
$("#button").click(function(e){
$(".greensmoke1").css("visibility", "hidden");
$(".greensmoke2").css("visibility", "hidden");
});
}
我有点希望当您单击#button 时它会停止循环但同时开始一个新循环直到您单击另一个按钮。
我希望你能帮助它困扰我两天了!谢谢!
更新
我只是尝试像这样添加 Vladimir 的代码:
$(document).ready(function() {
function startSlideshow(){
$(".greensmoke1").fadeIn(2000).delay(1500).fadeOut(2000); //13000
$(".greensmoke2").delay(5000).fadeIn(2000).delay(1500).fadeOut(2000, startSlideshow); //55000
}
$(document).ready(function(){
startSlideshow();
});
$("#button").on("click",function(){
$(".greensmoke1").css ("visibility", "hidden");
$(".greensmoke2").css ("visibility", "hidden");
$(".bluesmoke1").fadeIn(2000).delay(1500).fadeOut(2000); //13000
$(".bluesmoke2").delay(5000).fadeIn(2000).delay(1500).fadeOut(2000, startSlideshow); //5500
});
});
我添加了 ("visibility","hidden");因为我想阻止绿烟(隐藏它们,即使它们是 display:none;在 css 中)。该按钮与之配合使用,因为绿色烟雾消失了,但它并没有被蓝色烟雾动画取代。即使我没有添加 ("visibility","hidden");代码。
我真的不知道这段代码有什么问题,因为当我点击它隐藏烟雾的按钮时它起作用了,但它不会开始添加蓝色烟雾.. :/
我去试试guest271314的代码,回来更新! :)
你可以试试:
$(document).ready(function(){
$("#button").on('click',function(){
$(".greensmoke1").fadeIn(2000).delay(1500).fadeOut(2000); //13000
$(".greensmoke2").delay(5000).fadeIn(2000).delay(1500).fadeOut(2000, startSlideshow); //5500
}
}
或类似的东西。我认为您可以使用任何元素代替 #button
。
如果有帮助,请告诉我。
尝试
$(document).ready(function () {
// added `class*=smoke` selector for `greensmooke` or `bluesmoke`
var smoke = $("[class*=smoke]");
function startSlideshow() {
$(".greensmoke1").fadeIn(2000).delay(1500).fadeOut(2000)
.siblings(".greensmoke2").delay(5000).fadeIn(2000)
.delay(1500).fadeOut(2000, function () {
if (smoke.data("stop")) {
smoke.stop(true, true)
} else {
startSlideshow()
}
});
};
startSlideshow();
$("button").on("click", function () {
// stop slideshow
smoke.data("stop", true)
// check `background-image` , `backgroundColor`
.css("backgroundColor", smoke.eq(0)
// toggle `background-image` , `backgroundColor`
.css("backgroundColor") === "rgb(0, 128, 0)" ? "blue" : "green")
// start slideshow
.data("stop", false);
startSlideshow()
})
});
$(document).ready(function () {
var smoke = $("[class*=smoke]");
function startSlideshow() {
$(".greensmoke1").fadeIn(2000).delay(1500).fadeOut(2000)
.siblings //13000
(".greensmoke2").delay(5000).fadeIn(2000)
.delay(1500).fadeOut(2000, function () {
if (smoke.data("stop")) {
smoke.stop(true, true)
} else {
startSlideshow()
}
}); //55000
};
startSlideshow();
$("button").on("click", function () {
smoke.data("stop", true)
.css("backgroundColor", smoke.eq(0).css("backgroundColor") === "rgb(0, 128, 0)" ? "blue" : "green")
.data("stop", false);
startSlideshow()
})
});
.greensmoke1, .greensmoke2 {
background-position: center;
background-color: green;
width: 880px;
height: 660px;
background-size: 100%;
background-repeat: no-repeat;
position: relative;
margin: 0 auto;
overflow: hidden;
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button>click</button>
<div class="greensmoke1"></div>
<div class="greensmoke2"></div>