javascript - 使用 CSS 动画和 Javascript 切换 div
问题描述
我正在尝试向 div 添加动画,我通过单击按钮显示和隐藏。我有我想要的动画,但我不知道如何让 JS 中的按钮运行那个 CSS 动画。有人可以帮我吗?
https://codepen.io/mattmcgilton/pen/JjjbGMB
.reveal-content {
animation: slide-in-fwd-center 0.4s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
}
@keyframes slide-in-fwd-center {
0% {
transform: translateZ(-1400px);
opacity: 0;
}
100% {
transform: translateZ(0);
opacity: 1;
}
}
var x = document.getElementById("reveal-content").style.display = "none";
document.getElementById("btn-reveal").addEventListener('click', function() {
var x = document.getElementById("reveal-content");
if (x.style.display === "none") {
x.style.display = "block";
} else {
x.style.display = "none";
}
});
解决方案
您可以将 amax-height
用于元素,将应用转换用于隐藏和显示。检查下面的片段
document.getElementById("btn-reveal").addEventListener('click', function() {
let el = document.getElementById('reveal-content');
if (el.classList.contains('hide')) {
el.classList.remove('hide');
} else {
el.classList.add('hide');
}
});
.wrapper {
overflow: hidden;
}
#reveal-content {
max-height: 1000px;
transition: all 0.5s ease-in;
}
.hide {
max-height: 0 !important;
transition: all 0.2s ease-out;
}
<button type="button" id="btn-reveal" class="btn">Button</button>
<div class="wrapper">
<div id="reveal-content" class="hide">
<h2>Hide me and then reveal me</h2>
<div id="json-content">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc scelerisque dui magna, imperdiet ultricies felis pellentesque nec. Aenean iaculis tellus porttitor sapien sagittis, eu dapibus dui ultricies. In gravida arcu leo, sit amet convallis quam
tincidunt tempus. Aliquam eget suscipit tortor. Maecenas eget nunc eu risus auctor lacinia. Nulla et sapien sed urna ultrices pretium non ac purus. Quisque sed egestas augue. Aliquam sit amet vulputate tortor. Sed condimentum tellus eu placerat
feugiat. Nullam quis eros sed magna venenatis condimentum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed posuere lacinia facilisis. Curabitur sit amet porta dui.</p>
</div>
</div>
</div>
<div>Rest of the page...</div>
推荐阅读
- entity-framework - 实体框架不使用 .Include 生成 INNER JOIN
- javascript - SyntaxError: Unexpected token { in JSON at position 1
- php - 从返回“内部”数组的多个循环创建 1 个“外部”数组
- tensorflow - 关于内核权重的 TensorRT 5 UFFParser 错误
- mysql - 通过 mySQL 连接到 Active Directory 数据库
- php - 如何在没有命名空间的情况下将 PHP 库添加到 TYPO3 扩展?
- angular - angular 7 http post在edge和firefox上工作,但在chrome上返回错误
- prolog - 通过列表约束变量域
- c# - 使用 WPF PRISM MVVM 打开 CommonOpenFileDialog
- python - 使用漂亮的汤从网络抓取的维基百科页面 html 文件中提取相关数据时遇到问题