javascript - 带有 CSS 过渡的 Firefox 中奇怪的像素移动/跳跃

标签 javascript jquery html css

问题:

我正在使用 CSS 使卡片翻转并显示一只小猫。有一种行为似乎只存在于 Firefox 中,它不断地将图像移动/调整几个像素的大小。只需将鼠标悬停在卡片背面,观察它在缩放动画完成后 左右移动,然后点击卡片翻转卡片,观察小猫如何重新调整其位置以及动画后的大小。

同样,这在 Chrome 和 Internet Explorer 中都不会发生。任何人都可以解释导致它的原因或提供补救措施吗?

fiddle :

http://jsfiddle.net/XEDEM/1/

代码:

$('.card').mouseover(function() {
    $(this).css({
        'transform': 'scale(1.2)',
        '-webkit-transform': 'scale(1.2)',
        'transition': 'transform 500ms',
        '-webkit-transition': '-webkit-transform 500ms'
    });
}).mouseleave(function() {
    $(this).css({
        'transform': 'scale(1)',
        '-webkit-transform': 'scale(1)',
        'transition': 'transform 500ms',
        '-webkit-transition': '-webkit-transform 500ms'
    });
}).mousedown(function() {
    $('div.back').css({
        'transform': 'perspective(1000px) rotateY(-180deg) translateZ(0)',
        '-webkit-transform': 'perspective(1000px) rotateY(-180deg)',
        'transition': 'transform 800ms ease-in-out 300ms',
        '-webkit-transition': '-webkit-transform 800ms ease-in-out 300ms'
    });
    $('.hide').show();
    $('div.front').css({
        'transform': 'perspective(1000px) rotateY(0) translateZ(0)',
        '-webkit-transform': 'perspective(1000px) rotateY(0)',
        'transition': 'transform 800ms ease-in-out 300ms',
        '-webkit-transition': '-webkit-transform 800ms ease-in-out 300ms',
        'backface-visibility': 'hidden',
        '-webkit-backface-visibility': 'hidden'
    });
});

最佳答案

经过一番深入研究,这是一个 known issue 使用 Firefox 的亚像素渲染。更明显的效果演示可见herehere .这种现象被称为“像素捕捉”,它在 Firefox 的动画中经常发生,尤其是在过渡结束时。

同样在 Bugzilla 线程中提出的解决方案是将 rotate(0.0001deg) 添加到缩放变换中。这大大降低了影响,但并没有完全消除它。然而,这是我所能期望的最好的结果,所以我接受它作为答案。

关于javascript - 带有 CSS 过渡的 Firefox 中奇怪的像素移动/跳跃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24854640/

相关文章:

javascript - 我想将选定的元素从一个列表移动到另一个列表

javascript - createTouch vs ontouchstart - 检测触摸屏设备的最佳方式?

javascript - 本地存储问题

html - 在ionic中切换到另一个段时图表消失了,如何解决这个问题?

php - 如何像 SO 那样过滤掉危险的 HTML?

javascript - jQuery onclick 从 mysql 表中删除行

javascript - 即使从另一个 HTML 页面重定向后,仍保留 HTML 中的表单值

javascript - 如何使用jquery扩展对象

javascript - Bootstrap Accordion 展开/折叠全部无法正常运行

javascript - 在水平列表中为 appendTo 和 prependTo 设置动画的可能方法