手风琴(Accordion)是一种常见的用户界面组件,它允许用户通过点击或触摸来展开和折叠内容区域。滑块(Slider)则是一种允许用户在一定范围内选择值的控件。结合这两者,可以创建一个具有交互性的滑块组件,用户可以通过展开和折叠来查看或调整滑块的不同部分。
以下是一个使用HTML、CSS和JavaScript实现简单手风琴滑块的示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Accordion Slider</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="accordion-slider">
<div class="accordion-item">
<button class="accordion-header">Section 1</button>
<div class="accordion-content">
<input type="range" min="0" max="100" value="50" class="slider">
</div>
</div>
<div class="accordion-item">
<button class="accordion-header">Section 2</button>
<div class="accordion-content">
<input type="range" min="0" max="100" value="30" class="slider">
</div>
</div>
</div>
<script src="script.js"></script>
</body>
</html>
.accordion-slider {
width: 300px;
}
.accordion-item {
border: 1px solid #ccc;
margin-bottom: 10px;
}
.accordion-header {
width: 100%;
padding: 10px;
text-align: left;
background-color: #f1f1f1;
border: none;
cursor: pointer;
}
.accordion-content {
max-height: 0;
overflow: hidden;
transition: max-height 0.3s ease-out;
}
.slider {
width: 100%;
}
document.querySelectorAll('.accordion-header').forEach(header => {
header.addEventListener('click', () => {
const content = header.nextElementSibling;
if (content.style.maxHeight) {
content.style.maxHeight = null;
} else {
content.style.maxHeight = content.scrollHeight + 'px';
}
});
});
input
或change
事件监听器。input
或change
事件监听器。max-height
的值在展开和折叠时都能正确计算,并使用合适的过渡时间。max-height
的值在展开和折叠时都能正确计算,并使用合适的过渡时间。通过以上步骤,你可以创建一个基本的手风琴滑块组件,并根据需要进行进一步的定制和优化。
云+社区沙龙online [技术应变力]
企业创新在线学堂
企业创新在线学堂
企业创新在线学堂
北极星训练营
北极星训练营
北极星训练营
腾讯云GAME-TECH沙龙
高校公开课
领取专属 10元无门槛券
手把手带您无忧上云