CSS 使用 translate3d 的加载程序在 Internet Explorer 11 中不起作用
CSS loader using translate3d doesn't work in Internet Explorer 11
此 CSS 加载程序在 Internet Explorer 11 中不起作用,它仅显示第一个关键帧,然后没有其他任何事情发生。
.loader {
position: absolute;
top: 50%;
left: 50%;
margin-top: -1em;
margin-left: -1em;
width: calc(2em + 1px);
height: calc(2em + 1px);
font-size: 10px;
line-height: 1em;
transform: translateZ(0);
}
.loader div {
position: absolute;
top: 0;
left: 0;
width: 1em;
height: 1em;
background: orange;
transform: translate3d(0em, 0em, 0) scale(0);
animation: loaderStart 0.25s, loaderMove 1.5s 0.25s ease-in-out infinite;
}
.loader div:nth-child(2) {
opacity: 0.65;
animation: loaderStart 0.25s 0.5s, loaderMove 1.5s 0.75s ease-in-out infinite;
}
.loader div:nth-child(3) {
opacity: 0.35;
animation: loaderStart 0.25s 0.5s, loaderMove 1.5s 1.25s ease-in-out infinite;
}
.nav__top .loader {
position: relative;
left: auto;
top: auto;
padding-top: 2em;
margin-left: 2em;
display: inline-block;
}
.konkurs-search__form-wrapper .loader {
left: auto;
margin-top: -0.2em;
right: 20px;
}
@keyframes loaderStart {
0% {
transform: scale(0);
}
100% {
transform: scale(1);
}
}
@keyframes loaderMove {
0% {
transform: translate3d(0, 0em, 0);
}
13% {
transform: translate3d(0, calc(1em + 1px), 0);
}
25% {
transform: translate3d(0, calc(1em + 1px), 0);
}
38% {
transform: translate3d(calc(1em + 1px), calc(1em + 1px), 0);
}
50% {
transform: translate3d(calc(1em + 1px), calc(1em + 1px), 0);
}
63% {
transform: translate3d(calc(1em + 1px), 0em, 0);
}
75% {
transform: translate3d(calc(1em + 1px), 0em, 0);
}
88% {
transform: translate3d(0em, 0em, 0);
}
100% {
transform: translate3d(0em, 0em, 0);
}
}
<div class="loader">
<div></div>
<div></div>
<div></div>
</div>
谁能看出问题出在哪里?我有一个想法,它可能是 translate3d,但不确定。
如果您查看 caniuse.com,看起来 Internet Explorer 11 应该支持所有内容,但显然有些地方出了问题。
这里的问题是 transform:translate3d(calc(1em + 1px) ,
我认为 calc 方法在 translate 或 translate3d 中不起作用。
我做了一些改动,它似乎在工作,
@keyframes loaderMove {
0% {
transform: translate3d(0, 0em, 0);
}
13% {
transform: translate3d(0, 17px, 0);
}
25% {
transform: translate3d(0, 17px, 0);
}
38% {
transform: translate3d(17px, 16px, 0);
}
50% {
transform: translate3d(17px, 17px, 0);
}
63% {
transform: translate3d(17px, 0em, 0);
}
75% {
transform: translate3d(17px, 0em, 0);
}
88% {
transform: translate3d(0em, 0em, 0);
}
100% {
transform: translate3d(0em, 0em, 0);
}
}
此 CSS 加载程序在 Internet Explorer 11 中不起作用,它仅显示第一个关键帧,然后没有其他任何事情发生。
.loader {
position: absolute;
top: 50%;
left: 50%;
margin-top: -1em;
margin-left: -1em;
width: calc(2em + 1px);
height: calc(2em + 1px);
font-size: 10px;
line-height: 1em;
transform: translateZ(0);
}
.loader div {
position: absolute;
top: 0;
left: 0;
width: 1em;
height: 1em;
background: orange;
transform: translate3d(0em, 0em, 0) scale(0);
animation: loaderStart 0.25s, loaderMove 1.5s 0.25s ease-in-out infinite;
}
.loader div:nth-child(2) {
opacity: 0.65;
animation: loaderStart 0.25s 0.5s, loaderMove 1.5s 0.75s ease-in-out infinite;
}
.loader div:nth-child(3) {
opacity: 0.35;
animation: loaderStart 0.25s 0.5s, loaderMove 1.5s 1.25s ease-in-out infinite;
}
.nav__top .loader {
position: relative;
left: auto;
top: auto;
padding-top: 2em;
margin-left: 2em;
display: inline-block;
}
.konkurs-search__form-wrapper .loader {
left: auto;
margin-top: -0.2em;
right: 20px;
}
@keyframes loaderStart {
0% {
transform: scale(0);
}
100% {
transform: scale(1);
}
}
@keyframes loaderMove {
0% {
transform: translate3d(0, 0em, 0);
}
13% {
transform: translate3d(0, calc(1em + 1px), 0);
}
25% {
transform: translate3d(0, calc(1em + 1px), 0);
}
38% {
transform: translate3d(calc(1em + 1px), calc(1em + 1px), 0);
}
50% {
transform: translate3d(calc(1em + 1px), calc(1em + 1px), 0);
}
63% {
transform: translate3d(calc(1em + 1px), 0em, 0);
}
75% {
transform: translate3d(calc(1em + 1px), 0em, 0);
}
88% {
transform: translate3d(0em, 0em, 0);
}
100% {
transform: translate3d(0em, 0em, 0);
}
}
<div class="loader">
<div></div>
<div></div>
<div></div>
</div>
谁能看出问题出在哪里?我有一个想法,它可能是 translate3d,但不确定。 如果您查看 caniuse.com,看起来 Internet Explorer 11 应该支持所有内容,但显然有些地方出了问题。
这里的问题是 transform:translate3d(calc(1em + 1px) , 我认为 calc 方法在 translate 或 translate3d 中不起作用。
我做了一些改动,它似乎在工作,
@keyframes loaderMove {
0% {
transform: translate3d(0, 0em, 0);
}
13% {
transform: translate3d(0, 17px, 0);
}
25% {
transform: translate3d(0, 17px, 0);
}
38% {
transform: translate3d(17px, 16px, 0);
}
50% {
transform: translate3d(17px, 17px, 0);
}
63% {
transform: translate3d(17px, 0em, 0);
}
75% {
transform: translate3d(17px, 0em, 0);
}
88% {
transform: translate3d(0em, 0em, 0);
}
100% {
transform: translate3d(0em, 0em, 0);
}
}