延迟删除 DIV Javascript
Remove a DIV with a delay Javascript
这是我的第一个问题,如果我不遵守正确的礼仪,请原谅我。
我有一个 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 然后删除它。
我需要从 window 中删除 div 的原因是它覆盖了 div,我需要访问 'cloudChatHide' 下面的内容 div.
任何帮助/指导都将不胜感激,因为我不是最伟大的 Javascript 开发人员。
谢谢。
如果你能用JQuery,那就真的很简单了,看下面:
<html>
<head>
<meta charset="utf-8">
<script src="https://code.jquery.com/jquery.min.js"></script>
</head>
<body>
<div class="fadeout">I'LL DISAPPEAR IN 3 SECONDS</div>
</body>
<script>
function fadeOut()
{
$(".fadeout").fadeToggle(500, "swing",function(){
this.remove();
});
}
var delay = 3000; //3 seconds
setTimeout(fadeOut, delay);
</script>
</html>
淡入淡出动作完成后,div 将被移除。
希望对你有帮助,再见。
您可以使用 CSS 过渡平滑地淡出元素并监听 transitionend 事件以在过渡完成时移除元素。
看到这个jsFiddle。
转换是这样定义的 CSS:
div {
opacity: 1;
transition: opacity 1s;
}
div.fade-out {
opacity: 0;
}
只要将 fade-out class 添加到 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;
并使用 fade-out class
初始化元素
<div class="fade-out"></div>
Alessandro Maglioccola 的出色成绩
<html>
<head>
<meta charset="utf-8">
<script src="https://code.jquery.com/jquery.min.js"></script>
</head>
<body>
<div class="fadeout">I'LL DISAPPEAR IN 3 SECONDS</div>
</body>
<script>
function fadeOut()
{
$(".fadeout").fadeToggle(500, "swing",function(){
this.remove();
});
}
var delay = 3000; //3 seconds
setTimeout(fadeOut, delay);
</script>
</html>
这里有一种不用 Jquery 的方法。我使用 setTimeout
将不透明度设置为 0,等待 300 毫秒,如果它已经隐藏,则执行相反的操作。
hideMe = function(selector, self) {
var elem = document.querySelector(selector);
if (self.innerHTML == "Hide") {
elem.classList.add("fade");
setTimeout(function() {
elem.classList.add("hidden");
self.innerHTML = "Show";
}, 300)
} else {
elem.classList.remove("hidden");
setTimeout(function() {
elem.classList.remove("fade");
self.innerHTML = "Hide";
}, 300)
}
}
body {
margin: 0;
}
.header {
height: 100px;
width: 100%;
background: steelblue;
}
#vanish {
transition: all 300ms cubic-bezier(.25, .8, .25, 1);
}
.redsquare {
width: 100%;
height: 225px;
background: tomato;
opacity: 1;
}
.hidden {
height: 0px;
width: 0px;
}
.fade {
opacity: 0;
}
button {
width: 100%;
height: 25px;
border: 0px;
outline: none;
cursor: pointer;
}
<div class="header"></div>
<button onclick='hideMe("#vanish",this)'>Hide</button>
<div id="vanish" class="redsquare"></div>
<div class="header"></div>
这是我的第一个问题,如果我不遵守正确的礼仪,请原谅我。
我有一个 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 然后删除它。
我需要从 window 中删除 div 的原因是它覆盖了 div,我需要访问 'cloudChatHide' 下面的内容 div.
任何帮助/指导都将不胜感激,因为我不是最伟大的 Javascript 开发人员。
谢谢。
如果你能用JQuery,那就真的很简单了,看下面:
<html>
<head>
<meta charset="utf-8">
<script src="https://code.jquery.com/jquery.min.js"></script>
</head>
<body>
<div class="fadeout">I'LL DISAPPEAR IN 3 SECONDS</div>
</body>
<script>
function fadeOut()
{
$(".fadeout").fadeToggle(500, "swing",function(){
this.remove();
});
}
var delay = 3000; //3 seconds
setTimeout(fadeOut, delay);
</script>
</html>
淡入淡出动作完成后,div 将被移除。 希望对你有帮助,再见。
您可以使用 CSS 过渡平滑地淡出元素并监听 transitionend 事件以在过渡完成时移除元素。
看到这个jsFiddle。
转换是这样定义的 CSS:
div {
opacity: 1;
transition: opacity 1s;
}
div.fade-out {
opacity: 0;
}
只要将 fade-out class 添加到 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;
并使用 fade-out class
初始化元素<div class="fade-out"></div>
Alessandro Maglioccola 的出色成绩
<html>
<head>
<meta charset="utf-8">
<script src="https://code.jquery.com/jquery.min.js"></script>
</head>
<body>
<div class="fadeout">I'LL DISAPPEAR IN 3 SECONDS</div>
</body>
<script>
function fadeOut()
{
$(".fadeout").fadeToggle(500, "swing",function(){
this.remove();
});
}
var delay = 3000; //3 seconds
setTimeout(fadeOut, delay);
</script>
</html>
这里有一种不用 Jquery 的方法。我使用 setTimeout
将不透明度设置为 0,等待 300 毫秒,如果它已经隐藏,则执行相反的操作。
hideMe = function(selector, self) {
var elem = document.querySelector(selector);
if (self.innerHTML == "Hide") {
elem.classList.add("fade");
setTimeout(function() {
elem.classList.add("hidden");
self.innerHTML = "Show";
}, 300)
} else {
elem.classList.remove("hidden");
setTimeout(function() {
elem.classList.remove("fade");
self.innerHTML = "Hide";
}, 300)
}
}
body {
margin: 0;
}
.header {
height: 100px;
width: 100%;
background: steelblue;
}
#vanish {
transition: all 300ms cubic-bezier(.25, .8, .25, 1);
}
.redsquare {
width: 100%;
height: 225px;
background: tomato;
opacity: 1;
}
.hidden {
height: 0px;
width: 0px;
}
.fade {
opacity: 0;
}
button {
width: 100%;
height: 25px;
border: 0px;
outline: none;
cursor: pointer;
}
<div class="header"></div>
<button onclick='hideMe("#vanish",this)'>Hide</button>
<div id="vanish" class="redsquare"></div>
<div class="header"></div>