希望加一个配置,禁止左滑目录,右滑设置,误触的概率太大了,尤其是滑动表格的时候,直接就把目录或者设置滑出来了,求一个没有隐患的解决方式,也希望官方看到,解决一下
-
思源笔记
28446 引用 • 119786 回帖
思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。
融合块、大纲和双向链接,重构你的思维。
-
Q&A
11155 引用 • 50666 回帖 • 52 关注
提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。
相关帖子
-
wilsons • • 1 • 2 赞同付费者 捐赠者
把此代码放到 js 代码片段中即可
// 左右滑动时文档树和设置菜单同时禁用 if (!!document.getElementById("sidebar")) { const moveHandle = (e) => { if(e.target.closest('#menu, #sidebar')) return; document.getElementById("menu").style.transform = ""; document.getElementById("sidebar").style.transform = ""; const maskElement = document.querySelector(".side-mask"); maskElement.classList.add("fn__none"); maskElement.style.opacity = ""; }; document.addEventListener("touchmove", moveHandle, { passive: false}); document.addEventListener("touchend", moveHandle, { passive: false }); }
改进版,支持仅禁用一个
// 手机端禁止左右滑动弹出文档树和设置菜单 // 改进版,支持仅禁用一个 if (!!document.getElementById("sidebar")) { // 右滑不弹出文档树 true 不弹出 false 弹出 const disableFileTree = true; // 左滑不弹出设置菜单 true 不弹出 false 弹出 const disableSetingMenu = false; // 拖动开始 let startX = 0; document.addEventListener("touchstart", (e) => { if(e.target.closest('#menu, #sidebar')) return; const touch = e.touches[0]; startX = touch.clientX; // 记录初始X坐标 }, { passive: true }); // 拖动中 const hideMask = () => { const maskElement = document.querySelector(".side-mask"); maskElement.classList.add("fn__none"); maskElement.style.opacity = ""; }; const moveHandle = (e) => { if(e.target.closest('#menu, #sidebar')) return; if(disableSetingMenu) document.getElementById("menu").style.transform = ""; if(disableFileTree) document.getElementById("sidebar").style.transform = ""; if(disableFileTree && disableSetingMenu) { hideMask(); // 同时禁用 } else { // 仅禁用一个 const touch = e.touches[0]; const currentX = touch?.clientX||0; const diffX = currentX - startX; if (Math.abs(diffX) > 0) { if (diffX < 0) { // 左滑 设置菜单 if(disableSetingMenu) hideMask(); } else { // 右滑 文档树 if(disableFileTree) hideMask(); } startX = currentX; } } }; document.addEventListener("touchmove", moveHandle, { passive: false}); // 拖动结束 const endHandle = (e) => { if(e.target.closest('#menu, #sidebar')) return; if(disableSetingMenu) document.getElementById("menu").style.transform = ""; if(disableFileTree) document.getElementById("sidebar").style.transform = ""; hideMask(); }; document.addEventListener("touchend", endHandle, { passive: false }); }
高性能版
-
把此代码放到 js 代码片段中即可
// 左右滑动时文档树和设置菜单同时禁用 if (!!document.getElementById("sidebar")) { const moveHandle = (e) => { if(e.target.closest('#menu, #sidebar')) return; document.getElementById("menu").style.transform = ""; document.getElementById("sidebar").style.transform = ""; const maskElement = document.querySelector(".side-mask"); maskElement.classList.add("fn__none"); maskElement.style.opacity = ""; }; document.addEventListener("touchmove", moveHandle, { passive: false}); document.addEventListener("touchend", moveHandle, { passive: false }); }
改进版,支持仅禁用一个
// 手机端禁止左右滑动弹出文档树和设置菜单 // 改进版,支持仅禁用一个 if (!!document.getElementById("sidebar")) { // 右滑不弹出文档树 true 不弹出 false 弹出 const disableFileTree = true; // 左滑不弹出设置菜单 true 不弹出 false 弹出 const disableSetingMenu = false; // 拖动开始 let startX = 0; document.addEventListener("touchstart", (e) => { if(e.target.closest('#menu, #sidebar')) return; const touch = e.touches[0]; startX = touch.clientX; // 记录初始X坐标 }, { passive: true }); // 拖动中 const hideMask = () => { const maskElement = document.querySelector(".side-mask"); maskElement.classList.add("fn__none"); maskElement.style.opacity = ""; }; const moveHandle = (e) => { if(e.target.closest('#menu, #sidebar')) return; if(disableSetingMenu) document.getElementById("menu").style.transform = ""; if(disableFileTree) document.getElementById("sidebar").style.transform = ""; if(disableFileTree && disableSetingMenu) { hideMask(); // 同时禁用 } else { // 仅禁用一个 const touch = e.touches[0]; const currentX = touch?.clientX||0; const diffX = currentX - startX; if (Math.abs(diffX) > 0) { if (diffX < 0) { // 左滑 设置菜单 if(disableSetingMenu) hideMask(); } else { // 右滑 文档树 if(disableFileTree) hideMask(); } startX = currentX; } } }; document.addEventListener("touchmove", moveHandle, { passive: false}); // 拖动结束 const endHandle = (e) => { if(e.target.closest('#menu, #sidebar')) return; if(disableSetingMenu) document.getElementById("menu").style.transform = ""; if(disableFileTree) document.getElementById("sidebar").style.transform = ""; hideMask(); }; document.addEventListener("touchend", endHandle, { passive: false }); }
高性能版
2 回复1 引用 - 其他回帖
- 查看全部回帖