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

Chrome/安卓下pointer-events:none重叠元素致纯CSS轮播异常

Chrome 端 pointer-events: none 重叠元素引发纯CSS轮播拖拽异常

已确认复现环境

  • 开启移动端调试模式的桌面端Chrome
  • 安装最新版Chrome的安卓Pixel 6实体设备
  • iOS端全浏览器表现正常,无该异常

具体异常表现

当滚动区域上方叠有设置pointer-events: none的元素时,基于CSS scroll-snap实现的轮播会出现交互故障:

  • 滑动触发的惯性滚动过程无法被中途打断
  • 朝一个方向滑动后立刻反向拖拽,轮播会直接卡住,滚动吸附逻辑不生效
  • 必须抬起手指重新触碰屏幕,才能恢复正常交互

可通过控制遮罩层的开关状态,对比有无重叠元素时的拖拽行为差异,下述最小复现代码可直接运行验证问题。

最小复现代码

JSX 逻辑

function Main() {
  return (
    <div className="App">
      <p>蓝色半透明遮罩已设置 pointer-events: none</p>
      <p>惯性滑动过程中尝试反向打断会触发异常</p>
      <section className={"testSection"}>
        <div className={"testSectionInner"}>
          <div className={"testItem"} />
          <div className={"testItem"} />
          <div className={"testItem"} />
          <div className={"testItem"} />
          <div className={"testItem"} />
        </div>
      </section>
      <div className={"testOverlay"} />
      
      <p>无重叠遮罩对照组</p>
      <p>惯性滑动过程中可正常反向打断,交互符合预期</p>
      <section className={"testSection"}>
        <div className={"testSectionInner"}>
          <div className={"testItem"} />
          <div className={"testItem"} />
          <div className={"testItem"} />
          <div className={"testItem"} />
          <div className={"testItem"} />
        </div>
      </section>
    </div>
  );
}

class App extends React.Component {  
    render() {
        return <Main />;
    }
}

ReactDOM.render(
    <App />,
    document.getElementById("root")
);

样式代码

.App {
  font-family: sans-serif;
  text-align: center;
}

.testSection {
  max-width: 100vw;
}

.testSectionInner {
  overflow: scroll hidden;
  padding-left: 1.25rem;
  display: flex;
  flex-flow: row nowrap;
  scroll-snap-type: x mandatory;
}

.testItem {
  scroll-snap-align: center;
  flex: 0 0 calc(81.6591%);
  background-color: red;
  height: 200px;
  margin-right: 4%;
  pointer-events: auto;
}

.testOverlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 300px;
  background-color: blue;
  opacity: 0.2;
  pointer-events: none;
}

入口代码

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.1/umd/react-dom.production.min.js"></script>
<div id="root"></div>

该问题已在多版本Chrome上验证复现,目前暂未找到明确的根因说明,想确认是否有其他开发者遇到过同类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:09:14