javascript - 单击 Accordion 时,可并排打开的 Accordion 都会展开,如何仅打开单击的 Accordion ?

标签 javascript html

我正在制作一个练习网站,该网站具有多个可扩展部分,其中一些部分并排放置。我有 Accordion 工作,但所需的行为是当您单击按钮展开一个 Accordion 时,所有其他 Accordion 保持关闭状态。目前这在技术上是正确的,但同一行中单击的 Accordion 旁边的任何部分的 div 都会扩展为与单击的 Accordion 中的文本大小相同。

这是一个 fiddle 来展示我的意思:https://jsfiddle.net/jsfsmh/m5x08awc/1/但是您必须扩大结果窗口以确保两个 Div 彼此相邻而不是彼此叠置。以下是 Accordion 的相关内联 JavaScript:

 <script type="text/javascript">
            var acc = document.getElementsByClassName("accordion");
            for (var i = 0; i < acc.length; i++) {
                acc[i].addEventListener("click", function() {
                    panel = this.nextElementSibling;
                    if (panel.style.display === "block") {
                        panel.style.display = "none";
                    } else {
                        panel.style.display = "block";
                    }
                });
            }
        </script>

我确信我可以在这里做一些相当明显的事情,但我已经为此工作了几天,但我不知所措。我是 JavaScript 的初学者,我想说 CSS/HTML 可能是新手。任何帮助将不胜感激。

最佳答案

一行CSS就能解决这个问题!

问题是,当您使用 display:flex 时,flexbox 应用了一堆标准规则,其中之一是align-items:stretch,这使得较小的 Flexbox 项目自动调整大小以填充横轴中的空间(在这种情况下是高度)。您可以在此处查看选项:align-items

要修复它,请添加以下内容

align-items: flex-start;

到你的弹性盒容器。

工作中的 JSFiddle: JSFiddle

关于javascript - 单击 Accordion 时,可并排打开的 Accordion 都会展开,如何仅打开单击的 Accordion ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54103764/

相关文章:

javascript - 在 SVG 中切换图层

javascript - 如何在 SnapshotStore 中水合项目名称

javascript - 如何在 Chartjs 中制作整数刻度

javascript - NodeJs : How can I see the log of a NodeJs server running by PM2 in a EC2 instance

javascript - 当另一个下拉菜单打开(事件)时,下拉菜单不会关闭

javascript - 异物在 IE10 中不起作用

html - 使用 <img> 的 Sprite 图像

javascript - JS 文件在刷新后在局部 View 中不起作用

html - Foundation Zurb 网格内容堆叠

javascript - react Gatsby : implemented sequential fade-in animation for gallery but it doesn't work right after being deployed