gpt4 book ai didi

CSS3 动画导致文本渲染不佳

转载 作者:行者123 更新时间:2023-11-28 08:52:07 26 4
gpt4 key购买 nike

我正在背景图片上尝试 CSS3 动画。一切正常,问题是在 Chrome 上,当动画正在进行时,文本最终变得模糊:

动画期间:

enter image description here

关闭动画:

enter image description here

如您所见,当动画关闭时文本渲染正常,我知道文本渲染存在常见问题,但我不明白为什么当动画正在进行时 Chrome 上的渲染效果很差。我不确定我真的能做些什么。我已经在 Firefox 和 IE 上测试了动画,没问题。顺便说一句,我在 Windows 上工作。

火狐:

enter image description here

即:

enter image description here

编辑

.bg-div {
position: fixed;
width: 110%;
height: 110%;
transform: translate(-5%, -5%);
-moz-transform: translate(-5%, -5%) rotate(0.02deg); /* rotation to solve choppy animation on Firefox */
-ms-transform: translate(-5%, -5%);
background-image: url('images/colour-test.jpg');
background-size: cover;
-webkit-animation: bg-animation 10s linear infinite;
-moz-animation: bg-animation 10s linear infinite;
-ms-animation: bg-animation 10s linear infinite;
}

@-webkit-keyframes bg-animation {
25% { transform: translate(-5.5%, -5.5%); }
50% { transform: translate(-5.3%, -4.9%); }
75% { transform: translate(-4.8%, -4.3%); }
}
@-moz-keyframes bg-animation {
25% { -moz-transform: translate(-5.5%, -5.5%) rotate(0.02deg); }
50% { -moz-transform: translate(-5.3%, -4.9%) rotate(0.02deg); }
75% { -moz-transform: translate(-4.8%, -4.3%) rotate(0.02deg); }
}
@-ms-keyframes bg-animation {
25% { -ms-transform: translate(-5.5%, -5.5%); }
50% { -ms-transform: translate(-5.3%, -4.9%); }
75% { -ms-transform: translate(-4.8%, -4.3%); }
}
.content {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 50%;
height: 65%;
text-align: center;
}

阅读评论中发布的问题和答案后,我尝试将 -webkit-font-smoothing: subpixel-antialiased; 添加到 .bg-div 但是这没有任何区别。

编辑 2

好吧,这有点奇怪,在动画期间显然 position: fixed 使文本变得模糊。我不知道这是怎么可能的,无论如何,一旦我删除了 position: fixed 并且背景正在动画,文本就会正确显示。这仍然不是我想要的,因为我需要修复背景。

最佳答案

在我的测试中,如果 .content 上没有使用 transform,问题就解决了。幸运的是,您不需要使用转换来定位您的内容 div。

使用这个 margin: auto trick to position instead

  • 使用这种方法,不需要使用transform: translate(-50%, -50%)

  • 内容通过上、右、下、左、margin: auto 和百分比宽度和高度的组合居中。

.content {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
width: 50%;
height: 65%;
text-align: center;
}

工作示例

body { margin: 0 auto; width: 500px }

.bg-div {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: auto;
width: 800px;
height: 800px;
transform: translate(-5%, -5%);
background: url('http://www.placehold.it/800') no-repeat;
-webkit-animation: bg-animation 2s linear infinite;
animation: bg-animation 2s linear infinite;
}
@-webkit-keyframes bg-animation {
0% {
transform: translate(-5.5%, -5.5%);
}
50% {
transform: translate(-5%, -5%);
}
100% {
transform: translate(-5.5%, -5.5%);
}
}
@keyframes bg-animation {
0% {
transform: translate(-5.5%, -5.5%);
}
50% {
transform: translate(-5%, -5%);
}
100% {
transform: translate(-5.5%, -5.5%);
}
}
.content {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
width: 50%;
height: 65%;
text-align: center;
}
<div class="bg-div"></div>

<div class="content">
<h1>This looks better</h1>
<input value="Text" />
</div>

关于CSS3 动画导致文本渲染不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26388769/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com