javascript - 使用延迟 Javascript 删除 DIV

标签 javascript html delay fade

这是我的第一个问题,如果我没有应用正确的礼仪,请原谅我。

我有一个 javascript 函数,可以隐藏带有淡入淡出的 div。

function fadeOut(cloudChatHide)
{
    "use strict";
    cloudChatHide.onclick = function()
        { 
            if(cloudChatHide.className)
                {
                cloudChatHide.className = '';
                } 
            else 
                {               
                cloudChatHide.className = 'fadeout';
                RemoveCloudChat();
                }
        };
}

但是此代码不会删除 DIV,即 RemoveCloudChat 函数。看起来像这样:-

function RemoveCloudChat()
{
    "use strict";
    cloudChatHide.remove();
    cloudChatHide.className ='fadeout';
}

我真正想做的是在几秒钟后自动淡化 div,然后删除它。

我需要从窗口中删除 div 的原因是它是一个覆盖的 div,我需要访问“cloudChatHide”div 下面的内容。

任何帮助/指导都将不胜感激,因为我不是最伟大的 Javascript 开发人员。

谢谢。

最佳答案

您可以使用 CSS 过渡平滑地淡出元素并监听 transitionend 事件以在过渡完成时移除元素。

查看此 jsFiddle .

过渡是用这个 CSS 定义的:

div {
  opacity: 1;
  transition: opacity 1s;
}

div.fade-out {
  opacity: 0;
}

一旦将淡出类添加到 div,它就会在 1 秒内平滑地降低其不透明度。这可以使用以下 JavaScript 完成,不需要 jQuery:

function fadeOutAndRemove(element) {
    element.classList.add('fade-out');
    element.addEventListener('transitionend', function () {
      element.parentNode.removeChild(element);
    });
}

如果你想在固定延迟后自动开始淡出过渡,你可以在超时后调用 fadeOutAndRemove

window.setTimeout(fadeOutAndRemove.bind(this, elementToHide), 3000)

或为过渡添加延迟

transition: opacity 1s 3s;

并用淡出类初始化元素

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

关于javascript - 使用延迟 Javascript 删除 DIV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42295726/

相关文章:

javascript - Onclick 某个功能不起作用

javascript - 使用浏览器/页面滚动条以固定位置滚动 div 内的内容

html - 如何在悬停时缩放多个图像而不改变其宽度和高度?

javascript - 在 mouseenter jquery 中使用延迟

iphone - UIButton 的 IBAction 方法在 Swift 中延迟后执行

javascript - 使用 Jquery/Handlebars.js 隐藏缺失值的表格单元格输出

Javascript 在 Google Hangouts 中一直向上滚动

html - 内联 SVG 总是未对齐(在其父级的 y 位置较低)?

javascript - jQuery - 根据输入链接中粘贴的链接选择一个选项

javascript - 延迟 CreateJS 动画时间轴