效果
结构html代码
<!--滑动轮播图-->
<section class="bannerSlide banner main move">
<h1 class="size_3">bannerSlide</h1>
<div class="list flex">
<div class="size_3 flex-center">1</div>
<div class="size_3 flex-center">2</div>
<div class="size_3 flex-center">3</div>
</div>
<!--小圆点-->
<div class="banner-dot flex">
<span></span>
</div>
</section>
样式代码
/*banner图-scroll*/
.banner {
position: relative;
height: 800px;
overflow: hidden;
}
.banner h1 {
position: absolute;
top: 20px;
color: #fff;
z-index: 9;
}
.banner .list {
width: 100%;
height: 100%;
}
.bannerPosition .list {
position: absolute;
top: 0;
left: 0;
overflow: auto;
scroll-snap-type: x mandatory;
scrollbar-width: none;
}
.banner .list div {
scroll-snap-align: start;
background: #7059e6;
flex: 0 0 100%;
color: #Fff;
}
.banner:hover .banner-btn {
opacity: 1;
}
.banner-btn {
transition: .5s;
opacity: 0;
}
.banner-btn > div {
position: absolute;
top: 50%;
transform: translateY(-50%);
z-index: 999;
}
.banner-btn > div i {
color: #fff;
font-size: 3rem;
cursor: pointer;
}
.banner-prev {
left: 5%;
}
.banner-next {
right: 5%;
}
.banner-dot {
position: absolute;
left: 50%;
transform: translateX(-50%);
bottom: 10%;
z-index: 99;
gap: 15px;
border-radius: 10px;
}
.banner-dot .active {
background: #333;
}
.banner-dot span {
position: relative;
display: block;
width: 20px;
height: 20px;
border-radius: 10px;
background-color: #Fff;
cursor: pointer;
}
.bannerSlide .list::-webkit-scrollbar {
display: none;
}
.banner .banner-dot {
width: 300px;
height: 8px;
background: #efefef;
}
.banner .banner-dot span {
width: calc(100% / 3);
height: 100%;
background: #333;
}
js代码
// 滑动轮播图
let flag = false
let downX
let banner_dot = $('.bannerSlide .banner-dot span')
$('.bannerSlide .list').mousedown(function (e) {
flag = true
downX = e.clientX
})
$('.bannerSlide .list').mousemove(function (e) {
e.preventDefault()
if (flag) {
let moveX = e.clientX - downX
if (moveX <= -150) {
$('.bannerSlide .list').scrollLeft($('.bannerSlide .list').scrollLeft() + $('.bannerSlide .list div').outerWidth())
flag = false
if (banner_dot.position().left < banner_dot.outerWidth() * 2) {
banner_dot.animate({left: `+=${banner_dot.outerWidth()}`})
}
}
if (moveX >= 150) {
$('.bannerSlide .list').scrollLeft($('.bannerSlide .list').scrollLeft() - $('.bannerSlide .list div').outerWidth())
flag = false
if (banner_dot.position().left > 0) {
banner_dot.animate({left: `-=${banner_dot.outerWidth()}`})
}
}
}
})
$('.bannerSlide .list').mouseup(function (e) {
flag = false
})
主页还有更多前端交互功能