手风琴效果(Accordion Effect)是一种常见的网页设计交互效果,通常用于在有限的空间内展示和隐藏内容,从而节省页面空间并提高用户体验。手风琴效果常见于导航菜单、信息面板等场景。
手风琴效果通过点击某个元素(如按钮或链接)来展开或折叠其相邻的内容区域。每次只能展开一个内容区域,其他内容区域会自动折叠。
以下是一个简单的垂直手风琴效果的实现示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Accordion Example</title>
<style>
.accordion {
width: 100%;
max-width: 600px;
margin: 0 auto;
}
.accordion-item {
border-bottom: 1px solid #ccc;
}
.accordion-header {
background-color: #f1f1f1;
padding: 15px;
cursor: pointer;
user-select: none;
}
.accordion-content {
padding: 0 15px;
max-height: 0;
overflow: hidden;
transition: max-height 0.2s ease-out;
}
.accordion-content.active {
max-height: 500px; /* Adjust as needed */
transition: max-height 0.4s ease-in;
}
</style>
</head>
<body>
<div class="accordion">
<div class="accordion-item">
<div class="accordion-header">Section 1</div>
<div class="accordion-content">
<p>Content for section 1...</p>
</div>
</div>
<div class="accordion-item">
<div class="accordion-header">Section 2</div>
<div class="accordion-content">
<p>Content for section 2...</p>
</div>
</div>
<div class="accordion-item">
<div class="accordion-header">Section 3</div>
<div class="accordion-content">
<p>Content for section 3...</p>
</div>
</div>
</div>
<script>
document.querySelectorAll('.accordion-header').forEach(header => {
header.addEventListener('click', () => {
const content = header.nextElementSibling;
content.classList.toggle('active');
// Close other active contents
document.querySelectorAll('.accordion-content.active').forEach(item => {
if (item !== content) {
item.classList.remove('active');
}
});
});
});
</script>
</body>
</html>
max-height
设置不当或过渡时间设置不合理。调整max-height
值和过渡时间可以解决。active
类被移除。通过以上示例和解释,你可以实现一个基本的手风琴效果,并根据需要进行调整和优化。
领取专属 10元无门槛券
手把手带您无忧上云