当我用关键帧制作另一个动画时,为啥我不能为 scali 设置动画?

Posted

技术标签:

【中文标题】当我用关键帧制作另一个动画时,为啥我不能为 scali 设置动画?【英文标题】:Why can´t i animate the scali when i make another animation with keyframes?当我用关键帧制作另一个动画时,为什么我不能为 scali 设置动画? 【发布时间】:2019-02-13 01:47:45 【问题描述】:

我想让一张图片滑动(带有关键帧),然后 :hover 让它的比例变大,当 :active 时,减小它的比例。当我这样做时,它只会滑动, :hover 和 :active 不起作用...请帮助

#slide-right 
  margin-left: 25px;
  margin-right: 25px;
  margin-bottom: 25px;
  height: 250px;
  box-shadow: 0px 1px 5px grey;
  border-radius: 10px;
  transition: .5s;
	animation: slide-right 1s ease-out both;


#slide-right:hover 
  transition: .5s;
  transform: scale(1.04);


#slide-right:active 
  transition: .2s;
  transform: scale(0.95);


@keyframes slide-right 
  0% 
    transform: translateX(0);
  
  100% 
    transform: translateX(+200px);
  
<img src="https://www.w3schools.com/w3css/img_lights.jpg" id="slide-right">

【问题讨论】:

【参考方案1】:

这是因为您的关键帧动画使用 css transform 属性,而用于悬停的 css 也使用 transform 来缩放图像。因此,一次只能使用其中一个。

作为此问题的解决方法,您可以使用位置为图像的条目设置动画。

position:relative 添加到#slide-right 并将您的关键帧更新为0%left:0100%left:200px

工作示例请参考:this

【讨论】:

【参考方案2】:

#slide-right 
  position: relative;
  margin-left: 25px;
  margin-right: 25px;
  margin-bottom: 25px;
  height: 250px;
  box-shadow: 0px 1px 5px grey;
  border-radius: 10px;
  transition: .5s;
	animation: slide-right 1s ease-out forwards;



@keyframes slide-right
  0% 
    left: 0px;
  
  100% 
    left: 200px;
  


#slide-right:hover 
  transition: .5s;
  transform: scale(1.04);


#slide-right:active 
  transition: .2s;
  transform: scale(0.95);
<img src="https://www.w3schools.com/w3css/img_lights.jpg" id="slide-right">

【讨论】:

以上是关于当我用关键帧制作另一个动画时,为啥我不能为 scali 设置动画?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 css 关键帧动画保持元素动画

动画的五个关键帧都有哪些?

为啥我的链接颜色关键帧动画在 Chrome 中不起作用?

CSS关键帧动画在Safari中不起作用

移动帧时关键帧动画出现模糊?

什么是关键帧动画