我正在尝试在纯CSS中实现"淡出"效果。这是小提琴。我确实在网上研究了一些解决方案,然而,在网上阅读了文档后,我试图弄清楚为什么幻灯片动画不起作用。有指针吗?
.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;}
}
<div class="dummy-wrap">
<div class="success-wrap successfully-saved">Saved</div>
</div>
这里有另一种方法。
衰减In效应
.visible {
visibility: visible;
opacity: 1;
transition: opacity 2s linear;
}
淡出效果
.hidden {
visibility: hidden;
opacity: 0;
transition: visibility 0s 2s, opacity 2s linear;
}
UPDATE 1:
我发现了更多最新的教程CSS3过渡:类似fadeIn和fadeOut的效果来隐藏显示元素和工具提示示例:使用CSS3过渡在这里显示隐藏提示或帮助文本以及示例代码。
UPDATE 2:
(添加了@big money请求的详细信息(
当显示元素时(通过切换到可见类(,我们希望visibility:visible
立即生效,所以只转换不透明度属性是可以的。当隐藏元素时(通过切换到隐藏类(,我们希望延迟visibility:hidden
声明,以便我们可以首先看到淡出转换。我们通过在可见性属性上声明一个转换来实现这一点,该转换具有0s的持续时间和延迟。你可以在这里看到一篇详细的文章。
我知道我来不及回答了,但发布这个答案是为了节省其他人的时间。
您可以使用转换:
.successfully-saved.hide-opacity{
opacity: 0;
}
.successfully-saved {
color: #FFFFFF;
text-align: center;
transition: opacity 3s ease-in-out;
opacity: 1;
}
因为display
不是可设置动画的CSS属性之一。一个display:none
fadeOut动画替换为纯CSS3动画,只需在最后一帧设置width:0
和height:0
,并使用animation-fill-mode: forwards
来保留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;
}
这是您的问题的工作代码
享受编码。。。。
<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>
您忘记向.dummy-wrap
类添加位置属性,并且上/左/下/右值不适用于静态定位的元素(默认值(
http://jsfiddle.net/dYBD2/2/
.fadeOut{
background-color: rgba(255, 0, 0, 0.83);
border-radius: 8px;
box-shadow: silver 3px 3px 5px 0px;
border: 2px dashed yellow;
padding: 3px;
}
.fadeOut.end{
transition: all 1s ease-in-out;
background-color: rgba(255, 0, 0, 0.0);
box-shadow: none;
border: 0px dashed yellow;
border-radius: 0px;
}
演示在这里。
这可能会有所帮助:-
<!DOCTYPE html>
<html>
<head>
<style>
.cardiv{
height:200px;
width:100px;
background-color:red;
position:relative;
text-align:center;
overflow:hidden;
}
.moreinfo{
height:0%;
transition: height 0.5s;
opacity:1;
position: absolute;
bottom:0px;
background-color:blue;
}
.cardiv:hover .moreinfo{
opacity: 1;
height:100px;
}
</style>
</head>
<body>
<div class="cardiv">
<div class="moreinfo">Hello I am inside div</div>
</div>
</body>
</html>
使用CSS中的forwards
填充模式,使其保留在动画的最后部分。
我建议使用transform: tranlsateY(-20px);
而不是css位置,但如果你坚持使用它,那么将.dummy-wrap
位置设置为absolute
.dummy-wrap {
animation: slideup 2s forwards;
-moz-animation: slideup 2s forwards;
-webkit-animation: slideup 2s forwards;
-o-animation: slideup 2s forwards;
position: absolute;
}
@keyframes slideup {
0% {
top: 0px;
}
75% {
top: 0px;
}
100% {
top: -20px;
}
}
<div class="dummy-wrap">
<div class="success-wrap successfully-saved">Saved</div>
</div>
您可以通过Position Absolute从页面中删除元素;
然后:
transform: translateX(-200vw);
opacity: 0;
transition: opacity 0.2s;
transition-delay: 200ms;
然后,当您想要元素出现时,使用这个类:
opacity: 1;
transform: translateX(0px);
这里的逻辑是:转换->立即将元素移除/放置到视图中;而不透明处理淡入淡出效果
我们还添加了轻微的延迟和过渡延迟,使其更好的
注意:如果您不喜欢TranslateX,可以将其替换为scale(0(;比例尺(1(->使元素立即出现和消失