CSS3过渡 - 淡出效果

78 css css-transitions

我试图在纯CSS中实现"淡出"效果.这是小提琴.我确实在线查看了几个解决方案,但是,在线阅读完文档后,我试图弄清楚为什么幻灯片动画不起作用.有什么指针吗?

这是HTML

.dummy-wrap {
  animation: slideup 2s;
  -moz-animation: slideup 2s;
  -webkit-animation: slideup 2s;
  -o-animation: slideup 2s;
}

.success-wrap {
  width: 75px;
  min-height: 20px;
  clear: both;
  margin-top: 10px;
}

.successfully-saved {
  color: #FFFFFF;
  font-size: 20px;
  padding: 15px 40px;
  margin-bottom: 20px;
  text-align: center;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  border-radius: 5px;
  background-color: #00b953;
}

@keyframes slideup {
  0% {
    top: 0px;
  }
  75% {
    top: 0px;
  }
  100% {
    top: -20px;
  }
}

@-moz-keyframes slideup {
  0% {
    top: 0px;
  }
  75% {
    top: 0px;
  }
  100% {
    top: -20px;
  }
}

@-webkit-keyframes slideup {
  0% {
    top: 0px;
  }
  75% {
    top: 0px;
  }
  100% {
    top: -20px;
  }
}

@-o-keyframes slideup {
  0% {
    top: 0px;
  }
  75% {
    top: 0px;
  }
  100% {
    top: -20px;
  }
}
Run Code Online (Sandbox Code Playgroud)

CSS

<div class="dummy-wrap">
  <div class="success-wrap successfully-saved">Saved</div>
</div>
Run Code Online (Sandbox Code Playgroud)

imm*_*odi 140

这是另一种做同样的方法.

淡出效果

.visible {
  visibility: visible;
  opacity: 1;
  transition: opacity 2s linear;
}
Run Code Online (Sandbox Code Playgroud)

淡出效果

.hidden {
  visibility: hidden;
  opacity: 0;
  transition: visibility 0s 2s, opacity 2s linear;
}
Run Code Online (Sandbox Code Playgroud)

UPDATE 1: 我找到了更多最新的教程CSS3 Transition:fadeIn和fadeOut like效果隐藏了显示元素工具提示示例:使用CSS3转换显示隐藏提示或帮助文本这里带有示例代码.

UPDATE 2: (添加了@ big-money要求的详细信息)

在显示元素时(通过切换到可见类),我们希望可见性:可见立即启动,因此只能转换不透明度属性.当隐藏元素时(通过切换到隐藏类),我们想要延迟visibility:hidden声明,这样我们就可以先看到淡出过渡.我们通过声明可见性属性的转换来做到这一点,持续时间为0,延迟为0.你可以在这里看到详细的文章.

我知道我来不及回答但发布这个答案以节省其他时间.希望它能帮到你!!

  • 很好的答案,我想在"隐藏"动画结束时添加`display:none`来擦除框,任何想法? (10认同)
  • @MMTac这不起作用,因为`display`不是[可动画的CSS属性]之一(https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties).请参阅[从"display:block"动画到"display:none"](http://www.impressivewebs.com/animate-display-block-none/). (4认同)

kar*_*ikr 77

您可以使用转换:

.successfully-saved.hide-opacity{
    opacity: 0;
}

.successfully-saved {
    color: #FFFFFF;
    text-align: center;

    -webkit-transition: opacity 3s ease-in-out;
    -moz-transition: opacity 3s ease-in-out;
    -ms-transition: opacity 3s ease-in-out;
    -o-transition: opacity 3s ease-in-out;
     opacity: 1;
}
Run Code Online (Sandbox Code Playgroud)

  • 现在不需要浏览器前缀,只需简单的 ol' ... 过渡:不透明度 3s 缓入缓出; (12认同)

Vis*_*dar 6

这是您问题的工作代码。
享受编码......

<html>
   <head>

      <style>

         .animated {
            background-color: green;
            background-position: left top;
            padding-top:95px;
            margin-bottom:60px;
            -webkit-animation-duration: 10s;animation-duration: 10s;
            -webkit-animation-fill-mode: both;animation-fill-mode: both;
         }

         @-webkit-keyframes fadeOut {
            0% {opacity: 1;}
            100% {opacity: 0;}
         }

         @keyframes fadeOut {
            0% {opacity: 1;}
            100% {opacity: 0;}
         }

         .fadeOut {
            -webkit-animation-name: fadeOut;
            animation-name: fadeOut;
         }
      </style>

   </head>
   <body>

      <div id="animated-example" class="animated fadeOut"></div>

   </body>
</html>
Run Code Online (Sandbox Code Playgroud)

  • 请附上您的解决方案的说明:它是如何工作的?为什么它与已经发布的其他解决方案不同? (3认同)

小智 6

由于display不是可设置动画的CSS属性之一;一种显示方式:不使用纯css3动画替换fadingOut动画,只需在最后一帧设置width:0和height:0,然后使用animation-fill-mode:转发以保持width:0和height:0属性;

@-webkit-keyframes fadeOut {
    0% { opacity: 1;}
    99% { opacity: 0.01;width: 100%; height: 100%;}
    100% { opacity: 0;width: 0; height: 0;}
}  
@keyframes fadeOut {
    0% { opacity: 1;}
    99% { opacity: 0.01;width: 100%; height: 100%;}
    100% { opacity: 0;width: 0; height: 0;}
}

.display-none.on{
    display: block;
    -webkit-animation: fadeOut 1s;
    animation: fadeOut 1s;
    animation-fill-mode: forwards;
}
Run Code Online (Sandbox Code Playgroud)

  • 查看[**高性能动画**](https://www.html5rocks.com/en/tutorials/speed/high-performance-animations/)。您应该避免使用触发重新布局的 CSS 属性,“width”和“height”都是敏感的。 (3认同)