<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta content="telephone=yes" name="format-detection" />
<meta name="apple-mobile-web-app-status-bar-style" content="white">
<meta name="x5-fullscreen" content="true">
<meta name="apple-touch-fullscreen" content="yes">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
body {
padding-top: 100px;
}
button {
height: 40px;
width: 120px;
font-size: 15px;
}
.box {
width: 600px;
height: 300px;
margin: 50px auto;
overflow: hidden;
}
.box ul {
position: relative;
height: 120px;
width: 20000px;
margin: 50px auto;
padding: 0;
margin: 0;
}
.box ul li {
width: 150px;
height: 100px;
float: left;
list-style: none;
}
#slider {
position: relative;
height: 20px;
width: 60px;
background: orange;
border-radius: 10px;
cursor: pointer;
}
</style>
</head>
<body>
<div class="box">
<ul class="movebox">
<li style="background:red;">1</li>
<li style="background:yellow;">2</li>
<li style="background:blue;">3</li>
<li style="background:green;">4</li>
<li style="background:pink;">5</li>
<li style="background:lightcoral;">6</li>
<li style="background:blue;">3</li>
<li style="background:green;">4</li>
<li style="background:red;">1</li>
<li style="background:lightcoral;">6</li>
</ul>
<div class="sliderbox">
<div id="slider" style="left:0;"></div>
</div>
</div>
</body>
<script>
var slider = document.querySelector("#slider"); //滑块
var moveBox = document.querySelector(".movebox");
var sliderBox = document.querySelector(".sliderbox"); //滑块box
var startX, endX, oLeft = 0; //初始化值
//鼠标按下是事件
slider.onmousedown = function(e) {
slider.style.left = oLeft + "px"; //每次按下后设置最后的left
e = event || window.event;
startX = e.pageX;
sliderBox.addEventListener("mousemove", move, false); //鼠标按下绑定事件
}
//鼠标上弹的事件
slider.onmouseup = function(e) {
oLeft = parseInt(slider.style.left); //鼠标送开始计算最后的left
e = event || window.event;
endX = e.pageX;
sliderBox.removeEventListener("mousemove", move, false); //鼠标松开取消事件绑定
}
//鼠标移动时的事件
function move(e) {
e = event || window.event;
var sLeft = parseInt(slider.style.left);
//判断滑块滑动的范围
if (sLeft >= 0 && sLeft <= 540) {
var moveX = e.pageX;
slider.style.left = (oLeft + (moveX - startX)) + "px"; //滑块滑动的距离
moveBox.style.left = "-" + (oLeft + (moveX - startX)) + "px"; //box移动的距离
}
}
</script>
</html>
原生javascript滑块滑动demo
最新推荐文章于 2024-04-27 10:11:13 发布