Safari CSS 过渡闪烁

问题描述 投票:0回答:3

我正在处理的网页有问题。在 Firefox 上它似乎没有任何问题。

我有 2 个元素,水平滚动,带有背景图像,这两个元素之间的过渡是使用 CSS3 制作的,

transformX()
。首先,这两个元素重叠(以便您可以看到第二个元素的背景图像),当您单击向右箭头时,第二个元素从右向左滑动在前面。当您单击右侧时,第一个元素从左向右滑动

当我回到第一个元素时,第二个元素闪烁,就像重新排列它的位置一样。

.first-container.first-container1 {
    background: transparent url('../img/backgrounds/first1-background.jpg') no-repeat center center;
    background-size: cover;
    left: 0;
}
.first-container.first-container2 {
    background: transparent url('../img/backgrounds/first2-background.jpg') no-repeat center center;
    background-size: cover;
    left: 100%;
}


.bs-first .first1 .first-container.first-container2 {
    -webkit-transform: translateX(-8.5%);
    -moz-transform: translateX(-8.5%);
    -o-transform: translateX(-8.5%);
    -ms-transform: translateX(-8.5%);
    transform: translateX(-8.5%);
}

.first2 .first-container.first-container1 {
    -webkit-transform: translateX(8.5%);
    -moz-transform: translateX(8.5%);
    -o-transform: translateX(8.5%);
    -ms-transform: translateX(8.5%);
    transform: translateX(8.5%);
    z-index: 9;
}

我真的可以使用一些提示来解决这个问题。谢谢!

html css safari transform
3个回答
8
投票

您可以尝试将

-webkit-backface-visibility: hidden;
应用于已应用css变换的元素。

在你的情况下,如果你使用的是背景图片,它不会工作,所以只需创建一个类并像这样应用它:

.stop-flickering {-webkit-transform:translate3d(0,0,0);}

你也可以试试:

-webkit-transform-style: preserve-3d;

5
投票

就我而言,这些方法都不起作用:

-webkit-transform:translate3d(0,0,0);

-webkit-backface-visibility: hidden;

-webkit-transform-style: preserve-3d;

我在一个空的 div 上有一个动画来创建弹跳圆圈,解决方案是使用伪元素

:before
闪烁消失了


0
投票

我在正在转换的 div 中有一个图像(react-zoom-pan-pinch)以某种方式在图像本身而不是 div 上设置

-webkit-transform:translate3d(0,0,0);
即使图像没有转换也有帮助。之后还必须添加
z-index: -1
以使其落后于其他元素。

© www.soinside.com 2019 - 2024. All rights reserved.