一、css
<style>
* {
margin: 0;
padding: 0;
list-style: none;
}
.box {
width: 560px;
height: 380px;
/* border: 1px solid #000; */
margin: 100px auto;
position: relative;
}
ul {
width: 20%;
height: 100%;
position: relative;
transform-style: preserve-3d;
transform: rotateX(0deg);
float: left;
}
ul:nth-child(2) li {
background-position-x: -112px;
}
ul:nth-child(3) li {
background-position-x: -224px;
}
ul:nth-child(4) li {
background-position-x: -336px;
}
ul:nth-child(5) li {
background-position-x: -448px;
}
li {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
li:nth-child(1) {
background-image: url('images/01.jpg');
transform: translateZ(190px)
}
li:nth-child(2) {
background-image: url('images/02.jpg');
transform: rotateX(90deg) translateZ(190px)
}
li:nth-child(3) {
background-image: url('images/03.jpg');
transform: rotateX(180deg) translateZ(190px)
}
li:nth-child(4) {
background-image: url('images/04.jpg');
transform: rotateX(270deg) translateZ(190px)
}
.prev,
.next {
position: absolute;
width: 100px;
height: 100px;
top: 50%;
transform: translateY(-50%);
background-color: #f91;
text-decoration: none;
color: #fff;
text-align: center;
line-height: 100px;
font-size: 24px;
}
.prev {
left: -100px;
}
.next {
right: -100px;
}
</style>二、html
<div class="box">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<a href="javascript:;" class="prev">上一页</a>
<a href="javascript:;" class="next">下一页</a>
</div>三、js
<script>
var prev = document.querySelector('.prev')
var next = document.querySelector('.next')
var uls = document.querySelectorAll('ul')
var count = 0
// 表示现在可以执行动画
var flag = true
// 上一页功能
prev.addEventListener('click', function () {
if (flag) {
flag = false;
count++
uls.forEach(function (ul, index) {
ul.style.transform = "rotateX(" + count * 90 + "deg)"
ul.style.transition = "1s " + 0.2 * index + "s"
});
}
// setTimeout(function () {
// flag = true
// }, 1000)
})
// 下一页功能
next.addEventListener('click', function () {
if(flag){
flag = false;
count--
uls.forEach(function (ul, index) {
ul.style.transform = "rotateX(" + count * 90 + "deg)"
ul.style.transition = "1s " + 0.2 * index + "s"
});
}
})
// 给最后一个ul注册过渡结束事件 也就是节流阀,只有当最后一个ul的过渡效果结束时候点击下一页或
// 者上一页才有效
uls[uls.length - 1].addEventListener('transitionend', function () {
flag = true
})
</script>
版权声明:本文为liuyuhua666原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。