translate3d 使元素跳跃
translate3d makes element jump
我使用 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 获得 不透明度值 1 和 显示 属性 到 从 JavaScript 屏蔽 。它显示在假定位置的下方和左侧,然后移动到实际位置。
我尝试按照 Whosebug 中许多帖子中的建议应用以下代码片段进行改进,但没有成功。
-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);
}
}
那是在使用 Velocity v1 - 这在 transform
方面并不是最好的,因为在移动设备上它试图与 transform
属性 本身混淆,并且我有一种感觉,这正在发生。至少尝试向其中添加选项 mobileHA: false
,看看是否有帮助。
否则,也许可以尝试使用 Velocity v2 beta(查看 github 页面了解详细信息),display
成为 属性 而不是一个选项,但是它(目前)没有移动硬件加速(移动设备和浏览器从那时起已经改进) - 它会让你的财产单独存在 - 它仍处于测试阶段,同时我正在解决一些错误并确保它足够好质量虽然!
我使用 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 获得 不透明度值 1 和 显示 属性 到 从 JavaScript 屏蔽 。它显示在假定位置的下方和左侧,然后移动到实际位置。
我尝试按照 Whosebug 中许多帖子中的建议应用以下代码片段进行改进,但没有成功。
-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);
}
}
那是在使用 Velocity v1 - 这在 transform
方面并不是最好的,因为在移动设备上它试图与 transform
属性 本身混淆,并且我有一种感觉,这正在发生。至少尝试向其中添加选项 mobileHA: false
,看看是否有帮助。
否则,也许可以尝试使用 Velocity v2 beta(查看 github 页面了解详细信息),display
成为 属性 而不是一个选项,但是它(目前)没有移动硬件加速(移动设备和浏览器从那时起已经改进) - 它会让你的财产单独存在 - 它仍处于测试阶段,同时我正在解决一些错误并确保它足够好质量虽然!