有这么一个需求,利用antd组件库中的BackTop组件的逻辑,但是自己写样式。
我的目标样式是:有两张图片,一张是normal(正常情况),一张是hover(悬停情况)。
这时候就要用到css的动画了
这是第一版,也是错误的版本
下面是jsx的代码
- <BackTop>
- <div className="normal-top"></div>
- </BackTop>
这是css的样式代码
- .mybacktop .normal-top {
- height: 50px;
- width: 50px;
- background: url(../../img/topnormal.png) no-repeat;
- text-align: center;
- }
- .mybacktop .normal-top:hover {
- animation: changebacktopimg 0.3s forwards;
- -webkit-animation: changebacktopimg 0.3s forwards;
- }
- @keyframes changebacktopimg {
- from {
- background: url(../../img/topnormal.png) no-repeat;
- }
- to {
- background: url(../../img/topfocus.png) no-repeat;
- }
- }
这样子写的话,hover的时候图片消失了。经过我一番研究发现我的动画和antd的动画重叠了。所以我再写了一个div作为包裹,并给上antd该组件相关的类名,然后在里面的div写上自己的动画,这个功能就完成了!
下面是jsx的代码
- <BackTop>
- <div className="ant-fade-enter ant-fade-enter-active ant-fade">
- <div className="normal-top"></div>
- </div>
</BackTop>
下面是css的代码(其实css的代码没变)
- .mybacktop .normal-top {
- height: 50px;
- width: 50px;
- background: url(../../img/topnormal.png) no-repeat;
- text-align: center;
- }
- .mybacktop .normal-top:hover {
- animation: changebacktopimg 0.3s forwards;
- -webkit-animation: changebacktopimg 0.3s forwards;
- }
- @keyframes changebacktopimg {
- from {
- background: url(../../img/topnormal.png) no-repeat;
- }
- to {
- background: url(../../img/topfocus.png) no-repeat;
- }
- }