浏览代码

'侧边栏展开优化'

admincjy 1 月之前
父节点
当前提交
a973930b35
共有 1 个文件被更改,包括 36 次插入2 次删除
  1. 36 2
      public/js/reader.js

+ 36 - 2
public/js/reader.js

@@ -311,13 +311,47 @@ function setupSidebarToggles() {
         }
         }
     });
     });
 
 
-    toggleLeft.onclick = () => {
+    toggleLeft.onclick = (e) => {
+        e.stopPropagation();
+
+        // 如果右侧栏展开,先隐藏它
+        if (!DOM.rightSidebar.classList.contains('collapsed')) {
+            DOM.rightSidebar.classList.add('collapsed');
+        }
+
         DOM.leftSidebar.classList.toggle('collapsed');
         DOM.leftSidebar.classList.toggle('collapsed');
     };
     };
 
 
-    toggleRight.onclick = () => {
+    toggleRight.onclick = (e) => {
+        e.stopPropagation();
+
+        // 如果左侧栏展开,先隐藏它
+        if (!DOM.leftSidebar.classList.contains('collapsed')) {
+            DOM.leftSidebar.classList.add('collapsed');
+        }
+
         DOM.rightSidebar.classList.toggle('collapsed');
         DOM.rightSidebar.classList.toggle('collapsed');
     };
     };
+
+    // 点击侧边栏外部时隐藏所有已展开的侧边栏(仅在移动端和平板)
+    document.addEventListener('click', (e) => {
+        // 仅在移动端和平板上启用此功能
+        if (window.innerWidth > 1024) return;
+
+        const isClickInsideLeftSidebar = DOM.leftSidebar.contains(e.target);
+        const isClickInsideRightSidebar = DOM.rightSidebar.contains(e.target);
+        const isToggleButton = e.target.closest('#toggle-left') || e.target.closest('#toggle-right');
+
+        // 如果点击的不是侧边栏内部,也不是切换按钮,则隐藏所有展开的侧边栏
+        if (!isClickInsideLeftSidebar && !isClickInsideRightSidebar && !isToggleButton) {
+            if (!DOM.leftSidebar.classList.contains('collapsed')) {
+                DOM.leftSidebar.classList.add('collapsed');
+            }
+            if (!DOM.rightSidebar.classList.contains('collapsed')) {
+                DOM.rightSidebar.classList.add('collapsed');
+            }
+        }
+    });
 }
 }
 
 
 // 搜索功能
 // 搜索功能