clearTimeout(timer);
timer = null;
}, 300);
}
// if (Object.hasOwnProperty.call(window,'onmousewheel')) {
if (Object.hasOwnProperty.call(window,'onmousewheel')) {
// 监听滚轮事件
window.addEventListener('mousewheel',function (event) { // IE/Opera/Chrome
let direction = event.wheelDelta > 0 ? 'up':'down';
scrollHandler(direction);
},false);
} else {
window.addEventListener('DOMMouseScroll',function (event) { // Firefox
let direction = event.detail > 0 ? 'up':'down';
scrollHandler(direction);
},false);
}
// 移动端触摸事件处理
window.addEventListener('touchstart', function (event) {
start = event.touches[0].clientY;
})
window.addEventListener('touchmove', function (event) {
event.preventDefault();
})
window.addEventListener('touchend', function (event) {
let spacing = event.changedTouches[0].clientY - start;
let direction;
if (spacing > 50) {
direction = 'up';
scrollHandler(direction);
} else if (spacing < -50) {
direction = 'down';
scrollHandler(direction);
}
})
}
}
</script>
<style scoped>
.controller {
position: fixed;
right: 20px;
top: 50%;
z-index: 99;
}
.controller ul {
transform: translate3d(0,-50%,0);
list-style: none;
margin: 0;
padding: 0;
}
.controller-item {
cursor: pointer;
width: 20px;
height: 20px;
border-radius: 50%;
margin-top: 10px;
background-color: rgba(255, 255, 255, 0.3);
transition: background-color 0.3s ease 0s;
}
.controller-item:hover {
background-color: rgba(255, 255, 255, 0.7);
}
.controller-item.current {
background-color: rgba(255, 255, 255, 1);
}
.prev-btn,.next-btn {
cursor: pointer;
display: block;
text-align: center;
width: 20px;
height: 20px;
position: fixed;
left: 50%;
margin-left: -10px;
border: 4px solid #fff;
background-color: transparent;
outline: none;
}
.prev-btn {
top: 80px;
transform: rotate(-45deg);
border-bottom-color: transparent;
border-left-color: transparent;
}
.next-btn {
bottom: 80px;
transform: rotate(45deg);
border-top-color: transparent;
border-left-color: transparent;
}
.prev-btn.moving {
animation: prev-up-down 0.7s linear 0s infinite;
}
.next-btn.moving {
animation: next-up-down 0.7s linear 0s infinite;
}
@keyframes next-up-down {
0% {
transform: translate3d(0,0,0) rotate(45deg);
}
25% {
transform: translate3d(0,6px,0) rotate(45deg);
}
50% {
transform: translate3d(0,0,0) rotate(45deg);
}
75% {
transform: translate3d(0,-6px,0) rotate(45deg);
}
100% {
transform: translate3d(0,0,0) rotate(45deg);










