关于手动实现滚动的尝试

html 复制代码
<div class="tags-box" ref="draggableDiv" @mousedown="startDrag">
    <div class="tag-item active">全部</div>
    <div class="tag-item">分类1</div>
    <div class="tag-item">分类2</div>
    <div class="tag-item">分类3</div>
    <div class="tag-item">分类3</div>
</div>
js 复制代码
let ishasDragged = false; // 鼠标是否被拖拽 拖拽玩后不进行type选择
const draggableDiv = ref(null);
let isDragging = false;
let offsetX = 0;
const startDrag = (e) => {
    console.log("startDrag",draggableDiv.value.scrollLeft)
    isDragging = true;
    offsetX = e.clientX
};

const drag = (e) => {
    if (!isDragging) return;
    e.preventDefault();
    console.log("drag",e.clientX)
    const x = offsetX - e.clientX
    offsetX = e.clientX
    if(x !== 0) {
        ishasDragged = true
    }
    draggableDiv.value.scrollLeft = draggableDiv.value.scrollLeft + x
};

const stopDrag = () => {
    isDragging = false;
    // 防止移动完后直接选择
    setTimeout(() => {
        ishasDragged = false
    }, 0)
};

onMounted(() => {
    window.addEventListener('mousemove', drag);
    window.addEventListener('mouseup', stopDrag);
})

onUnmounted(()=> {
    window.removeEventListener('mousemove', drag);
    window.removeEventListener('mouseup', stopDrag);
})
css 复制代码
.tags-box{
  scrollbar-width: none; /* Firefox */
  -ms-overflow-style: none; /* IE and Edge */
}
相关推荐
今年下半年41 分钟前
【VUE】整合腾讯地图、自定义区域边界、村委名称及资产统计(放大显示资产点位)
前端·javascript·vue.js
郑州光合科技余经理1 小时前
同城电商系统:库存变更怎么同步到订单
java·开发语言·前端·后端·uni-app·php·ai编程
前端snow3 小时前
ai agent --- DeepAgents 中间件
前端
data analyse 4563 小时前
报表能自定义的国内统计工具有哪些
前端·数据分析
IT_陈寒3 小时前
JavaScript闭包的这个坑,我居然今天才爬出来
前端·人工智能·后端
可乐鸡翅yeah_3 小时前
hls.js 切换多个视频源,新手开发常见踩坑
开发语言·前端·javascript·ios·ffmpeg·音视频·safari
葡萄城技术团队4 小时前
复制走的是数字,留下的是身份:Web 表格里被忽视的数据断层
前端
kyriewen4 小时前
我实测了前端日期的 5 个坑:差 8 小时只是开始
前端·javascript·程序员
测试运维日常笔记4 小时前
大模型应用专项测试指南:从 Prompt、RAG 到 Agent 的完整链路
前端·prompt