【发布时间】:2020-09-18 23:09:26
【问题描述】:
提前道歉,我对转换完全陌生。
我正在使用 CSS 和 JavaScript 来尝试一个菜单,该菜单在单击时平滑向下滑动,并在再次单击时同样平滑地返回。
我试图模仿一个示例动画,如下所示:https://codepen.io/shshaw/pen/gsFch
我的相关代码如下:
HTML
<div class="sort">
<div class="sort-options">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
</div>
CSS
.sort-options {
margin: 20px;
display: none;
flex-direction: column;
align-items: flex-start;
font-size: 20px;
width: 100%;
transition: display 3s ease-out;
}
JS
const sortDiv = document.querySelector('.sort')
sortDiv.addEventListener('click', function() {
const sortOptions = document.querySelector('.sort-options');
if (sortOptions.style.display === 'none') {
sortOptions.style.display = 'flex';
} else {
sortOptions.style.display = 'none';
}
});
点击确实隐藏和显示元素,但没有给出动画。我尝试仅使用 CSS 来实现效果,但我发现了相同的结果,它确实隐藏和显示,但没有平滑向下滑动。这让我觉得我在 CSS 上做得不对。
仅 CSS 尝试:
.sort:hover .sort-options {
display: flex;
}
.sort-options {
visibility: hidden;
margin: 20px;
display: none;
flex-direction: column;
align-items: flex-start;
font-size: 20px;
width: 100%;
transition: all 3s ease-in-out;
}
如果您想查看我的完整代码,请点击此处: https://wulfenn.github.io/todolist
我浏览了stackoverflow,似乎不支持显示作为过渡效果,但我不确定如何使用可见性来实现效果,同时如果div不可见则不占用空间。
帮助表示赞赏!
【问题讨论】:
-
这不是重复的:stackoverflow.com/questions/3508605/…Tl;博士:你不能转换
display,也不能转换height0到auto。
标签: javascript html css transition