gpt4 book ai didi

html - 展开/最小化 Accordion 无法正常工作

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:44 25 4
gpt4 key购买 nike

我创建了一个 Accordion ,但是当我选择尝试最小化“按钮 2”时,它反而最小化了“按钮 1”。但是,当我尝试最小化“按钮 1”时,它会自行最小化。我在 JS Fiddle 上发布了代码供您引用,这样您就可以看到它的实际效果:

https://jsfiddle.net/tay7p4eL/2/

知道我做错了什么以及如何解决这个问题,以便 Button 2 正确地最小化自身并且不影响 Button 1 吗?

HTML:

<div class="wrap-collabsible">
<input checked="checked" class="toggle" id="collapsible" type="checkbox" checked> <label class="lbl-toggle" for="collapsible" tabindex="0">Button 1</label>
<div class="collapsible-content">
<div class="content-inner">
<p>Test 1</p>
</div>
</div>
</div>

按钮 2

测试2

CSS:

.wrap-collabsible {
margin-bottom: 1.2rem 0;
}

input[type='checkbox'] {
display: none;
}

.lbl-toggle {
display: block;

font-weight: bold;
font-family: monospace;
font-size: 1.2rem;
text-transform: uppercase;
text-align: center;

padding: 1rem;

color: #A77B0E;
background: #FAE042;

cursor: pointer;

border-radius: 7px;
transition: all 0.25s ease-out;
}

.lbl-toggle:hover {
color: #7C5A0B;
}

.lbl-toggle::before {
content: ' ';
display: inline-block;

border-top: 5px solid transparent;
border-bottom: 5px solid transparent;
border-left: 5px solid currentColor;
vertical-align: middle;
margin-right: .7rem;
transform: translateY(-2px);

transition: transform .2s ease-out;
}

.toggle:checked + .lbl-toggle::before {
transform: rotate(90deg) translateX(-3px);
}

.collapsible-content {
max-height: 0px;
overflow: hidden;
transition: max-height .25s ease-in-out;
}

.toggle:checked + .lbl-toggle + .collapsible-content {
max-height: 350px;
}

.toggle:checked + .lbl-toggle {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}

.collapsible-content .content-inner {
background: rgba(250, 224, 66, .2);
border-bottom: 1px solid rgba(250, 224, 66, .45);
border-bottom-left-radius: 7px;
border-bottom-right-radius: 7px;
padding: .5rem 1rem;
}

最佳答案

在您的 html 中,您为“按钮 1”和“按钮 2”输入分配了相同的“可折叠”ID。为每个输入分配唯一的 ID(并更正相应的标签 html)应该可以解决您的问题。

例如:

.wrap-collabsible {
margin-bottom: 1.2rem 0;
}

input[type='checkbox'] {
display: none;
}

.lbl-toggle {
display: block;
font-weight: bold;
font-family: monospace;
font-size: 1.2rem;
text-transform: uppercase;
text-align: center;
padding: 1rem;
color: #A77B0E;
background: #FAE042;
cursor: pointer;
border-radius: 7px;
transition: all 0.25s ease-out;
}

.lbl-toggle:hover {
color: #7C5A0B;
}

.lbl-toggle::before {
content: ' ';
display: inline-block;
border-top: 5px solid transparent;
border-bottom: 5px solid transparent;
border-left: 5px solid currentColor;
vertical-align: middle;
margin-right: .7rem;
transform: translateY(-2px);
transition: transform .2s ease-out;
}

.toggle:checked + .lbl-toggle::before {
transform: rotate(90deg) translateX(-3px);
}

.collapsible-content {
max-height: 0px;
overflow: hidden;
transition: max-height .25s ease-in-out;
}

.toggle:checked + .lbl-toggle + .collapsible-content {
max-height: 350px;
}

.toggle:checked + .lbl-toggle {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}

.collapsible-content .content-inner {
background: rgba(250, 224, 66, .2);
border-bottom: 1px solid rgba(250, 224, 66, .45);
border-bottom-left-radius: 7px;
border-bottom-right-radius: 7px;
padding: .5rem 1rem;
}
<div class="wrap-collabsible">
<input checked="checked" class="toggle" id="collapsible1" type="checkbox" checked>
<label class="lbl-toggle" for="collapsible1" tabindex="0">Button 1</label>
<div class="collapsible-content">
<div class="content-inner">
<p>Test 1</p>
</div>
</div>
</div>

<div class="wrap-collabsible">
<input checked="checked" class="toggle" id="collapsible2" type="checkbox" checked>
<label class="lbl-toggle" for="collapsible2" tabindex="0">Button 2</label>
<div class="collapsible-content">
<div class="content-inner">
<p>Test 2</p>
</div>
</div>
</div>

关于html - 展开/最小化 Accordion 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51119295/

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