我需要使用Dojo制作这个css3动画,但是我没有得到想要的结果。箭头应该在悬停时反弹。类似于这个http://codepen.io/dodozhang21/pen/siKtp,但是水平。HTML:
<a href="#" class="uiAnimatedArrow" title="Buying a Home">
<!-- -->
<span>
<i data-copy="Learn More"><b></b></i>
Buying a Home
</span>
</a>
CSS:
a.uiAnimatedArrow i b {
position: absolute;
top: 50%;
width: 9px;
height: 12px;
margin: -6px 0 0 0;
content: '';
background: url("/assets/images/icons/arrow-right-black.png") 0 0 no-repeat;
right: 13px;
}
a.uiAnimatedArrow span:hover i b {
-webkit-animation: bounce 1.5s infinite;
-moz-animation: bounce 1.5s infinite;
-ms-animation: bounce 1.5s infinite;
-o-animation: bounce 1.5s infinite;
animation: bounce 1.5s infinite;
}
有什么建议吗?
1条答案
按热度按时间bprjcwpo1#
要在Dojo中做到这一点,您必须使用
dojo/_base/fx
来动画化right
属性。然而,您不能在单个动画中这样做,因为定义了多个关键帧。因此,您必须在以下情况下将其拆分(如果您希望它类似于给定的Codepen):因此,我们需要4个独立的动画,从20%到40%,从40%到50%,从50%到60%和从60%到80%。
使用
dojo/_base/fx
,您可以创建如下内容:在本例中,我为给定的
duration
动画right
属性。持续时间基于关键帧百分比 * 总动画(Codepen中的2s
)。我还使用
dojo/fx/easing
添加了一个easing
属性,因为否则它只是一个线性动画,对我来说感觉不自然。要调用动画,我们需要创建两个事件监听器,一个
mouseenter
监听器和一个mouseleave
监听器。在mouseenter
监听器中,我们必须链接动画并播放它。要链接它们,您可以使用dojo/fx::chain()
函数。但是,这只会播放动画一次。要无限地运行它,我们使用setInterval()
函数每2秒重复一次动画:现在,在
mouseleave
事件处理程序中,我们必须清除间隔,如果动画正在播放,我们必须停止动画。然而,停止动画可能会导致箭头停在“半空中”,所以我们必须正确地将其放回右侧,您也可以对动画执行此操作:这应该就是全部内容了,您可以查看JSFiddle上的完整示例:http://jsfiddle.net/ro55btas/