我有一个CSS动画,我在我的网站上使用来动画箭头来回动画。它在每个浏览器上工作正常,除了IE,其中有一个奇怪的故障,箭头的Y位置正在改变,即使它不应该。
$(function() {
$('button').click(function(e) {
e.preventDefault();
$('img.next').addClass('animated');
});
});
.arrow-cont {
height:100%;
width:130px;
position:absolute;
right:0;
top:0;
cursor:pointer;
overflow:hidden;
}
img.next {
width:30px;
position:absolute;
top:50%;
right:20px;
animation-duration:1.5s;
animation-timing-function:ease-in-out;
transition:0.5s all ease-in-out;
}
img.next.animated {
animation-name:next;
animation-iteration-count:infinite;
}
@keyframes next {
from { transform:translate(0px, -50%); }
65% { transform:translate(10px, -50%); }
to { transform:translate(0px, -50%); }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="arrow-cont">
<img class="next" src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Arrow_Blue_Right_001.svg/768px-Arrow_Blue_Right_001.svg.png" />
</div>
<button>Animate</button>
尝试分别设置translateX
和translateY
属性。
另外,我不确定你为什么设置transition:0.5s all ease-in-out
,因为没有任何东西正在过渡。所以我删除了这个。
$(function() {
$('button').click(function(e) {
e.preventDefault();
$('img.next').addClass('animated');
});
});
.arrow-cont {
height: 100%;
width: 130px;
position: absolute;
right: 0;
top: 0;
cursor: pointer;
overflow: hidden;
}
img.next {
width: 30px;
position: absolute;
top: 50%;
right: 20px;
animation-duration: 1.5s;
animation-timing-function: ease-in-out;
transform: translateY(-50%) translateX(0px);
}
img.next.animated {
animation-name: next;
animation-iteration-count: infinite;
}
@keyframes next {
from {
transform: translateY(-50%) translateX(0px);
}
65% {
transform: translateY(-50%) translateX(10px);
}
to {
transform: translateY(-50%) translateX(0px);
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="arrow-cont">
<img class="next" src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Arrow_Blue_Right_001.svg/768px-Arrow_Blue_Right_001.svg.png" />
</div>
<button>Animate</button>