如何使透明元素不可交互?

Pwn*_*ner 0 css

我正在显示和隐藏具有淡入/淡出效果的元素。

CSS

.element {
   opacity: 1.0;
   transition: opacity 0.3s linear;
}

.element.hidden {
   opacity: 0.0;
}
Run Code Online (Sandbox Code Playgroud)

JS

// hide
$('someElement').addClassName('hidden');

// show
$('someElement').removeClassName('hidden');
Run Code Online (Sandbox Code Playgroud)

这样做的问题是看不见的元素仍然占据空间。如果用户尝试单击其下方的某些内容,这个不可见元素会拦截单击,并且用户会感到困惑。是否有 CSS 属性会使元素不可交互?我知道有一些技巧,比如top:-999em.hidden课堂上设置,但我想问你是否知道任何优雅的解决方案。

Bol*_*ock 5

visibility您还需要进行转换:

.element {
   opacity: 1.0;
   visibility: visible;
   transition: opacity 0.3s linear, visibility 0.3s linear;
}

.element.hidden {
   opacity: 0.0;
   visibility: hidden;
}
Run Code Online (Sandbox Code Playgroud)

带有 的元素visibility: hidden可以被点击;即它不会拦截点击。

如果您需要元素完全消失而不是继续占据空间,则需要使用display: none它,但这不是可动画的属性,因此您会看到元素突然消失而不是淡出。