【发布时间】:2021-08-07 19:15:38
【问题描述】:
我正在尝试为 .folder 的大小设置动画,否则背景会保留。
- 运行代码 sn-p。它将解释问题。
我不想要设置固定值:
.enabled > .folder-body {
height: 100px;
}
:not(.enabled) > .folder-body {
height: 0px;
}
我尝试使用转换,但我无法让它工作。
const folder = document.querySelector('#folder');
const header = document.querySelector('#header');
header.addEventListener('click', () => {
folder.classList.toggle('enabled');
});
p {
margin: 0;
}
.folder {
border: 2px solid black;
overflow: hidden;
}
.folder-header {
display: flex;
align-items: center;
color: white;
background-color: black;
}
.folder-header>svg {
height: 15px;
fill: white;
transition: all 0.2s ease-out;
}
.enabled>.folder-header>svg {
transform: rotateZ(90deg);
}
.folder-body {
transition: all 0.2s ease-out;
}
.enabled>.folder-body {
transform: none;
clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
visibility: visible;
}
:not(.enabled)>.folder-body {
transform: translateY(-100%);
clip-path: polygon(0% 100%, 100% 100%, 100% 100%, 0% 100%);
visibility: hidden;
}
<div class="folder disabled" id="folder">
<div class="folder-header" id="header">
<svg version="1.1" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path d="m3 0 17 10-17 10z" />
</svg>
<h2>Menu</h2>
</div>
<p class="folder-body">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aspernatur fugit porro aliquid hic! Reiciendis a possimus esse aliquid magni optio sapiente in labore reprehenderit nostrum ipsum odit eveniet magnam necessitatibus aliquam, minima est? Ipsum quae
sunt eum exercitationem dolorem animi expedita est quidem sapiente, eos ducimus iure praesentium quo, eaque possimus perspiciatis maxime doloribus hic beatae sit libero? Aperiam eveniet saepe recusandae repellendus magni similique delectus cum, inventore
veniam! Exercitationem, beatae? Temporibus libero quam, velit eligendi quo voluptatibus asperiores iusto vero adipisci fugit nesciunt. Minima magnam incidunt, ad illo minus commodi ducimus esse tenetur adipisci similique harum optio aliquam delectus.
</p>
</div>
【问题讨论】:
-
我认为,如果您只为 :not(.enabled) 案例保留 height:0 并为 .enabled 案例删除高度,它将按您的预期工作。您只需要删除 .enabled 案例的高度。
-
我在启用时添加了
height: 0;和height: auto;的示例。您也可以将边框移动到folder-body。 -
您需要使用 max-height 才能平滑过渡。请参阅:stackoverflow.com/questions/3508605/…