gpt4 book ai didi

CSS3 过渡 : Different transition for *IN* and *OUT* (or returning from transitioned state)

转载 作者:技术小花猫 更新时间:2023-10-29 10:22:15 30 4
gpt4 key购买 nike

原始问题...更新了以下工作代码:

我有一个在 ajax 加载事件期间出现的加载图像。图像通过向 body 元素添加或删除“加载”类来显示/隐藏。目前,加载图像将背景大小设置为从 0% 到 100% 的动画,并且不透明度会逐渐淡化(对于“返回”过渡,反之亦然)。

不过,我想要完成的是让背景大小过渡在淡出时立即发生(而不是过渡),所以:

  • 淡入:不透明度在 0.2 秒内从 0 到 1,背景大小在 0.2 秒内从 0 到 100%
  • 淡出:不透明度在 0.2 秒内从 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
    }

我已将此选择器 .loading #loader .image 的过渡属性更改为“不透明度”而不是“全部”,但它仍然执行背景大小过渡。

有谁知道如何使用 css3 实现上述不同的淡入淡出过渡效果?谢谢!


更新的工作代码

问题是将各个属性(边距、背景)分解为逗号分隔列表。我相信使用转换:所有这些都会阻止您执行不同的INOUT 转换。

#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;
}

最佳答案

这是一个简化的测试用例:

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;
}

请注意 opacity 是如何淡入和淡出的,但是 background 只是淡入,并且在淡出时立即变成蓝色。

我以 :hover 为例,但它在使用 JavaScript 添加和删除类时应该同样有效。

Demo

如果您想要更具体的示例,请提供 reduced test casedabbletJsfiddle .

关于CSS3 过渡 : Different transition for *IN* and *OUT* (or returning from transitioned state),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8944456/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com