CSS转换和CSS动画的用例

CSS转换和CSS动画的用例,css,css-transitions,css-animations,Css,Css Transitions,Css Animations,据我所知,没有这样的东西我们可以实现使用css转换,但我们不能实现使用css动画,但反之亦然 也就是说,任何转换都有一个css动画等价物。 比如说这个, .ablock:hover { position: relative; -moz-transition-property: background-

据我所知,没有这样的东西我们可以实现使用css转换,但我们不能实现使用css动画,但反之亦然

也就是说,任何转换都有一个css动画等价物。 比如说这个,

.ablock:hover {                                                   
  position: relative;                                             
  -moz-transition-property: background-color, color;              
  -moz-transition-duration: 1s;                                   
  -webkit-transition-property: background-color, color;           
  -webkit-transition-duration: 1s;                                                             
  color: red;                                                     
  background-color:pink;                                          
}
相当于以下内容:

.ablock:hover {
    -moz-animation-duration:1s;                                   
    -moz-animation-name:transition;                               
    -webkit-animation-duration:1s;                                
    -webkit-animation-name:transition;                            
}       

@-moz-keyframes transition {                                      
    to {                                                          
        color: red;                                               
        background-color: pink;                                   
    }
}       

@-webkit-keyframes transition {                                   
    to {                                                          
        color: red;                                               
        background-color: pink;                                   
    }
}
我的问题是——如果我们谈论一个同时支持css转换和动画的浏览器,那么选择一种或另一种方法的用例是什么? 至于转换,我只能列举一个-它们有更简洁的语法,我们不必为@-moz关键帧、@-webkit关键帧等复制粘贴大量代码

对于javascript的控制,灵活性和复杂性动画是更合适的工具(至少乍一看是这样)。那么,什么是用例

UPD: 好的,让我试着列出在问题中发现的有趣信息

  • 这是罗曼·科马罗夫的作品。比方说,我们有一个div和子div。当父div悬停时,我们正在转换子元素。一旦我们拿走鼠标,转换就会被取消。取消的持续时间正是我们已经花在过渡上的时间。动画“立即”取消。然而,我不知道这两种行为有多标准
      • 动画可以循环(当然也可以有关键帧)
      • 转换可以更加灵活,您可以轻松地在不同的环境中转换到不同的值
      虽然您可以通过动画模拟某些过渡(如您在文章中提到的),但过渡功能更强大:

      • 您只需告诉哪些属性必须设置动画,以及在哪些条件下(使用不同的选择器)
      • 您可以通过不同的方式触发转换:
      • 更改CSS中伪类的属性:hover、:active等(创建纯CSS UI)
      • 为不同的目的更改不同类中的属性
      • 更改内联样式中的属性:与JS结合使用,它比动画更强大

      通过转换,您可以在要转换的已定义属性的任何值之间进行转换。例如,当链接悬停并处于活动状态时,您希望转换链接的颜色:

      a {
          color: #000;
          transition: color .4s ease;
      }
      a:hover {
          color: #888;
      }
      a:active {
          color: #faa;
      }
      
      你是独立的,你选择哪种颜色。 现在,如果要使用动画样式,必须显式设置动画状态的颜色值。而且,您无法在三种状态之间轻松设置动画:正常、悬停和活动。您需要更复杂的定义。我将尝试这一个与动画:

      a {
          color: #000;
          animation-duration: 0.4s;
          animation-fill-mode: forwards;
          animation-name: toDefault;
      }
      a:hover {
          animation-duration: 0.4s;
          animation-fill-mode: forwards;
          animation-name: toHover;
      }
      a:active {
          animation-duration: 0.4s;
          animation-fill-mode: forwards;
          animation-name: toActive;
      }
      @keyframes toDefault {
          to {
              color: #000;
          }
      }
      @keyframes toHover {
          to {
              color: #888;
          }
      }
      @keyframes toActive {
          to {
              color: #faa;
          }
      }
      
      现在,这不包括动画恢复到之前的状态。我不确定你能不能把它拿来


      简而言之:通过变换,您可以为未定义的一组属性和值设置动画,而关键帧动画用于定义良好的动画和/或变换。

      Roman,谢谢您的回答,但老实说,我不明白主要意思。你能给我一个css转换的例子,我们不能通过css动画来实现吗?@shabunc你可以通过动画来实现任何一个转换,但是我知道你不能在它运行时改变它(或者很难做到)。@shabunc,在许多情况下,转换非常容易:看-在这里你只改变了一个属性(
      left
      top
      ),转换就可以了,但是如果你尝试用动画来实现这一点…你必须为滑块的每一个可能的转换都做一个。Roman,我给你这个奖励。但令人遗憾的是,社区并不真正欣赏这样的问题。我欣赏这个问题和回答。在chrome中,这些例子并不等同——在第一个例子中,鼠标悬停时变为粉红色,然后停留在那里(直到你移开鼠标),而在第二个例子中变为粉红色,完成后,将切换回默认值:。此外,在动画中执行过渡计时功能(如“缓入缓出”)有多容易?我试图找出当您将鼠标移离某个元素时如何使颜色转换返回,但无法使其工作:。也许那是不可能的?因此,这将是一个主要的区别——以及无法持久化转换后的值。