如何解决如何使用纯CSS / JavaScript创建水平和垂直可折叠的HTML div,即没有jQuery,没有Boostrap等?
我想创建这样的东西:
https://www.w3schools.com/howto/howto_js_collapsible.asp
但是它应该在垂直和水平方向扩展(并折叠)。您可以将其想象为一个扩展为大div的按钮。但是,实际上,应该扩展整个div,而按钮只是其中一部分(在div内部)。
以下是一些提示HTML:
<div class="section">
<button type="button" class="collapsible">
Open collapsible
</button>
<div class="collapsible-content">
<p>Lorem ipsum...</p>
</div>
</div>
我不仅需要扩展“可折叠内容” div,还需要扩展“ section” div。在延长和扩大它的同时。动画加长和加宽将是“不错的”功能,并非十分必要。
能否请您提出适合实现此目标的CSS和/或JavaScript?我不想雇用任何jQuery,Bootstrap或类似的东西。
感谢 帕维尔
解决方法
“您可以将其想象为一个扩展为一个大div的按钮。但是,实际上,应该扩展整个div,该按钮只是其中的一部分(在div内部)。”
好吧,我猜您想先显示一个按钮,然后单击它,然后水平和垂直显示一堆东西
您可以通过将父div的宽度和高度设置为按钮的确切尺寸来做到这一点,确保没有边距,然后设置溢出:隐藏在父项中,然后在按钮上按下,将高度和高度更改为100 %或其他值,具体取决于您要显示多少东西,然后在其他小妞上,将尺寸设置回按钮的尺寸
,如果您想保持这种简单而最小的效果,请尝试下面的代码。
<html>
<head>
<style>
.section{display: inline-block;transition: .25s;background-color: lightgray; width: auto;}
.collapsible-content{height: 0px;overflow: hidden;}
</style>
<script>
function toggle(elem)
{
sec=elem.parentElement;
if(sec.style.width!='100%') sec.style.width='100%'; else sec.style.width='auto';
coll=sec.getElementsByClassName("collapsible-content")[0];
if(coll.style.height!='auto') coll.style.height='auto'; else coll.style.height='0px';
}
</script>
</head>
<body>
<div class="section">
<button type="button" class="collapsible" onclick="toggle(this);">
Open collapsible
</button>
<div class="collapsible-content">
<p>Lorem ipsum...</p>
</div>
</div>
</body>
</html>
,
旋转一下。从该部分的背景色可以看出,它最初的尺寸很小。
点击后,我们可以在该部分中添加一个类,将其拉伸以覆盖整个屏幕,同时还显示隐藏的内容。它将再次被点击时恢复。
编辑:更改了背景颜色,因此可以更轻松地查看部分dev的扩展方式以及内容和按钮的扩展方式。
var coll = document.getElementsByClassName("collapsible");
var i;
for (i = 0; i < coll.length; i++) {
coll[i].addEventListener("click",function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
var parent = this.parentElement;
if (content.style.display === "block") {
content.style.display = "none";
parent.classList.remove("fill");
} else {
content.style.display = "block";
parent.classList.add("fill");
}
});
}
.collapsible {
background-color: #777;
color: white;
cursor: pointer;
padding: 18px;
border: none;
text-align: left;
outline: none;
font-size: 15px;
}
.active,.collapsible:hover {
background-color: #555;
}
.content {
padding: 0 18px;
display: none;
bottom: 0;
overflow: hidden;
background-color: #b38686;
}
.section {
background-color: #5128;
width:50%;
}
.fill {
position: absolute;
width: 100%;
height: 100%;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1">
</head>
<body>
<div class="section">
<h2>Collapsibles</h2>
<button type="button" class="collapsible">
Open collapsible
</button>
<div class="content">
<p>Lorem ipsum...</p>
</div>
</div>
</body>
</html>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。