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

使用Framer Motion右侧滑入动画时视口宽度被扩展的问题

解决Framer Motion右侧滑入动画触发水平滚动条的问题

问题根源在于:动画元素向右偏移时,会超出父容器与视口范围,浏览器会因此生成水平滚动条;而向左偏移时,元素跑到视口左侧外部,浏览器默认不会为这种负方向溢出触发滚动条,所以不会出现问题。

给你两个直接可行的解决思路:

1. 给动画父容器添加溢出隐藏

给外层的motion.div加上Tailwind的overflow-hidden类,让元素偏移出容器的部分被裁剪,不会触发页面滚动条:

<section>
    <div className='grid grid-cols-1 md:grid-cols-2 p-3'>
        <div className='visuals'>
            <p>Lorem ipsum dumb text</p>
        </div>
        <motion.div
            className="overflow-hidden" <!-- 新增溢出隐藏类 -->
            initial="hidden"
            whileInView="visible"
            viewport={{ once: true, amount: 0.5 }}
        >
            <motion.div
                variants={{
                    visible: {
                        x: 0,
                        transition: { duration: 0.5 }
                    },
                    hidden: { x: 500 }
                }}>
                <p className='text-2xl font-semibold'>Anytime. Anywhere</p>
                <p className='text-xl'>Access and watch your favorite shows anytime, anywhere.</p>
            </motion.div>
        </motion.div>
    </div>
</section>

2. 用相对宽度替代固定数值偏移

把hidden状态的x:500改成x: "100%",让元素偏移自身宽度的100%,刚好完全藏在父容器右侧,适配所有屏幕尺寸,配合overflow-hidden效果更稳定:

<motion.div
    variants={{
        visible: {
            x: 0,
            transition: { duration: 0.5 }
        },
        hidden: { x: "100%" } <!-- 替换为相对宽度偏移 -->
    }}>
    <p className='text-2xl font-semibold'>Anytime. Anywhere</p>
    <p className='text-xl'>Access and watch your favorite shows anytime, anywhere.</p>
</motion.div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:01:33