CSS可见性动画不起作用

Posted

技术标签:

【中文标题】CSS可见性动画不起作用【英文标题】:CSS Visibility Animation Not working 【发布时间】:2011-12-13 01:35:16 【问题描述】:

我想在可见性 CSS 属性上做一个基于关键帧的动画。我最初在“显示”上尝试过,但发现“显示”上的动画不受支持,但“可见性”支持。这个想法是让矩形的可见性不断切换。我不想使用 jquery 并想在 CSS 中实现整个它。以下是我的代码,但它没有给出矩形保持隐藏到第 5 秒的预期结果,在动画结束时出现然后再次消失

  <head>
      <style type="text/css">
     #layer1             
                -moz-animation-duration: 10s;                
        -moz-animation-name: toggle;
     

     @-moz-keyframes toggle 
             from 
                visibility:hidden;
             

         50% 
                    visibility:visible;
             

         to 
         visibility:hidden;
          
   

  </style>

  <script type="application/javascript">
      window.onload = function()              
      
           var c = document.getElementById('layer1');
           var ctxt = c.getContext('2d');
           ctxt.fillStyle = 'red';
           ctxt.fillRect(0,0,200,200);
           ctxt.fillStyle = 'green';
           ctxt.fillRect(0,0,100,100);
      

  </script>

  <body>

        <canvas id="layer1"   >         
   </canvas>

  </body>


</html>

【问题讨论】:

【参考方案1】:

可见性(和显示)属性无法设置动画。一个元素要么可见,要么不可见。请改用opacity 属性:

@-moz-keyframes toggle 
    from 
        opacity:0;
    

    50% 
        opacity:1;
    

    to 
        opacity:0;
    

【讨论】:

根据w3.org/TR/css3-transitions/#animatable-properties-,可见性是一个动画属性。甚至 Safari 文档也提到可见性可以动画developer.apple.com/library/safari/#documentation/InternetWeb/…。我什至在 2009 年看到了 Mozilla 的 BUG 修复,修复了可见性动画 可见性可以设置动画,对。但不是为了营造视觉效果。您必须将它与“真正的”动画属性一起使用。何时以及如何使用可见性作为动画属性,可以看@greywyvern.com/?post=337【参考方案2】:

可见性属性上的 CSS 过渡或动画使元素可见 在过渡期间,然后突然应用新值。 (假设当前规范并且只要没有使用特殊的计时功能。) 可见性的过渡/动画不显示逐渐变化 视觉效果,但是当我读到这个问题时,这个想法确实是 将元素隐藏到第 5 秒。

您的 CSS 动画指定了从 0% 到 50% 的第一个过渡 从隐藏变为可见,显示元素 到上面的规则,然后你指定一个从 50% 到 100% 从可见到隐藏,同时显示元素 玩。所以它永久可见的元素。

通过指定

@keyframes toggle 
         from 
            visibility:hidden;
         
     50% 
            visibility:hidden;
         
     to 
            visibility:visible;
      
 

元素会一直隐藏到 50%,然后突然出现。 要在最后隐藏它,您需要添加可见性:隐藏到 主样式表规则不适用于关键帧。 另请参阅我关于 CSS 过渡可见性的博客文章 http://www.taccgl.org/blog/css-transition-visibility.html#Appearance_CSS_Visibility

【讨论】:

这应该是答案

以上是关于CSS可见性动画不起作用的主要内容,如果未能解决你的问题,请参考以下文章

CSS可见性转换在Safari中不起作用

CSS col 可见性:折叠在 Chrome 上不起作用

从 GONE 到 VISIBLE 的 Android 可见性第一次不起作用

为视图设置动画后 setVisibility 不起作用

设置可见性不起作用 imageview

网格内的 ContentPresenter 可见性绑定不起作用?