购物车抽屉点击无滑动展开效果求助
购物车抽屉点击无滑动展开效果求助
你好呀!我仔细看了你的代码,发现了几个导致购物车抽屉点击没反应的问题,咱们一个个来修复:
问题1:抽屉的位移方向逻辑错误
你的抽屉初始是transform: translateX(100%)(完全移出屏幕右侧),但关闭时却设置成translateX(-100%)(移到屏幕左侧),这会导致第一次点击后抽屉虽然显示了,但关闭时会跑到左边,完全不符合你要的“从右滑入”效果。
修复方式:把关闭抽屉时的transform改成translateX(100%),和初始状态保持一致:
cart.addEventListener('click', () => { if (!drawerIsOpen) { drawer.style.transform = 'translateX(0%)'; drawer.style.opacity = '1'; } else { drawer.style.opacity = '0'; drawer.style.transform = 'translateX(100%)'; // 这里改成100%,回到初始右侧移出状态 } drawerIsOpen = !drawerIsOpen; })
问题2:抽屉缺少z-index,可能被其他元素遮挡
你的抽屉是fixed定位,但没有设置z-index,很可能被页面上的导航栏、商品容器等元素挡住,导致看起来没反应。另外,抽屉的定位也需要明确,避免出现错位。
修复方式:在CSS的.drawer类里补充以下属性:
.drawer { height: 100vh; width: 250px; background-color: gainsboro; transform: translateX(100%); opacity: 0; transition: transform 2s ease-in-out, opacity 2s ease-in-out; /* 把透明度也加入过渡,动画更流畅 */ position: fixed; top: 0; /* 固定在屏幕顶部 */ right: 0; /* 固定在屏幕右侧 */ z-index: 999; /* 让抽屉处于页面最上层,不会被遮挡 */ }
小优化:事件监听位置调整
你把购物车的点击事件监听放在了getData函数里面,虽然功能没问题,但其实可以移到函数外面,让代码结构更清晰——当然这不是必须的,只是个小建议~
做完这些修改后,你的购物车抽屉就能正常从右侧滑入滑出啦!
备注:内容来源于stack exchange,提问作者user29930852
相关产品推荐
相关产品推荐

