最近在写前端页面,作为只写过两个月前端的人来说,感觉用jq什么的写出来自己想要的效果真的是太棒了,刚好今天花了一下午完成了一个图片切换的特效:
效果图:
jq 代码,都是自己写出来的,弄了一下午完成的,初学者,整理以后留着用。
直接上代码:
if(status == 'left'){
if(num <= 0){
num = total_num-1;
}else{
num--;
}
}else{
if(num >= total_num-1){
num = 0;
}else{
num++;
}
}
// 4 一次做多显示四张小图 $("#div").stop(false,true);//让当前动画直接到达末状态 ,继续下一个动画
// 第一种情况 当小图数量小于5时, 直接进行右移。
if (total_num <= numSPic) {$(divStr).stop(true,false).animate(
{left:num106+39+"px"},s);
} else{
////////
// 图片左移 //
////////
if (status == 'left') {
if (num < total_num - numSPic) {
_this.parent().find('ul li').eq(num).show();
} else{
// 特殊情況 左移时,从第一张图切换到最后一张图时
// if判断 当前是否显示最后张图,如果不是最后一张图 则当变成右移时,无需刷新小图的显示状态。
// 左移时,需要将李 全部隐藏后, 再将最后的 numSPice 张图显示出来,
if (num == total_num - 1) {
_this.parent().find('ul li').hide();
for (var x = total_num-1; x >= total_num - numSPic; x--) {
_this.parent().find('ul li').eq(x).show();
}
}
}
} else{
////////
// 图片右移 //
////////
if (num >= numSPic) {
_this.parent().find('ul li').eq(num-numSPic).hide();
} else{
// 特殊情況 右移时,从最后一张图切换到第一张图时
// 判断 是否是第一张图, 如果不是则再变成左移时,无需刷新小图的显示状态
if (num == 0) {
for (var x = 0; x < numSPic; x ++) {
_this.parent().find('ul li').eq(x).show();
}
}
}
}
// 快速点击切换时吗,动画出现滞后和反复问题,
// 让当前动画直接到达末状态 ,继续下一个动画 $('#div').stop(false,ture); $('#div').stop().animate(); 集合使用效果更佳。
$(divStr).stop(false,true);
////////
// 样式左移 //
////////
if (status == 'left') {
// 39 定位divStr 的left距离 父级元素的像素距离
// 等样式移动到最右边时,样式位置固定
// $(divStr).position().left 获取定位元素 left值。
if ($(divStr).position().left <= 39 ) {
$(divStr).stop().animate({left:"39px"});
// 当从第一张切换到最后一张时,样式应在最右边。
if (num==total_num-1) {
$(divStr).stop().animate({left:3 106 + 39 + "px"},s);
}
} else{
$(divStr).stop().animate({left:"-=106px"},s);
}
} else{
////////
// 样式右移 //
////////
if ($(divStr).position().left >= 357) {
$(divStr).stop().animate({left:"357px"});
// 当从最后一张切换到第一张时,样式应在最左边。
if (num==0) {
$(divStr).stop().animate({left:"39px"},s);
}
} else{
$(divStr).stop().animate({left:"+=106px"},s);
}
}
}
src = _this.parent().find('ul li').eq(num).find('img').attr('src');
_this.parents('.xq-imgSW').find('.imgSW-top li img').attr('src',src);
});
// 点击小图切换 大图 和小图上的样式。
$('.imgSW-bt li').click(function(){
var _this = $(this);
var src;
num = _this.index();
// parseInt(10/3); 整除
// 获取点击的位置,来计算 样式的位置。
var X = parseInt(_this.position().left/106);
$(divStr).stop().animate({left:X*106+39+"px"},s);
src = _this.find('img').attr('src');
_this.parents('.xq-imgSW').find('.imgSW-top li img').attr('src',src);
});
});
HTML 界面代码:
<li><img src="images/xq-img-s2.png" style="width:90px;height:60px;" alt="">
<div class="imgSW-bot">户型2</div>
</li>
<li><img src="images/xq-img-s3.png" style="width:90px;height:60px;" alt="">
<div class="imgSW-bot">户型3</div>
</li>
<li><img src="images/xq-img-s4.png" style="width:90px;height:60px;" alt="">
<div class="imgSW-bot">户型4</div>
</li>
<li><img src="images/xq-img-s4.png" style="width:90px;height:60px;" alt="">
<div class="imgSW-bot">户型5</div>
</li>
<li><img src="images/xq-img-s4.png" style="width:90px;height:60px;" alt="">
<div class="imgSW-bot">户型6</div>
</li>
<li><img src="images/xq-img-s4.png" style="width:90px;height:60px;" alt="">
<div class="imgSW-bot">户型7</div>
</li>
<li><img src="images/xq-img-s4.png" style="width:90px;height:60px;" alt="">
<div class="imgSW-bot">户型8</div>
</li>
是定位上去的
另外: 快速点击是会出现动画延迟现象,影响体验,处理动画延迟jQuery stop()语法:
在jq中有用到并有注释。 // 让当前动画直接到达末状态 ,继续下一个动画 $('#div').stop(false,ture); $('#div').stop().animate(); 集合使用效果更佳。
作为前端新手,记录下,以后可能会用到。