jquery写3D图片轮播效果

Posted xxger前端学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery写3D图片轮播效果相关的知识,希望对你有一定的参考价值。

        国庆中秋小长假快来了,小伙伴们计划好要去哪里玩了吗?不过出游之前,前端小伙伴们估计还在为长假期间的活动页面努力奋战呢。这个3D图片轮播效果图也许你能用到。

如图,此demo实现轮播图3D显示,自动轮播,点击下面的红条切换到对应图片,点击左右箭头切换。

下面是主要代码

<style>

/*列表项的样式需要单独设置,最前面的正常显示,层级越高。越靠近底层,图片等比例缩小,透明度也减小,给人近大远小的视觉体验*/

.list1 {

transform: translate3d(250px, 150px, 0) scale(1);

opacity: 1;

z-index: 7;

}

.list2 {

transform: translate3d(560px, 100px, -20px) scale(0.7);

opacity: 0.8;

z-index: 6;

}

.list3 {

transform: translate3d(570px, 50px, -40px) scale(0.6);

z-index: 5;

opacity: 0.6;

}

.list4 {

transform: translate3d(300px, 0, -60px) scale(0.4);

opacity: 0.4;

z-index: 4;

}

.list5 {

transform: translate3d(20px, 50px, -40px) scale(0.6);

opacity: 0.6;

z-index: 5;

}

.list6 {

transform: translate3d(-105px, 100px, -20px) scale(0.7);

opacity: 0.8;

z-index: 6;

}

</style>

下面是html结构

<div class="slide-box">

<div class="slide">

<ul>

<li class="list1">

<a href="#"><img alt="" /></a>

</li>

<li class="list2">

<a href="#"><img alt="" /></a>

</li>

<li class="list3">

<a href="#"><img alt="" /></a>

</li>

<li class="list4">

<a href="#"><img alt="" /></a>

</li>

<li class="list5">

<a href="#"><img alt="" /></a>

</li>

<li class="list6">

<a href="#"><img alt="" /></a>

</li>

</ul>

</div>

<a href="javascript:;" class="prev btn"><</a>

<a href="javascript:;" class="next btn">></a>

<div class="buttons">

<a href="javascript:;" class="blue"></a>

<a href="javascript:;"></a>

<a href="javascript:;"></a>

<a href="javascript:;"></a>

<a href="javascript:;"></a>

<a href="javascript:;"></a>

</div>

</div>

<script>

//定义轮播横条

var $a = $(".buttons a");

//定义轮播列表项

var lArr = ["list1", "list2", "list3", "list4", "list5", "list6"];

var index = 0;

//进入页面自动开始定时器

time = setInterval(next, 2000);

//鼠标移入slide-box时清除定时器

$(".slide-box").mouseover(function() {

clearInterval(time);

})

//鼠标移出slide-box时开始定时器

$(".slide-box").mouseout(function() {

time = setInterval(next, 2000);

})

//点击向右箭头

$(".next").click(function() {

next();

});

//点击向左箭头

$(".prev").click(function() {

prev();

});

// 上一张

function prev() {

//unshift() 向数组的开头添加一个或更多元素,并返回新的长度

lArr.unshift(lArr[lArr.length - 1]); 

//pop() 删除并返回数组的最后一个元素;

lArr.pop(); 

//i是元素的索引,从0开始;e为当前处理的元素;each循环,当前处理的元素移除所有的class,然后添加数组索引i的class

$("li").each(function(i, e) {

$(e).removeClass().addClass(lArr[i]);

});

index--;

if(index < 0) {

index = lArr.length - 1;

}

aShow();

}


// 下一张

function next() {

//push() 向数组的最后添加一个或更多元素,并返回新的长度

lArr.push(lArr[0]); 

//shift() 把数组的第一个元素从其中删除,并返回第一个元素的值;

lArr.shift(); 

$("li").each(function(i, e) {

$(e).removeClass().addClass(lArr[i]);

});

index++;

if(index > lArr.length - 1) {

index = 0;

}

aShow();

}


//通过底部按钮点击切换

$a.each(function() {

$(this).click(function() {

var myindex = $(this).index();

var b = myindex - index;

if(b == 0) {

return;

} else if(b > 0) {

/*

* splice(0,b)的是从索引0开始,取出数量为b的数组

* 因为每次点击之后数组都被改变了,所以当前显示的这个照片的索引才是0

* 所以取出从索引0到b的数组,就是从原本的这个照片到需要点击的照片的数组

* 这时候原本的数组也将这部分数组进行移除了

* 再把移除的数组添加的原本的数组的后面

*/

var newArr = lArr.splice(0, b);

//$.merge() 合并两个数组内容到第一个数组

lArr = $.merge(lArr, newArr); 

$("li").each(function(i, e) {

$(e).removeClass().addClass(lArr[i]);

});

index = myindex;

aShow();

} else if(b < 0) {

/*

* 因为b<0,所以取数组的时候是倒序来取的,也就是说我们可以先把数组的顺序颠倒一下

* 而b现在是负值,所以取出索引0到-b即为需要取出的数组

* 也就是从原本的照片到需要点击的照片的数组

* 然后将原本的数组跟取出的数组进行拼接

* 再次倒序,使原本的倒序变为正序

*/

lArr.reverse(); //reverse() 颠倒数组中元素的顺序

var oldArr = lArr.splice(0, -b);

lArr = $.merge(lArr, oldArr);

lArr.reverse();

$("li").each(function(i, e) {

$(e).removeClass().addClass(lArr[i]);

});

index = myindex;

aShow();

}

});

})


//改变底部按钮的背景色

function aShow() {

$a.eq(index).addClass("blue").siblings().removeClass("blue");

}

</script>


以上是关于jquery写3D图片轮播效果的主要内容,如果未能解决你的问题,请参考以下文章

jquery 实现3d切割轮播图

jquery.slides.js图片轮播怎样调用鼠标滑轮滚动的功能

featureCarousel.js 3d轮播图插件

用jquery实现图片轮播怎么写呢求指教

jquery图片轮播代码

jquery图片轮播思路