我有一个CSS3过渡,但在过渡结束时我的旋转重置为正常状态。 HTML和CSS很简单:
HTML
<a href="#"><span></span>Test</a>
CSS
a {
text-decoration: none;
}
a span {
display: inline-block;
width: 25px;
}
a span:before {
content:'>';
font-size: 10px;
font-weight: bold;
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
-ms-transition: all 0.5s;
-o-transition: all 0.5s;
transition: all 0.5s;
}
a:hover span:before {
margin-left: 55%;
-webkit-transform: rotate(-90deg);
}
转换按预期进行,但在动画结束时,旋转将重置为正常状态而不是持续存在。我创建了一个JSFiddle as an example。如何保持我的轮换持续?
答案 0 :(得分:11)
尝试添加display: inline-block
像这样:
a:hover span:before {
margin-left: 55%;
-webkit-transform: rotate(90deg);
display: inline-block;
}
解释
默认情况下,:before
或:after
等伪元素是内联的,因此它们存在转换问题,因此您需要将它们设置为display: block
或{{1} }。
答案 1 :(得分:1)
margin
用于动画使用translate
istead。<强> HTML 强>
<a href="#"><span>></span>Test</a>
<强> CSS 强>
a {
text-decoration: none;
}
a span {
display: inline-block;
width: 25px;
}
a span{
font-size: 10px;
font-weight: bold;
-webkit-transition: all 0.5s linear;
-moz-transition: all 0.5s linear;
-ms-transition: all 0.5s linear;
-o-transition: all 0.5s linear;
transition: all 0.5s linear;
}
a:hover span{
-webkit-transform: rotate(-90deg) translateX(50%);
-moz-transform: rotate(-90deg) translateX(50%);
-ms-transform: rotate(-90deg) translateX(50%);
-o-transform: rotate(-90deg) translateX(50%);
transform: rotate(-90deg) translateX(50%);
}