为什么使用jQuery animate无法实现Div从右侧滑入屏幕的效果?
问题排查与修复方案
核心问题点
- 动画位移逻辑错误
你给.contact__formContainer设置的初始margin-left为150vw,当前动画仅配置了marginLeft: "-=50vw",动画执行完后margin-left仅变为100vw,元素仍处于可视区域外,随后你在回调函数里直接把margin-left设为5vw,会导致元素突然跳变,没有平滑过渡效果。 - 属性命名疑问解答
jQuery animate方法支持两种CSS属性写法:驼峰式的marginLeft,或者带引号的连字符式"margin-left",两者效果完全一致。你搜索到的leftMargin属于错误写法,并非标准属性,这不是导致你代码失效的原因。
修复代码
直接修改JS中的animate配置,一步到位设置到目标属性值,不需要额外的回调重置样式:
$(document).ready(function() { const contactMe = $("#title"); const formContainer = $(".contact__formContainer"); console.log("The contact page script is recognized"); contactMe.textillate({ in: { effect: 'fadeInUp' }, loop: true, out: { effect: 'fadeOutUpBig' }, delayScale: 1, delay: 150, }); // 直接设置到目标属性值即可 formContainer.animate({ opacity: 1, marginLeft: "5vw", }, 5000); });
如果需要用相对值写法,对应修改为marginLeft: "-=145vw"即可,效果和直接写目标值一致。
额外注意事项
你已经给父容器.contact设置了overflow: hidden,可以保证元素从右侧滑入时不会出现横向滚动条,无需额外调整样式。
内容的提问来源于stack exchange,提问作者Phaethon
相关产品推荐
相关产品推荐

