【发布时间】:2018-12-06 20:50:53
【问题描述】:
我正在尝试将错误消息显示为 toast(React 组件),该消息将在几秒钟后淡出。但是,当用户在淡出时将鼠标悬停在吐司上时,淡出应该停止并且吐司应该恢复到其初始状态,当他将鼠标悬停在吐司上时,淡出应该重新开始.可以像这样使用 JQuery 来实现 -
//时间-t秒后开始淡出的函数
static fadeOutToast(id, t) {
let toast = document.getElementById(id);
if (toast) {
setTimeout(() => {
FadeAndRemove('#' + id);
}, t * 1000);
}
}
/** * t1 - 淡出动画的时间 */
static FadeAndRemove(id,t1) {
jQuery(id).fadeOut(t1 * 1000, function () {
jQuery(this).hide();
});
handleReAppear(id);
}
static handleReAppear(id) {
jQuery(id).on("mouseover", function (e) {
jQuery(this).stop(true).fadeIn(0);
});
jQuery(id).on("mouseleave", function (e) {
FadeAndRemove(this);
});
}
它工作得很好。但是由于项目限制,我不应该混淆 Jquery 并做出反应。
我试图通过在 mouseEnter 和 mouseLeave 事件上操作 CSS 不透明度来实现它。我面临的问题是吐司永远不会离开使用不透明度的页面。有什么方法可以检测 toast 的不透明度何时变为 0 ,以便在不透明度变为 0 时将其从页面中删除?
有人可以在不使用 Jquery 的情况下帮助我实现同样的目标吗?
【问题讨论】:
-
“我尝试使用 CSS 来实现这一点,方法是分别操作 toast 上 mouseEnter 和 MouseLeave 事件的不透明度和可见性。”这里有什么问题?不清楚您的问题是什么。
-
我面临的问题是我们无法使用 opacity 为 0 从页面中删除 toast,因此即使在其不透明度变为 0 并且如果我们从使用 {display:none} 或 {visibility: hidden} 的页面,我们需要确保它仅在其不透明度变为 0 时才完成(即在淡出之后)。因为在此之前,用户可以将鼠标悬停在它上面以停止褪色效果。我能解决问题吗?
标签: javascript css reactjs