You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

浏览器缩至1025px以下时网站无法切换为垂直滚动的问题

问题解决:桌面端窗口缩小后无法切换为垂直滚动

问题背景

网站在1025px以上采用水平滚动布局,1025px以下需切换为垂直滚动。但桌面端手动拖拽浏览器窗口缩小至1025px以下时,水平滚动逻辑未禁用,导致无法垂直滚动;实体移动设备上滚动正常。网站基于WordPress+Elementor Pro搭建,原有代码仅在页面加载时判断窗口宽度。

问题根源

原有JS代码仅在页面首次加载时执行一次宽度判断并绑定水平滚动事件,窗口尺寸改变后,之前绑定的wheel事件未被移除,evt.preventDefault()仍在生效,直接阻止了默认的垂直滚动行为。

修改后的完整代码

CSS(保留原有媒体查询逻辑)

html {
  scroll-behavior: smooth;
}
@media only screen and (min-width: 1025px) {
    main {
        overflow-x: hidden;
        display: flex;
    }

    section {
        min-width: 100vw!important;
        min-height: 100vh!important;
    }
}

JavaScript(核心修复)

// 封装滚动逻辑处理函数
function handleScrollBehavior() {
    const scrollContainer = document.querySelector("main");
    // 先移除旧的事件监听,避免重复绑定导致异常
    scrollContainer.removeEventListener("wheel", handleWheelScroll);

    if (window.innerWidth > 1025) {
        // 桌面端:绑定水平滚动事件
        scrollContainer.addEventListener("wheel", handleWheelScroll);
    }
    // 小屏设备:不绑定事件,恢复默认垂直滚动
}

// 水平滚动事件处理逻辑
function handleWheelScroll(evt) {
    evt.preventDefault();
    const scrollContainer = document.querySelector("main");
    scrollContainer.scrollLeft += evt.deltaY;
}

// 页面初始化时执行一次
handleScrollBehavior();

// 监听窗口尺寸变化,实时切换滚动逻辑
window.addEventListener("resize", handleScrollBehavior);

关键修复点

  1. 将滚动事件的绑定/移除逻辑封装为可复用函数,确保每次窗口尺寸变化时重新执行
  2. 每次执行函数时先移除旧的事件监听,避免重复绑定引发的冲突
  3. 新增resize事件监听,实现窗口拖拽过程中实时切换滚动行为

内容的提问来源于stack exchange,提问作者Bottomless_Brunch11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:23:18