javascript - 为什么我们可以在动画手风琴中使用 height 属性而不是 max-height 属性?
问题描述
为什么在这段代码中我可以使用高度而不是最大高度,所以它仍然有效?第二个问题是:为什么我们必须在高度为零时将溢出属性设置为隐藏。 https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_accordion_animate 它是上面的原始代码。
var acc = document.getElementsByClassName("accordion");
var i;
for (i = 0; i < acc.length; i++) {
acc[i].addEventListener("click", function() {
this.classList.toggle("active");
var panel = this.nextElementSibling;
if (panel.style.height){
panel.style.height = null;
} else {
panel.style.height = panel.scrollHeight + "px";
}
});
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
.accordion {
background-color: #eee;
color: #444;
cursor: pointer;
padding: 18px;
width: 100%;
border: none;
text-align: left;
outline: none;
font-size: 15px;
transition: 0.4s;
}
.active, .accordion:hover {
background-color: #ccc;
}
.panel {
padding: 0 18px;
background-color: white;
height: 0;
overflow: hidden;
transition: height 0.2s ease-out;
}
</style>
</head>
<body>
<h2>Animated Accordion</h2>
<p>Click on the buttons to open the collapsible content.</p>
<button class="accordion">Section 1</button>
<div class="panel">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.</p>
</div>
<button class="accordion">Section 2</button>
<div class="panel">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.</p>
</div>
<button class="accordion">Section 3</button>
<div class="panel">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.</p>
</div>
</body>
</html>
解决方案
推荐阅读
- python - 如何在数据框中为 groupby 做 Python
- python - python覆盖没有代码源(内置)
- json - 什么是标记语言?(XML vs YAML vs JSON)
- angular - 从Angular Post请求获取参数到Spring作为对象,而不是字符串
- python - 转置 Excel 表格的第一列,删除空单元格并将其附加到特定行
- javascript - 每当我尝试使用 .map 获取数据时,都会出错
- javascript - 如何使用javascript在树枝中循环更改div的背景颜色
- php - 在 Symfony 5.3 phpunit 测试期间,“security.user_password_hasher”的定义没有类?
- google-drive-api - 如何使用 GDrive API 获取共享驱动器的所有者?
- django - 在 django 中使用 ListView 分页时,如何确定每页显示的数字对象?