【发布时间】:2018-09-08 12:55:40
【问题描述】:
我使用 transform 的 translate3d 将弹出 div 置于容器的中心。
//CSS
element
{
display: none;
opacity: 0;
top: 50%;
left: 50%;
transform: translate3d(-50%, -50%, 0);
}
//JS
$btn.click(function(){
$popupContainer1.velocity({ opacity: 1}, { display: "block"});
});
在桌面浏览器中,它可以正常工作,但在移动浏览器中,它会跳转。当用户点击一个按钮时,弹出的 div 会从 JavaScript 获取 opacity value 1 和 display 属性以 block。它显示在假定位置的下方和左侧,然后移动到实际位置。
我尝试按照 Stackoverflow 的许多帖子中的建议应用以下 sn-p 进行改进,但没有成功。
-webkit-backface-visibility: hidden;
单击弹出容器上的关闭按钮通过以下函数进行处理。
$rdCloseBtn.click(function(){
$rdPopupElements.velocity({ opacity : 0 }, {
display : 'none',
mobileHA: false
});
setDefault();
});
我用下面的代码重置了动画。
function setDefault(id){
if (id === 0) {
$rdPopupElement0.velocity({ opacity : 0 }, 0);
$rdPopupElement_0_Text.velocity({ opacity : 0 }, 0);
$rdPopupElement0Clock.velocity({ opacity : 0 }, 0);
$rdJumpingArrow.velocity({ opacity : 0 }, 0);
$rdClockingArrow0.velocity({ opacity : 0 }, 0);
$rdClockingFiller0.velocity({ opacity : 0 }, 0);
$rdClockingArrow1.velocity({ opacity : 0 }, 0);
}
else if (id === 1) {
$rdPopupElement1.velocity({ opacity : 0 }, 0);
$rdRS0.velocity({ opacity : 0 }, 0);
$imgClipBoardClock.velocity({ opacity : 0 }, 0);
$rdRS1.velocity({ opacity : 0 }, 0);
$rdTick0.velocity({ opacity : 0 }, 0);
$rdTick1.velocity({ opacity : 0 }, 0);
$rdPopupElement_1_Text.velocity({ opacity : 0 }, 0);
$rdClipboardClock.velocity({ opacity : 0 }, 0);
}
else if (id === 2) {
$rdPopupElement2.velocity({ opacity : 0 }, 0);
$rdMaginifier.velocity({ opacity : 0 }, 0);
$rdRedDot.velocity({ opacity : 0 }, 0);
$rdMagFiller.velocity({ opacity : 0 }, 0);
$rdArrowFlow.velocity({ opacity : 0 }, 0);
$rdPopupElement_2_Text.velocity({ opacity : 0 }, 0);
}
else {
setDefault(0);
setDefault(1);
setDefault(2);
}
}
【问题讨论】:
-
我猜是因为翻译,用绝对位置试试看它是否跳跃。如果没有,你就会知道为什么
-
您可能想尝试
translate(-50%, -50%)而不是 translate3d 并确保这不是问题。 -
您在哪个移动浏览器中看到问题?
-
移动设备中的 Safari、Chrome 和 Firefox。
-
@Ravan 我试过翻译;它没有解决问题。
标签: css velocity.js translate3d