JS 鼠标拖动实现移动滚动条的滚动效果

效果

现在很多场景都以移动端为基本开发,比如说需要隐藏滚动条,在pc上实现鼠标拖动和手机触摸拖动差不多的效果。

实现

以mdn的overflow属性中范例为基础,内容溢出时候可使用overflow: auto;overflow: scroll;实现滚动效果。
要实现鼠标拖动实现和移动滚动条一样的效果只需要在原例脚本部分添加如下内容:

<script>
	const scrollElement = document.querySelector('.scroll');//你的需要滚动的标签
	let isDragging = false;
	let startX, startY, scrollLeft, scrollTop;

	scrollElement.addEventListener('mousedown', (e) => {
		isDragging = true;
		startX = e.pageX - scrollElement.offsetLeft;
		startY = e.pageY - scrollElement.offsetTop;
		scrollLeft = scrollElement.scrollLeft;
		scrollTop = scrollElement.scrollTop;
		scrollElement.style.cursor = 'grabbing';
	});

	scrollElement.addEventListener('mouseleave', () => {
		isDragging = false;
		scrollElement.style.cursor = 'grab';
	});

	scrollElement.addEventListener('mouseup', () => {
		isDragging = false;
		scrollElement.style.cursor = 'grab';
	});

	scrollElement.addEventListener('mousemove', (e) => {
		if (!isDragging) return;
		e.preventDefault();
		const x = e.pageX - scrollElement.offsetLeft;
		const y = e.pageY - scrollElement.offsetTop;
		const walkX = (x - startX) * 2; // 调整滚动速度
		const walkY = (y - startY) * 2; // 调整滚动速度
		scrollElement.scrollLeft = scrollLeft - walkX;
		scrollElement.scrollTop = scrollTop - walkY;
	});
</script>

css部分添加:

p.scroll {
  overflow: scroll;
  cursor: grab;
}
p.scroll {
	cursor: grabbing; /* 鼠标按下时的指针样式 */
}

在这里插入图片描述

这时scroll标签就可以用鼠标拖着滚动了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ozingi

谢谢小老板打赏给我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值