CSS Firefox 中的过渡闪烁

CSS transition flickering in Firefox

我有 3 个元素使用 CSS 转换在 :hover 上生长。其中两个工作正常,但最后一个在 Firefox 中闪烁,但在 Chrome 和 IE 中工作。所以问题只存在于 Firefox 中。

CSS:

.contact{
    width: 300px;
    height: 250px;
    margin: 10px;
    margin-top: 37px;
    float: right;
    background-color: #eca83b;
    border-radius: 10%;
    transition: 0.5s;
}

.contact:hover{
    width: 320px;
    margin: 0px;
    margin-top: 27px;
    height: 260px;
}

HTML:

<section class="contact">
   <svg> 
   </svg>
   <h2 class="item">Contact</h2>
</section>

什么会导致这个问题?

backface-visibility: hidden 可以解决很多闪烁问题,试试吧。

为 Firefox 添加 -moz-transition: 我在此处更新了代码 试一试它应该工作

.contact{
    width: 300px;
    height: 250px;
    margin: 10px;
    margin-top: 37px;
    float: right;
    background-color: #eca83b;
    border-radius: 10%;
    transition: 0.5s;
    -moz-transition: 0.5s;
}

.contact:hover{
    width: 320px;
    margin: 0px;
    margin-top: 27px;
    height: 260px;
}

我遇到了完全相同的问题:在我构建的几个使用 CSS 变换比例的网站上,当您第一次将鼠标悬停在图像上时会出现闪烁。后来他们就好了。不会在任何其他浏览器上发生,并且只是最近发生的 - 显然是 FF 更高版本中的错误。

无论如何,只是通过更改灰度滤镜来修复它。在你的 img 上试试 CSS:

滤镜:灰度(1%);

颜色没有明显差异,但闪烁消失了!

尝试放置:

will-change: transform;

进入你的.contact

这会 pre-render 你的 object 变成 3d,所以它不应该闪烁。

有时将它放入您的 class 的 children 中也有帮助,就像您有 .contact > .img 之类的。

None 这些对我有用,但是我通过在非活动图像上设置 visibility:hidden; position: absolute; 和在活动图像上设置 visibility: visible; position: relative; 来解决这个问题。