jquery实现div左右滑动
实现效果如图:上面两个按钮,一个“向左走”,一个向右走。通过按钮控制移动方向。

html代码:基础代码
<div class="nav"> <a href="">向左走</a> <a href="">向右走</a> </div> <div class="box"> <ul id="list"> <li><img src="./01.jpg" alt=""></li> <li><img src="./02.jpg" alt=""></li> <li><img src="./03.jpg" alt=""></li> <li><img src="./04.jpg" alt=""></li> </ul> </div>
css代码:控制外观样式
<style>
*{
margin: 0;
padding: 0;
text-decoration: none;
}
body{
font-size: 14px;
}
.box{
border: 2px solid #999;
border-radius: 5px;
margin: 100px auto;
position: relative;
overflow: hidden;
}
.box ul {
display: flex;
list-style: none;
position: absolute;
left: 0;
top: 0;
}
.box ul li {
margin: 5px;
background-color: #999;
}
.box ul li img {
object-fit: cover;
width: 100%;
height: 100%;
}
.nav{
width: 300px;
height: 20px;
margin: 30px auto;
display: flex;
justify-content: space-between;
}
.nav a {
font-size: 20px;
color: #fff;
display: block;
width: 100px;
height: 30px;
background-color: #999;
margin: 10px;
text-align: center;
border-radius: 8px;
}
</style>jquery代码:下面是核心代码,移动效果都靠jquery实现。
<script>
//因效果宽度没有固定,是自适应的,所以先获取浏览器宽度作为基准
var win = $(window).width();
$("#list li").css("width", win/6); //一排放6个div,所以宽度为浏览器宽度除以6
$("#list li").css("height", win/6); //因为是正方形div,所以高度与宽度一样
$(".box").css("height", win/6+10); //不重要,因为div有padding,为了底部border不被遮挡,所以加了10个像素
$("#list").html($("#list").html()+$("#list").html()+$("#list").html());//因为要无缝轮播,最后一个div出来第一个div要跟上,所以复制了两次
let num=2; //每次移动2个像素
let t=null;
//移动函数
function go(){
let myleft = $("#list").position().left;
if(myleft< -$("#list").width()/3){
myleft = 0;
}
if(myleft>0){
myleft = -$("#list").width()/3;
}
$("#list").css("left",(myleft+num)+"px");
}
//执行移动函数,并设置速度为20毫秒
t = setInterval(go,20);
//点击第一个按钮,向右移动
$(".nav a:first").click(function(e){
e.preventDefault();
num = -2;
})
//点击第二个按钮,向左移动
$(".nav a:last").click(function(e){
e.preventDefault();
num = 2;
})
//当鼠标移到移动的div上,移动停止,离开再次启动
$(".box").hover(function(){
clearInterval(t);
},function(){
t= setInterval(go,20);
})
</script>