我正在显示和隐藏具有淡入/淡出效果的元素。
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课堂上设置,但我想问你是否知道任何优雅的解决方案。
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它,但这不是可动画的属性,因此您会看到元素突然消失而不是淡出。