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

汉堡菜单点击时侧边模态菜单过渡效果不触发问题求助

问题排查与解决方案

你的问题核心出在模态框初始状态使用了visibility: hidden:浏览器会跳过对不可见元素的初始布局与样式计算,导致.modal-content的初始过渡状态(transform: translateX(200px)、opacity: 0)没有被预渲染。当触发#mobile-menu:checked时,浏览器直接将.modal设为可见并一次性应用目标样式,自然不会触发过渡动画。而Live Server实时修改代码时,.modal已处于渲染状态,浏览器能识别到样式变化,所以过渡能正常生效。

修复步骤:

  1. 修改.modal初始样式,用opacity: 0替代visibility: hidden,保留pointer-events: none防止无效交互,同时给背景添加过渡效果:
.modal {
  pointer-events: none;
  position: fixed; 
  z-index: 1; 
  left: 0;
  top: 0;
  width: 100%; 
  height: 100%; 
  overflow: auto; 
  background-color: rgba(0,0,0,0);
  opacity: 0;
  transition: opacity 0.3s ease;
}
  1. 调整checked状态下的.modal样式,将visibility: visible替换为opacity: 1:
#mobile-menu:checked ~ .modal{
  pointer-events: all;
  opacity: 1;
  background-color: rgba(0,0,0,0.6);
}
  1. 保留.modal-content的过渡配置不变:
.modal-content {
  position: relative;
  background-color: #fefefe;
  margin-left: auto; 
  padding: 20px;
  border: 1px solid #888;
  width: 60%; 
  height: 100%;
  transition: transform 1s ease-in-out, opacity 1s ease-in-out;
  transform: translateX(200px);
  opacity: 0;
}

#mobile-menu:checked ~ .modal .modal-content{
  transform: translateX(0);
  opacity: 1;
}

修改后,.modal始终处于浏览器渲染流中,.modal-content的初始过渡状态会被正确计算,触发复选框状态变化时就能正常触发平滑过渡了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:48:46