做为一名职业web前端,我们需要对网页上常见的交互都要具备手写js的能力,或者js比较复杂如果习惯jquery也可以。最近切图网一个客户项目中遇到了图片滚动效果,因客户要求,写了3个不同的版本,留作备注和分享。
1,右箭头,点击一下移动一个单元,当移动到最后一个单元的时候,在点击右箭头,回到第一个单元
/*图片滚动*/
$('.imgroll').each(function(){
$(this).find('li:first').addClass('selected');
})
$('.imgroll .next').click(function(){
var f = $(this).parent();
var l = ('li').size()-4) * 258;
(parseInt('ul').css('margin-left')) + '-' + l);
if(parseInt('ul').css('margin-left')) > -l){
f.find('ul').stop().animate({'marginLeft':'-=258'})
}
else{
f.find('ul').stop().animate({'marginLeft':0})
}
});
$('.imgroll .prev').click(function(){
var f = $(this).parent();
var l = ('li').size()-4) * 258;
(parseInt('ul').css('margin-left')) + '-' + l);
if(parseInt('ul').css('margin-left')) < 0){
f.find('ul').stop().animate({'marginLeft':'+=258'})
}
else{
f.find('ul').stop().animate({'marginLeft':0})
}
})
2,点击右箭头,移动一个单元,当移动到最后一个单元的时候,点击右箭头无效。
/*图片滚动*/
$('.imgroll').each(function(){
$(this).find('li').each(function(){
$(this).attr('data-index',$(this).index());
})
})
$('.imgroll .next').click(function(){
// 将整个ul设置动画方式负移位,制造图片左移的效果,然后设置移位为0,将第一张图片获取补到最后,到这里整个图片左移效果完成
var f = $(this).parent();
('li:eq(3)').data('index')+1 + '-----'+ f.find('li').size());
if('li:eq(3)').data('index')+ 1 == f.find('li').size()){
return false;
}
f.find('ul').animate({'marginLeft':-258},function(){
$(this).css('marginLeft',0).find('li:first').appendTo($(this));
});
});
$('.imgroll .prev').click(function(){
var f = $(this).parent();
if('li:first').data('index') == 0){
return false;
}
// 同上
f.find('ul').css('marginLeft',-258).find('li:last').prependTo('ul'));
f.find('ul').animate({'marginLeft':0});
})
3,最常规的写法,参见切图框架 slicy 。
原文地址: (切图社区)
加微信公众号:qietuwang (限做前端的人)