一个简单的方法是:
function ticker(el, duration) {
if (!el) {
return false;
}
else {
el = typeof el === 'object' ? el : $(el);
duration = duration || 500;
$(el).find('li').first().slideUp(duration, function() {
$(this)
.insertAfter($(this).nextAll('li').last())
.fadeIn(duration, function(){
ticker(el, duration);
});
});
}
}
您可以使用 jQuery 对象调用它:
ticker($('#ticker'));
JS 小提琴演示。
或者使用具有指定持续时间(以毫秒为单位)的普通 DOM 节点:
ticker(document.getElementById('ticker'), 300);
JS 小提琴演示。
回应 OP 留下的评论(在评论中,如下):
此解决方案向上滑动第一项并淡入最后一项。但我想在第一个和下一个项目中淡入淡出+滑动。该列表的样式是一次只显示一个项目。
我提供了这个,animate()
用于为列表元素的高度/不透明度设置动画:
function ticker(el, duration) {
if (!el) {
return false;
}
else {
el = typeof el === 'object' ? el : $(el);
duration = duration || 500;
var first = el.find('li').first(),
last = first.nextAll().last(),
h = last.height();
first.animate({
height: 0,
opacity: 0
}, duration, function() {
$(this).insertAfter(last).animate({
height: h,
opacity: 1
}, duration, function() {
ticker(el, duration);
});
});
}
}
JS 小提琴演示。
编辑以下 OP 的说明,如下:
function ticker(el, duration) {
if (!el) {
return false;
}
else {
el = typeof el === 'object' ? el : $(el);
duration = duration || 500;
var lis = el.find('li').css('display', 'none');
lis.first().fadeIn(duration, function(){
$(this).slideUp(duration, function(){
$(this).insertAfter(lis.last());
ticker(el, duration);
});
});
}
}
JS 小提琴演示。
参考: