仅使用 CSS 的 div fadeIn 和 fadeOut(在追加和从 DOM 中删除)。可能吗?

Posted

技术标签:

【中文标题】仅使用 CSS 的 div fadeIn 和 fadeOut(在追加和从 DOM 中删除)。可能吗?【英文标题】:div fadeIn and fadeOut (on append and remove from DOM) with CSS only. Is it possible? 【发布时间】:2017-12-03 10:05:06 【问题描述】:

我正在使用 jQuery 在 DOM 上追加和删除一个 div。

我需要一个 CSS 方法来 fadeInfadeOut 那个带有简单过渡的 div,(也许也只是不透明度)。

但我需要的是不要使用 jQuery addClassanimate:只使用 CSS!

有可能吗?

也许我可以使用 animate.css 库?但是只有 fadeIn 或 fadeOut 方法,不能同时使用。而且我不能使用 javascript 添加/删除类。

【问题讨论】:

淡入和淡出到底是什么意思?像这样的东西? codepen.io/mcoker/pen/YQewgW 移除部分是不可能的。 CSS 不知道何时从 DOM 中移除元素,因此它不知道何时为被移除的元素制作动画。 @MichaelCoker,是的,但是我需要从 DOM 中删除 div 并进行淡出。 淡出是什么意思?我发布的 CSS 淡入,然后淡出。而且您不能使用 CSS 从 DOM 中删除元素。 你能一步一步描述你想要达到的目标吗? 【参考方案1】:

您可以使用:empty 和一个过渡来实现这一点:

var div = $('<div/>').html('Surprise!!');
$('#wrap').append(div);
#wrap 
    text-align:center;
    background-color: #eeeeee;
    display: block;
    height:0px;
    width:300px;    
    transition:all 2s ease-in;
    overflow:hidden;
    opacity:0;


#wrap:not(:empty)    
    height:100px;
    opacity:1;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div id="wrap"></div>

注意在代码 sn-p 中似乎有点命中注定(有时有效),请参阅此 jsfiddle:https://jsfiddle.net/D2Xht/381/

来源:https://christianheilmann.com/2015/08/30/quicky-fading-in-a-newly-created-element-using-css/

【讨论】:

我非常喜欢你的解决方案,我已经在网上找到了。但我有一个问题。如果我在 div 中插入文本,然后将其删除,则文本会立即消失。我可以使用:before 吗?但后来我在页面上出现了:before 元素......请参阅:jsfiddle.net/yxw2dj5v 我也许可以有一个带有 BLINK 效果的文本或其他东西。我不能在父 div 上产生闪烁效果,但在我附加的 div 上。 刚刚意识到您在删除时也需要它,所以试了一下 - 我明白您对文本立即删除的意思:jsfiddle.net/D2Xht/382 我怀疑这是因为删除操作会立即对文本执行,但是transition 实际上在父级(在这两种情况下),而不是 div 本身。【参考方案2】:

您实际上可以使用 css 动画属性,该属性会在添加类后立即运行动画。

动画可以运行一次,因此您不必在动画发生后删除类。

所以这是 div:

     <div class="fade-in"></div>

这是css:

@keyframes fade-in
from opacity: 0;
to opacity: 1;

.fade-in
animation-name: fade-in;
animation-iteration-count: 1;
animation-duration: 500ms;

关于淡出,据我所知,你必须添加一个类来设置淡出动画。

更多关于 CSS 动画: https://www.w3schools.com/css/css3_animations.asp

类似的问题: css3 transition animation on load?

【讨论】:

我需要移除动画。

以上是关于仅使用 CSS 的 div fadeIn 和 fadeOut(在追加和从 DOM 中删除)。可能吗?的主要内容,如果未能解决你的问题,请参考以下文章

css怎样仅设置div元素背景透明度,而不设置div元素里面元素的透明度

使用 jQuery 同时向下滑动 div 和 .fadeIn() 内容,反之亦然?

jQuery.fadeIn 和 fadeOut 的 CSS3 替换

jquery fadein 不适用于所有浏览器

有没有办法强制 div 内的浮动 div 元素仅使用 css 和 html 垂直占据可用空间?

CSS 扩展和扩展