关于手动实现滚动的尝试

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 */
}
相关推荐
Ali885208 分钟前
Python字符串方法速查表大全
前端·python
前端_刘师兄17 分钟前
FAE工程师学习路线-进程
前端
执子念的飞鱼36 分钟前
浏览器直接预览 Pages、Numbers、Keynote:iWork 格式真正难在哪
前端·javascript
alloc39 分钟前
从延迟聚合到可解释诊断:MetricKit 的原理与工程化实践
前端
颜进强40 分钟前
06 - OpenSpec change 从模糊想法到完整契约:new change / explore / propose 三连
前端·后端·ai编程
Cache技术分享40 分钟前
499. Java 反射 - 获取类型上的注解
前端·后端
用户9210802628641 分钟前
左侧历史对话模块:使用 Conversations 搭建会话入口
前端
用户693717500138442 分钟前
9531 款 AI 工具流量真相:当 90% 的访问涌向 100 个平台,普通创业者还有机会吗?
前端·后端
莫问ABC1 小时前
HTML、CSS、JavaScript 前端三件套
前端·css·html
颜进强1 小时前
07 - OpenSpec change 修正带与照单施工:update 修订 + apply 实现
前端·后端·ai编程