作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在背景图片上尝试 CSS3 动画。一切正常,问题是在 Chrome 上,当动画正在进行时,文本最终变得模糊:
动画期间:
关闭动画:
如您所见,当动画关闭时文本渲染正常,我知道文本渲染存在常见问题,但我不明白为什么当动画正在进行时 Chrome 上的渲染效果很差。我不确定我真的能做些什么。我已经在 Firefox 和 IE 上测试了动画,没问题。顺便说一句,我在 Windows 上工作。
火狐:
即:
编辑
.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。
使用这种方法,不需要使用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/
我是一名优秀的程序员,十分优秀!