javascript - 用于创建幻灯片元素的 setInterval setTimeout 延迟和暂停
问题描述
我有 4 个元素水平分布,我想每 3 秒将它们向左移动,第一个元素和第 4 个元素是相同的,所以当我们处于第 4 个元素时,我会在没有动画的情况下变回第一个元素,所以幻灯片循环本身。
发生的情况是第一张/第四张幻灯片暂停了两次。我正在寻找解决它的方法,我试图通过“if”在间隔期间更改“pause”var,但这似乎是不可能的。
我试图在间隔内设置超时,但它们都并行工作
function setIntervalX(callback, delay, repetitions) {
var x = 0;
var intervalID = window.setInterval(function () {
callback();
if (++x === repetitions) {
window.clearInterval(intervalID);
}
}, delay);}
比这个
var $post = $('.testi');
var x = -100;
var pause = 1500;
setIntervalX(function () {
$post.css('transform', 'translateX(' + x + '%)');
if ( x == -400 ){
$('.testi').css('transition', '0s');
$('.testi').css('transform', 'translateX(0)');
x = -100;
}
else {
setTimeout(function(){
$('.testi').css('transition', '1.5s ease');
x = x - 100;
}, 1500);
}
}, pause, 100);
解决方案
当 x 达到 -400 时,您需要立即将其恢复到 -100,无需超时周期。
尝试这个:
var $post = $('.testi');
var x = -100;
var pause = 1500;
setIntervalX(function () {
if ( x == -400 ){
$('.testi').css('transition', '0s');
$('.testi').css('transform', 'translateX(0)');
x = -100;
}
$post.css('transform', 'translateX(' + x + '%)');
setTimeout(function(){
$('.testi').css('transition', '1.5s ease');
x = x - 100;
}, 1500);
}, pause, 100);
推荐阅读
- numpy - Python 3.7 + Visual Studio 2107 + 升压 1.69
- javascript - JQuery:尝试验证自定义 WordPress 字段内的输入字段
- python - TypeError:'Member'和'Member'的实例之间不支持'<'
- javascript - 如何在 browserFS 中创建符号链接
- java - Java 中的第三方 API 包装器:如何设计
- java - 无法让我的默认构造函数方法读取我的类中的变量
- coldfusion - 为什么 FORM 范围显示的值少于此 AJAX 文件上传器实际提交的值?
- python - 用下划线连接多个用引号括起来的字符串
- system-verilog - 参数化 uvm 序列项以调整大小
- java - JavaFX从变量路径加载图像