这个效果本来是移动端上的效果(不想改了,有点懒),如果想修改成移动端效果 ,只需要修改按下 、拖动、抬起的值就行
实现效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
* {
list-style: none;
margin: 0;
padding: 0;
}
#bigbox {
height: 350px;
width: 1000px;
margin: 0 auto;
border: 1px solid pink;
overflow: hidden;
position: relative;
}
#box {
height: 350px;
display: flex;
flex-direction: row;
align-items: center;
position: absolute;
}
img {
width: 100%;
height: 100%;
}
li {
width: 250px;
height: 250px;
margin: 40px 40px 40px 40px;
}
</style>
</head>
<body>
<div id="bigbox">
<ul id="box">
<li>
<img src="./img/1.jpg" alt="">
</li>
<li>
<img src="./img/2.jpg" alt="">
</li>
<li>
<img src="./img/3.jpg" alt="">
</li>
<li>
<img src="./img/4.jpg" alt="">
</li>
<li>
<img src="./img/5.jpg" alt="">
</li>
<li>
<img src="./img/6.jpg" alt="">
</li>
</ul>
</div>
<script>
var box = document.getElementById('box')
var bigboxwidth = document.getElementById('bigbox')
//禁止图片默认拖动
let imglength = document.getElementsByTagName("img").length
for (let i = 0; i < imglength; i++) {
document.getElementsByTagName('img')[i].onmousedown = function (e) {
e.preventDefault()
}
}
//得到ul的宽度
var boxwidth=box.clientWidth
//父元素的宽度
var bigwidth = bigboxwidth.clientWidth;
//按下
box.onmousedown = function (ev) {
var ev = ev || event;
//ev.clientX可视区到鼠标的距离 box.offsetLeft是box到它父元素的距离
//鼠标到盒子的距离
var disX = ev.clientX - box.offsetLeft;
//拖动
document.onmousemove = function (ev) {
var ev = ev || event;
//得到当前可视区到box的left值
var L = ev.clientX - disX
//L>0 让box在初始状态下不能向右拖动
//L < -(boxwidth - bigwidth) 向左拖动 达到box的width最大值就停止拖动
if (L > 0) {
return
} else if (L < -(boxwidth - bigwidth)) {
return
} else {
box.style.left = L + 'px'
}
}
// 抬起
//停止当前按下和拖动
document.onmouseup = function () {
document.onmousemove = null;
document.onmouseup = null;
}
}
</script>
</body>
</html>