我在Safari上遇到了一个奇怪的问题(很奇怪吗?哈哈)。无论您使用iPhone、iPad还是桌面Mac,Safari都会在使用动画关键帧和变换时进行错误的计算来定位一个标志。
问题是标志需要移动到它的位置,但在Safari上,标志向左移动过多,当关键帧达到100%时,标志恰好适合它的位置。
您可以在以下网址上看到这个奇怪的效果:https://amonarraiz.com(在Safari上的访问与在其他浏览器上的访问不同,但代码相同)。
以下是我的代码:
我不知道问题出在哪里。所有浏览器都能完美地呈现它(包括Google Chrome的模拟器),但是Safari(iOS / Mac)在动画运行时无法正确呈现它(当动画结束时,标志会停留在它的位置)。
如果您需要更多详细信息,请告诉我,我将尽快添加它们。
谢谢。
编辑
我将添加一个赏金,因为这没有得到足够的关注。
问题是标志需要移动到它的位置,但在Safari上,标志向左移动过多,当关键帧达到100%时,标志恰好适合它的位置。
您可以在以下网址上看到这个奇怪的效果:https://amonarraiz.com(在Safari上的访问与在其他浏览器上的访问不同,但代码相同)。
以下是我的代码:
.intro-wrapper {
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
}
.intro-logo {
background: url(https://amonarraiz.com/css/img/slider/2.png) center center no-repeat;
background-size: cover;
width: 50rem;
height: 41rem;
position: absolute;
left: 50%;
top: 50%;
-ms-transform: translate(-86%, -52%);
-webkit-transform: translate(-86%, -52%);
transform: translate(-86%, -52%);
opacity: 0;
cursor: pointer;
}
.intro-in {
-moz-animation-duration: 3.75s;
-webkit-animation-duration: 3.75s;
animation-duration: 3.75s;
-moz-animation-name: intro-in;
-webkit-animation-name: intro-in;
animation-name: intro-in;
-moz-animation-iteration-count: 1;
-webkit-animation-iteration-count: 1;
animation-iteration-count: 1;
-moz-animation-fill-mode: forwards;
-webkit-animation-fill-mode: forwards;
animation-fill-mode: forwards;
-webkit-animation-timing-function: ease-in-out;
-moz-animation-timing-function: ease-in-out;
animation-timing-function: ease-in-out;
}
@-moz-keyframes intro-in {
0% {
opacity: 0.6;
width: 50rem;
height: 41rem;
-ms-transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
30% {
opacity: 1;
width: 50rem;
height: 41rem;
-ms-transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
100% {
opacity: 1;
width: 25.6rem;
height: 19.5rem;
-ms-transform: translate(-106%, -46%);
-webkit-transform: translate(-106%, -46%);
transform: translate(-106%, -46%);
}
}
@-webkit-keyframes intro-in {
0% {
opacity: 0.6;
width: 50rem;
height: 41rem;
-ms-transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
30% {
opacity: 1;
width: 50rem;
height: 41rem;
-ms-transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
100% {
opacity: 1;
width: 25.6rem;
height: 19.5rem;
-ms-transform: translate(-106%, -46%);
-webkit-transform: translate(-106%, -46%);
transform: translate(-106%, -46%);
}
}
@keyframes intro-in {
0% {
opacity: 0.6;
width: 50rem;
height: 41rem;
-ms-transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
30% {
opacity: 1;
width: 50rem;
height: 41rem;
-ms-transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
100% {
opacity: 1;
width: 25.6rem;
height: 19.5rem;
-ms-transform: translate(-106%, -46%);
-webkit-transform: translate(-106%, -46%);
transform: translate(-106%, -46%);
}
}
<div class="intro-wrapper">
<div class="intro-logo intro-in"></div>
</div>
如果您需要更多详细信息,请告诉我,我将尽快添加它们。
谢谢。
编辑
我将添加一个赏金,因为这没有得到足够的关注。