我有一个css动画微调器。它使用动画来旋转。元素上有一个边框,它:before和its:after。每个边界以不同的速度旋转。它在第一页加载时效果很好,但在IE中,如果它被隐藏然后再次显示,它们都以相同的速度旋转。
这是一个演示问题的小提琴:Fiddle
这是我的css:
.loader-wrapper {
position: relative;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1000;
}
.loader-wrapper .loader {
display: block;
position: absolute;
left: 50%;
top: 50%;
width: 150px;
height: 150px;
margin: -75px 0 0 -75px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #2372b9;
-webkit-animation: spin 2s linear infinite;
/* Chrome, Opera 15+, Safari 5+ */
-moz-animation: spin 2s linear infinite;
-o-animation: spin 2s linear infinite;
animation: spin 2s linear infinite;
/* Chrome, Firefox 16+, IE 10+, Opera */
}
.loader-wrapper .loader:before {
content: "";
position: absolute;
top: 5px;
left: 5px;
right: 5px;
bottom: 5px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #f47b27;
-webkit-animation: spin 3s linear infinite;
/* Chrome, Opera 15+, Safari 5+ */
-moz-animation: spin 3s linear infinite;
-o-animation: spin 3s linear infinite;
animation: spin 3s linear infinite;
/* Chrome, Firefox 16+, IE 10+, Opera */
}
.loader-wrapper .loader:after {
content: "";
position: absolute;
top: 15px;
left: 15px;
right: 15px;
bottom: 15px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #6ba543;
-moz-animation: spin 1.5s linear infinite;
-o-animation: spin 1.5s linear infinite;
-webkit-animation: spin 1.5s linear infinite;
animation: spin 1.5s linear infinite;
/* Chrome, Firefox 16+, IE 10+, Opera */
}
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0);
/* Chrome, Opera 15+, Safari 3.1+ */
-ms-transform: rotate(0);
/* IE 9 */
-moz-transform: rotate(0);
-o-transform: rotate(0);
transform: rotate(0);
/* Firefox 16+, IE 10+, Opera */
}
100% {
-webkit-transform: rotate(360deg);
/* Chrome, Opera 15+, Safari 3.1+ */
-ms-transform: rotate(360deg);
/* IE 9 */
-moz-transform: rotate(360deg);
-o-transform: rotate(360deg);
transform: rotate(360deg);
/* Firefox 16+, IE 10+, Opera */
}
}
@-moz-keyframes spin {
0% {
-webkit-transform: rotate(0);
/* Chrome, Opera 15+, Safari 3.1+ */
-ms-transform: rotate(0);
/* IE 9 */
-moz-transform: rotate(0);
-o-transform: rotate(0);
transform: rotate(0);
/* Firefox 16+, IE 10+, Opera */
}
100% {
-webkit-transform: rotate(360deg);
/* Chrome, Opera 15+, Safari 3.1+ */
-ms-transform: rotate(360deg);
/* IE 9 */
-moz-transform: rotate(360deg);
-o-transform: rotate(360deg);
transform: rotate(360deg);
/* Firefox 16+, IE 10+, Opera */
}
}
@keyframes spin {
0% {
-webkit-transform: rotate(0);
/* Chrome, Opera 15+, Safari 3.1+ */
-ms-transform: rotate(0);
/* IE 9 */
-moz-transform: rotate(0);
-o-transform: rotate(0);
transform: rotate(0);
/* Firefox 16+, IE 10+, Opera */
}
100% {
-webkit-transform: rotate(360deg);
/* Chrome, Opera 15+, Safari 3.1+ */
-ms-transform: rotate(360deg);
/* IE 9 */
-moz-transform: rotate(360deg);
-o-transform: rotate(360deg);
transform: rotate(360deg);
/* Firefox 16+, IE 10+, Opera */
}
}
我的HTML:
<div class="loader-wrapper">
<div class="loader"></div>
</div>
<a href="javascript:void(0);">Hide/show</a>
我的javascript:
$("a").on("click", function() {
if($(".loader").is(":visible")) {
$(".loader").hide();
}
else {
$(".loader").show();
}
});
答案 0 :(得分:0)
我不知道为什么会发生这种情况 - 你可能只是在IE对display属性的解释中发现了一个错误,或者它是如何处理伪元素的。你最好的选择可能是尝试另一种方法,例如。使用overflow: hidden
.hide {
height: 0;
overflow: hidden;
}