一、拖拽滚动
1、封装函数
function addDragable(el) {
let startX = 0;
let gapX = 0;
let startY = 0;
let gapY = 0;
el.addEventListener("mousedown", start);
el.addEventListener("mouseleave", stop);
function start(event) {
if (event.button == 0) {
gapX = event.clientX;
gapY = event.clientY;
startX = el.scrollLeft;
startY = el.scrollTop;
el.addEventListener("mousemove", move);
el.addEventListener("mouseup", stop);
}
return false;
}
function move(event) {
var left = event.clientX - gapX;
var top = event.clientY - gapY;
el.scrollTo(startX - left, startY - top);
return false;
}
function stop() {
el.removeEventListener("mousemove", move, false);
el.removeEventListener("mouseup", stop, false);
}
}
2、示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>实现元素拖拽滚动</title>
</head>
<body>
<div id="dragableWrapper" class="wrapper">
<div id="dragable">
<h2>实现元素拖拽滚动(不会因拖拽被选中的文字,按情形选一既可。)</h2>
<h2>js做法:event.preventDefault(); 阻止默认事件或冒泡;</h2>
<h2>css做法:user-select: none;</h2>
<div class="row">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>