gpt4 book ai didi

javascript - 单击展开的部分时折叠并展开其他部分

转载 作者:行者123 更新时间:2023-11-28 03:34:51 25 4
gpt4 key购买 nike

我已附上代码。当我们打开/展开其他部分时,该部分将折叠。但当我们单击打开的按钮时,该部分不会折叠。我想在这两种情况下实现该部分的折叠: 单击打开的按钮以及单击其他部分时折叠

请帮忙解决这个问题。提前致谢

var coll = document.getElementsByClassName("collapsible");

for (var i = 0; i < coll.length; i++) {
coll[i].addEventListener("click", function() {
// before opening the accordion, you close everything
for (var j = 0; j < coll.length; j++) {
coll[j].classList.remove("active");
coll[j].nextElementSibling.style.maxHeight = null;
}
this.classList.toggle("active");
var content = this.nextElementSibling;
if (content.style.maxHeight) {
content.style.maxHeight = null;
} else {
content.style.maxHeight = content.scrollHeight + "px";
}
});
}
.centered {
position: absolute;
margin-top:30px;
left: 13%;
color:white;
font-weight: bold;
font-size:35px;
height:auto;
display:inline-block;
}

@media (max-width: 1030px) {
.centered {
float: none;
display: block;
text-align: left;
}

#container {
display:flex;
margin-left:50px;
align-items: center;
}
}

.column {
padding: 30px;
height: 200px;
margin: -20px;
width: 430px;
height: 120px;
border-radius: 10px;
display: inline-block;
border: 2px #e6e6e6;
padding-left: 48px;
}
.collapsible {
background-color: #777;
color: white;
cursor: pointer;
padding: 18px;
width: 100%;
border: none;
text-align: left;
outline: none;
font-size: 15px;
margin-top: 10px;
height:55px;

}

.active, .collapsible:hover {
background-color: #555;
}

.collapsible:after {
content: '\002B';
color: white;
font-weight: bold;
float: right;
margin-left: 5px;
margin-top: -30px;
}

.active:after {
content: "\2212";
}

.content {
padding: 0 40px;
max-height: 0;
overflow: hidden;
transition: max-height 0.2s ease-out;
background-color: #f1f1f1;
margin:0px;
}

#container {
display:flex;
margin-left:10px;
align-items: center;
margin-top:-12px;
}
#container > * {
margin-right: 15px;
}
.maincontainer{
margin: auto;
width: 90%;
margin-top:-20px;
}
.card-heading{
word-wrap: break-word;
margin-left: 10px;
margin-top: 11px;
}
h4{
font-family: Verdana,sans-serif;
font-size: 13px;
line-height: 1.5;
}
h2{
font-family: Verdana,sans-serif;
text-align:center;
font-size:20px;
}
.sub-container{
font-size: 20px;
font-family: 'Open Sans',sans-serif;

}
<div class="maincontainer">

<div class="collapsible">
<span id="container">
<img src="test.png" width="45" height="45" alt="">
<span class="sub-container">Heading</span>
</span>
</div>
<div class="content">
<div class="sub-heading">
<h2>Heading</h2>
</div>
<div class="column">
<div class="row">
<div><img src="test.png" width="45" height="40" style="float: left;"/></div>
<div class="card-heading"><h4>TEXT</h4></div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="45" height="40" style="float: left;"/></div>
<div class="card-heading"><h4>TEXT</h4></div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="45" height="40" style="float: left;"/></div>
<div class="card-heading"><h4>TEXT</h4></div>
</div>
</div>

<div>
<div class="sub-heading">
<h2>Heading</h2>
</div>
</div>
<div class="column">
<div class="row">
<div><img src="test" width="40" height="40" style="float: left;"/></div>
<div class="card-heading"><h4>TEXT</div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="40" height="40" style="float: left;"/></div>
<div class="card-heading"><h4>TEXT</h4></div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="40" height="40" style="float: left;"/></div>
<div class="card-heading"><h4>TEXT</h4></div>
</div>
</div>



</div>

<div class="collapsible">
<span id="container">
<img src="test.png" width="45" height="45" alt="">
<span class="sub-container">Heading</span>
</span>
</div>
<div class="content">
<div class="column">
<div class="row">
<div><img src="test.png" width="45" height="40" style="float: left;"/></div>
<div class="card-heading"><h4>TEXT</h4></div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="45" height="40" style="float: left;"/></div>
<div class="card-heading"><h4>TEXT</h4></div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="45" height="40" style="float: left;"/></div>
<div class="card-heading"><h4>TEXT</h4></div>
</div>
</div>

<div>
<div class="sub-heading">
<h2>Heading</h2>
</div>
</div>
<div class="column">
<div class="row">
<div><img src="test" width="40" height="40" style="float: left;"/></div>
<div class="card-heading"><h4>TEXT</div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="40" height="40" style="float: left;"/></div>
<div class="card-heading"><h4>TEXT</h4></div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="40" height="40" style="float: left;"/></div>
<div class="card-heading"><h4>TEXT</h4></div>
</div>
</div>


</div>



<div class="collapsible">
<span id="container">
<img src="test.png" width="45" height="45" alt="">
<span class="sub-container">Heading</span>
</span>
</div>

<div class="content">
<div class="sub-heading">
<h2>Heading</h2>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="45" height="40" style="float: left;"/></div>
<div class="card-heading"><h4>TEXT</h4></div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="45" height="40" style="float: left;"/></div>
<div class="card-heading"><h4>TEXT</h4></div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="45" height="40" style="float: left;"/></div>
<div class="card-heading"><h4>TEXT</h4></div>
</div>
</div>

<div>
<div class="sub-heading">
<h2>Heading</h2>
</div>
</div>
<div class="column">
<div class="row">
<div><img src="test" width="40" height="40" style="float: left;"/></div>
<div class="card-heading"><h4>TEXT</div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="40" height="40" style="float: left;"/></div>
<div class="card-heading"><h4>TEXT</h4></div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="40" height="40" style="float: left;"/></div>
<div class="card-heading"><h4>TEXT</h4></div>
</div>
</div>
</div>
</div>

最佳答案

var col1 = document.getElementsByClassName('collapsible');
let lastClick;
let content;

[...col1].forEach(col => {
col.addEventListener('click', function() {
// Check if last clicked ele is same as current and it has 'active' class
if (this == lastClick && this.classList.contains('active')) {
this.classList.remove('active');
content.style.maxHeight = null;
return;
}
// Remove active class from all elements along with maxheight to null
[...col1].forEach(col => {
col.classList.remove('active')
col.nextElementSibling.style.maxHeight = null;
});

// Add active to clicked element and apply the height to the next element sibling.
this.classList.add('active');
content = this.nextElementSibling;
content.style.maxHeight = content.scrollHeight + "px";
lastClick = this;
});
})
.centered {
position: absolute;
margin-top: 30px;
left: 13%;
color: white;
font-weight: bold;
font-size: 35px;
height: auto;
display: inline-block;
}

@media (max-width: 1030px) {
.centered {
float: none;
display: block;
text-align: left;
}
#container {
display: flex;
margin-left: 50px;
align-items: center;
}
}

.column {
padding: 30px;
height: 200px;
margin: -20px;
width: 430px;
height: 120px;
border-radius: 10px;
display: inline-block;
border: 2px #e6e6e6;
padding-left: 48px;
}

.collapsible {
background-color: #777;
color: white;
cursor: pointer;
padding: 18px;
width: 100%;
border: none;
text-align: left;
outline: none;
font-size: 15px;
margin-top: 10px;
height: 55px;
}

.active,
.collapsible:hover {
background-color: #555;
}

.collapsible:after {
content: '\002B';
color: white;
font-weight: bold;
float: right;
margin-left: 5px;
margin-top: -30px;
}

.active:after {
content: "\2212";
}

.content {
padding: 0 40px;
max-height: 0;
overflow: hidden;
transition: max-height 0.2s ease-out;
background-color: #f1f1f1;
margin: 0px;
}

#container {
display: flex;
margin-left: 10px;
align-items: center;
margin-top: -12px;
}

#container>* {
margin-right: 15px;
}

.maincontainer {
margin: auto;
width: 90%;
margin-top: -20px;
}

.card-heading {
word-wrap: break-word;
margin-left: 10px;
margin-top: 11px;
}

h4 {
font-family: Verdana, sans-serif;
font-size: 13px;
line-height: 1.5;
}

h2 {
font-family: Verdana, sans-serif;
text-align: center;
font-size: 20px;
}

.sub-container {
font-size: 20px;
font-family: 'Open Sans', sans-serif;
}
<div class="maincontainer">

<div class="collapsible">
<span id="container">
<img src="test.png" width="45" height="45" alt="">
<span class="sub-container">Heading</span>
</span>
</div>
<div class="content">
<div class="sub-heading">
<h2>Heading</h2>
</div>
<div class="column">
<div class="row">
<div><img src="test.png" width="45" height="40" style="float: left;" /></div>
<div class="card-heading">
<h4>TEXT</h4>
</div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="45" height="40" style="float: left;" /></div>
<div class="card-heading">
<h4>TEXT</h4>
</div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="45" height="40" style="float: left;" /></div>
<div class="card-heading">
<h4>TEXT</h4>
</div>
</div>
</div>

<div>
<div class="sub-heading">
<h2>Heading</h2>
</div>
</div>
<div class="column">
<div class="row">
<div><img src="test" width="40" height="40" style="float: left;" /></div>
<div class="card-heading">
<h4>TEXT
</div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="40" height="40" style="float: left;" /></div>
<div class="card-heading">
<h4>TEXT</h4>
</div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="40" height="40" style="float: left;" /></div>
<div class="card-heading">
<h4>TEXT</h4>
</div>
</div>
</div>



</div>

<div class="collapsible">
<span id="container">
<img src="test.png" width="45" height="45" alt="">
<span class="sub-container">Heading</span>
</span>
</div>
<div class="content">
<div class="column">
<div class="row">
<div><img src="test.png" width="45" height="40" style="float: left;" /></div>
<div class="card-heading">
<h4>TEXT</h4>
</div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="45" height="40" style="float: left;" /></div>
<div class="card-heading">
<h4>TEXT</h4>
</div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="45" height="40" style="float: left;" /></div>
<div class="card-heading">
<h4>TEXT</h4>
</div>
</div>
</div>

<div>
<div class="sub-heading">
<h2>Heading</h2>
</div>
</div>
<div class="column">
<div class="row">
<div><img src="test" width="40" height="40" style="float: left;" /></div>
<div class="card-heading">
<h4>TEXT
</div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="40" height="40" style="float: left;" /></div>
<div class="card-heading">
<h4>TEXT</h4>
</div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="40" height="40" style="float: left;" /></div>
<div class="card-heading">
<h4>TEXT</h4>
</div>
</div>
</div>


</div>



<div class="collapsible">
<span id="container">
<img src="test.png" width="45" height="45" alt="">
<span class="sub-container">Heading</span>
</span>
</div>

<div class="content">
<div class="sub-heading">
<h2>Heading</h2>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="45" height="40" style="float: left;" /></div>
<div class="card-heading">
<h4>TEXT</h4>
</div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="45" height="40" style="float: left;" /></div>
<div class="card-heading">
<h4>TEXT</h4>
</div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="45" height="40" style="float: left;" /></div>
<div class="card-heading">
<h4>TEXT</h4>
</div>
</div>
</div>

<div>
<div class="sub-heading">
<h2>Heading</h2>
</div>
</div>
<div class="column">
<div class="row">
<div><img src="test" width="40" height="40" style="float: left;" /></div>
<div class="card-heading">
<h4>TEXT
</div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="40" height="40" style="float: left;" /></div>
<div class="card-heading">
<h4>TEXT</h4>
</div>
</div>
</div>

<div class="column">
<div class="row">
<div><img src="test.png" width="40" height="40" style="float: left;" /></div>
<div class="card-heading">
<h4>TEXT</h4>
</div>
</div>
</div>
</div>
</div>

关于javascript - 单击展开的部分时折叠并展开其他部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57834552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com