【状态平滑的动画】鼠标移出动画暂停

假设我们有一张非常长宽幅的照片,但只提供一个150 x 150的区域利用动画来展示它。

<div class="one">
</div>

我们给它加上动画属性,并且改变它的background- position属性,当它的值从原来的 0 0一直变化到100% 0时,鼠标悬停在图片上我们就会看到这张图片从左滚动到右的完整过程。

@keyframes one{
  to { background-position: 100% 0;}
}
.one {
  width:150px;
  height:150px;
  background: url("xxx.jpg" );
  background-size: auto 100%;   /*此处把图片的高度设置为可视区域的高度*/
}
.one:hover, .one:focus {
    animation:one 10s linear infinite alternate;
}


不过,当我们把鼠标从图片上移出时,它就会生硬的跳回最左侧,最初的样子。
而我们所期待的是当鼠标移出时,图片就暂停在当下,当鼠标又放上去时,动画继续的效果。此时就会用到 animation-play-state
因此我们需要把动画加在.one这条样式中,让它一开始就处于暂停状态,直到 :hover 时再启动动画。这再也不是添加和取消动画的问题了,而是 暂停和继续一个一直存在的动画。

@keyframes one{
  to { background-position: 100% 0;}
}
.one {
  width:150px;
  height:150px;
  background: url("http://seopic.699pic.com/photo/00000/9982.jpg_wh1200.jpg" );
  background-size: auto 100%;
  animation:one 10s linear infinite alternate;
  animation-play-state: paused;   /*动画处于暂停状态*/
}
.one:hover, .one:focus {
  animation-play-state: running;   /*鼠标悬停时动画便运行*/
}

这时,便能得到我们想要的效果了。

<u>查看demo</u>


参考书籍:Lea Verou《CSS揭秘》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,557评论 6 30
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,141评论 5 13
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 1,792评论 0 2
  • 看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印象,因...
    DCbryant阅读 1,895评论 0 4
  • 蔡颖卿的书很有烟火气,很亲切,很生活,她的语言很朴实,很真切! 今天在车上读完了这本书,当时就想我一定要写一篇简书...
    紫漠的梦想森林阅读 175评论 0 0