Han*_*com 14 css css3 fadein css-transitions css-animations
原始问题...更新下面的工作代码:
我有一个加载图像,在ajax加载事件期间出现.通过向body元素添加或删除"loading"类来显示/隐藏图像.目前,加载图像将背景大小设置为0到100%,并且不透明度渐变(反之亦然,"返回"转换).
但是,我想要实现的是在淡出时立即进行背景大小转换(而不是转换),因此:
淡出:在.2s内从1到0的不透明度,从100%到0的背景大小应立即发生
#loader {
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
z-index: -1;
opacity: 0;
-moz-opacity: 0;
transition: all .2s ease-in-out
}
#loader .image {
width: 400px;
height: 138px;
display: block;
position: absolute;
z-index: 2000;
top: 50%;
left: 50%;
margin: 0;
background: url(assets/images/loading.png) no-repeat;
background-size: 0 0;
transition: all .2s ease-in-out;
-webkit-animation: pulse 400ms ease-out infinite alternate;
-moz-animation: pulse 400ms ease-out infinite alternate;
-o-animation: pulse 400ms ease-out infinite alternate;
animation: pulse 400ms ease-out infinite alternate
}
.loading #loader {z-index: 1000; background-color: rgba(255,255,255,.7)}
.loading #loader .image {
background-size: 100% 100%;
margin: -69px 0 0 -200px;
transition: opacity .2s ease-in-out
}
Run Code Online (Sandbox Code Playgroud)我已将此选择器的过渡属性更改.loading #loader .image为"不透明度"而不是"全部",但它仍然执行背景大小过渡.
有谁知道如何使用css3实现上述不同的淡入和淡出过渡?谢谢!
更新的工作准则
问题是将各个属性(边距,背景)分成逗号分隔列表.我相信使用转换:所有将阻止您能够执行不同的IN和OUT转换.
#loader {
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
z-index: -1;
opacity: 0;
-moz-opacity: 0;
.transition(opacity,.4s);
}
#loader .image {
width: 400px;
height: 138px;
display: block;
position: absolute;
z-index: 2000;
top: 50%;
left: 50%;
margin: 0;
background: url(assets/images/loading.png) no-repeat;
background-size: 0 0;
-webkit-transition: margin .4s ease-in-out;
-moz-transition: margin .4s ease-in-out;
-o-transition: margin .4s ease-in-out;
-ms-transition: margin .4s ease-in-out;
transition: margin .4s ease-in-out;
-webkit-animation: pulse 400ms ease-out infinite alternate;
-moz-animation: pulse 400ms ease-out infinite alternate;
-o-animation: pulse 400ms ease-out infinite alternate;
animation: pulse 400ms ease-out infinite alternate
}
.loading #loader {z-index: 1000; background-color: rgba(255,255,255,.7)}
.loading #loader .image {
background-size: 100% 100%;
margin: -69px 0 0 -200px;
-webkit-transition: background .4s ease-in-out, margin .4s ease-in-out;
-moz-transition: background .4s ease-in-out, margin .4s ease-in-out;
-o-transition: background .4s ease-in-out, margin .4s ease-in-out;
-ms-transition: background .4s ease-in-out, margin .4s ease-in-out;
transition: background .4s ease-in-out, margin .4s ease-in-out;
}
Run Code Online (Sandbox Code Playgroud)
boo*_*sey 21
这是一个简化的测试用例:
div {
background: blue;
opacity: 0;
transition: opacity 2s ease-in-out;
}
div.loading {
opacity: 1;
background: red;
transition: opacity 2s ease-in-out, background 1s ease-in;
}
Run Code Online (Sandbox Code Playgroud)
注意opacity淡入淡出和淡入淡出,但background唯一淡入淡出,并在淡出时立即变为蓝色.
我用它:hover作为一个例子,但在使用JavaScript添加和删除类时它应该是一样的.
如果您想要一个更具体的例子,请在dabblet或Jsfiddle上提供简化的测试用例.