您的位置:首页 > Web前端 > CSS

JS+CSS实现3D切割轮播图

2020-03-22 12:07 633 查看

本文实例为大家分享了JS+CSS实现3D切割轮播图的具体代码,供大家参考,具体内容如下

第一步:我们首先要通过CSS来完成一个基本布局,利用 transform-style: preserve-3d设置成3D。

下面是CSS部分的代码

* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
li {
list-style: none;
}
/* 轮播图 */
.homePage {
width: 800px;
height: 200px;
margin: 150px auto;
background-color: pink;
position: relative;
/* overflow: hidden; */
}

.homePage>ul {
width: 100%;
height: 100%;
}

.homePage>ul>li {
width: 200px;
height: 100%;
float: left;
transform-style: preserve-3d;
position: relative;
transition: all 1s;
}

.homePage>ul>li>span {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}

.homePage>ul>li>span:nth-child(1) {
background-image: url(../images/bxqy.jpg);
transform: translateZ(100px);
}
.homePage>ul>li>span:nth-child(2) {
background-image: url(../images/fczlm.jpg);
transform: rotateX(90deg) translateZ(100px);
}
.homePage>ul>li>span:nth-child(3) {
background-image: url(../images/hfh.jpg);
transform: rotateX(180deg) translateZ(100px);
}
.homePage>ul>li>span:nth-child(4) {
background-image: url(../images/ss.jpg);
transform: rotateX(270deg) translateZ(100px);
}

/* 图片的定位 */
.homePage>ul>li:nth-child(2) span {
background-position: -200px 0;
}
.homePage>ul>li:nth-child(3) span {
background-position: -400px 0;
}
.homePage>ul>li:nth-child(4) span {
background-position: -600px 0;
}

/* 小按钮 */
a {
position: absolute;
width: 30px;
height: 70px;
background-color: rgba(0,0,0,.2);
text-decoration: none;
color: #fff;
top: 50%;
margin-top: -35px;
line-height: 70px;
text-align: center;
display: none;
}
.right {
right: 0;
}

第二步:我们利用JS来调整图片运动时的切割速度以及方向。

下面是js的代码。

$(function(){
var index = 0;
var flag = true;
var time = setInterval(move, 700);

// 下一张
function move(){
if(!flag) return;
flag = false;
index++;
$(".homePage>ul>li").css("transform","rotateX(" + (-90 * index) + "deg)").each(function(index,item){
$(item).css("transition-delay",index * 0.2 + "s");
});
}

// 移入移出
$(".homePage").mouseenter(function(){
clearInterval(time);
$(".homePage>a").css("display","block");
})
$(".homePage").mouseleave(function(){
time = setInterval(move, 700);
$(".homePage>a").css("display","none");
})

// 点击左边按钮:上一张
$(".left").on("click",function(){
if(!flag) return;
flag = false;
index--;
$(".homePage>ul>li").css("transform","rotateX(" + (-90 * index) + "deg)").each(function(index,item){
$(item).css("transition-delay",index * 0.2 + "s");
});
})

// 点击有面按钮:下一张
$(".right").click(move);

// 动画整个过渡结束之后,transitionend过渡完成时触发
$("li:last").on("transitionend",function(){
flag = true;
})
})

最后:body区域代码如下

<div class="homePage">
<ul>
<li>
<span></span>
<span></span>
<span></span>
<span></span>
</li>
<li>
<span></span>
<span></span>
<span></span>
<span></span>
</li>
<li>
<span></span>
<span></span>
<span></span>
<span></span>
</li>
<li>
<span></span>
<span></span>
<span></span>
<span></span>
</li>
</ul>
<a class="left" href="javascript:;" ><</a>
<a class="right" href="javascript:;" >></a>
</div>

<script src="js/jquery-1.8.3.min.js"></script>
<script src="js/demo.js"></script>

注意:要利用 overflow: hidden;来隐藏切割时超出的部分。最后3D切割轮播图就完成了。

精彩专题分享:jQuery图片轮播 JavaScript图片轮播 Bootstrap图片轮播

以上就是本文的全部内容,希望对大家的学习有所帮助

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  js 轮播图