【发布时间】:2021-04-16 20:11:03
【问题描述】:
我想在 flex-box 容器中为自动高度创建一个过渡。 我有一个包含名称、积分、状态和警报的用户栏。
有时会呈现警报消息,有时不会。它使用display: none
我想要实现的是在我单击警报消息时平滑地调整 flex-box 容器的高度和过渡。
这是一个基本示例(不工作)
const $user_alert = document.querySelector('user-alert')
$user_alert.onclick = () => {
$user_alert.classList.add('hide')
setTimeout(() => $user_alert.classList.remove('hide'), 1e3)
}
body {
display: flex;
width: 100vw;
height: 100vh;
margin: 0;
background-color: aliceblue;
}
user-bar {
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
transition: all 2s ease-in-out;
}
user-alert {
cursor: pointer;
color: red;
}
.hide {
display: none;
}
<user-bar>
<user-name>Albert Einstein</user-name>
<user-points>10000</user-points>
<user-status>on</user-status>
<user-alert>Time to Party Hard</user-alert>
</user-bar>
如果不为用户栏中的每个元素定义高度,我无法弄清楚如何创建简单的过渡...也许使用 display: none 是不可能的。
任何帮助或想法将不胜感激!
【问题讨论】:
-
这能回答你的问题吗? CSS Opacity transition with display: none
-
将不需要动画,只需将
display: none;或.hide类替换为`可见性:隐藏;`。这可能会有所帮助:codepen.io/manaskhandelwal1/pen/zYKJbPq -
Manas,这是另一种选择,谢谢。我想避免保留用户警报消息的空间。
-
disinfor,答案是关注具有
display: none的元素,谢谢,但我想平滑地调整容器的高度,独立于其项目转换或者可能无法独立。
标签: html css flexbox css-animations css-transitions