Par*_*hAn 6 html javascript css animation fade
我想删除click事件上的div元素,但我想用淡出效果删除它.我有一些JQuery解决方案,但我需要纯JavaScript或CSS解决方案.
document.querySelector('.list').addEventListener("click", function(e){
if (e.target.localName === "span") {
var removeTarget = e.target.parentNode.parentNode;
removeTarget.parentNode.removeChild(removeTarget);
};
});
Run Code Online (Sandbox Code Playgroud)
此代码正在删除div元素而不起作用.如何添加淡出效果?
Jak*_*r00 13
有两种方法可以实现这一点:CSS3动画或jQuery动画.
在CSS文档中,添加:
.list {
opacity: 1;
-webkit-transition: opacity 1000ms linear;
transition: opacity 1000ms linear;
}
Run Code Online (Sandbox Code Playgroud)
将JavaScript的第4行更改为:
removeTarget.style.opacity = '0';
setTimeout(function(){removeTarget.parentNode.removeChild(removeTarget);}, 1000);
Run Code Online (Sandbox Code Playgroud)
注意:确保CSS3转换的时间和setTimeout相同.
获取jQuery
将您的Javascript第4行更改为:
removeTarget.fadeOut(1000)
Run Code Online (Sandbox Code Playgroud)
2020 年,您可以放弃使用setTimeout该事件animationend,从而无需在两个地方维护持续时间:
.fade-out {
animation: fade 2s;
-webkit-animation: fade 2s;
-moz-animation: fade 2s;
}
/* Animate opacity */
@keyframes fade {
from { opacity: 1 }
to { opacity: 0 }
}
@-moz-keyframes fade {
from { opacity: 1 }
to { opacity: 0 }
}
@-webkit-keyframes fade {
from { opacity: 1 }
to { opacity: 0 }
}
const elementToFade = document.getElementById('my-element');
elementToFade.onanimationend = (e) => {
if (e.target.classList.contains('fade-out')) {
elementToFade.parentNode.removeChild(elementToFade);
}
};
// To fade away:
elementToFade.classList.add('fade-out');
Run Code Online (Sandbox Code Playgroud)
我不久前为个人项目做了这个功能:
function removeFadeOut( el, speed ) {
var seconds = speed/1000;
el.style.transition = "opacity "+seconds+"s ease";
el.style.opacity = 0;
setTimeout(function() {
el.parentNode.removeChild(el);
}, speed);
}
removeFadeOut(document.getElementById('test'), 2000);
Run Code Online (Sandbox Code Playgroud)