javascript - 如何根据内容调整 Accordion 文本大小

标签 javascript html css

我正在尝试解析一个大文本文件并使用 Accordion 文本效果显示所有文本。这是结果:

enter image description here

正如您所看到的,对于小文本,没有问题,但是对于大文本......它无法正常工作。

如何添加滚动效果或使框变大以便正确显示所有文本内容?

jsfiddle: https://jsfiddle.net/jbfz09Ln/

代码:

html:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" lang="es-es">
<link rel="stylesheet" href="css/layout.css" type="text/css" media="screen">
<link rel="stylesheet" href="css/menu.css" type="text/css" media="screen">
<link rel="stylesheet" href="css/accordion.css" type="text/css" media="screen">

</head>
<body>
    <!--Añadimos al area principal el efecto acordeon con el texto -->
    <section class="mainArea" align="center">
            <button class="accordion">Boot and Services</button>
            <div id="placeholder" class="panelacc"></div>


    </section>

<script>


/* nos permite gestionar los eventos para el texto en forma de acordeon */
var acc = document.getElementsByClassName("accordion");
for (var j = 0; j < acc.length; j++) {
    acc[j].onclick = function(){
        this.classList.toggle("active");
        this.nextElementSibling.classList.toggle("show");
    }
}



</script>
</body>
</html>

Accordion .css:

button.accordion {
    background-color: #eee;
    color: #444;
    cursor: pointer;
    padding: 18px;
    width: 100%;
    border: none;
    text-align: left;
    outline: none;
    font-size: 15px;
    transition: 0.4s;
}

button.accordion.active, button.accordion:hover {
    background-color: #ddd;
}

button.accordion:after {
    content: '\02795';
    font-size: 13px;
    color: #777;
    float: right;
    margin-left: 5px;
}

button.accordion.active:after {
    content: "\2796";
}

div.panelacc {
    padding: 0 18px;
    background-color: white;
    max-height: 0;
    overflow: hidden;
    transition: 0.6s ease-in-out;
    opacity: 0;
}

div.panelacc.show {
    opacity: 1;
    max-height: 500px;  
}

div.panelacc.show p {
  color: black;
}

最佳答案

根据您的代码,您做错了两件事:

.mainArea{
  height:300px; /* REMOVE this one */
  border: 1px solid red;
}

/* AND */

div.panelacc.show {
    opacity: 1;
    max-height: 500px;  /* HERE you are setting a fix height */
}

解决方案:删除 height:300px; 行并将 500px 更改为 100%,如下所示 max-height: 100% ;

check your code i have updated it

关于javascript - 如何根据内容调整 Accordion 文本大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37100673/

相关文章:

javascript - jQuery Conditional 基于元素的内部 HTML 内容

javascript - 两个具有相同操作的提交按钮,其中一个为同一表单添加了功能/操作

php - 将文本框值传递给复选框值

javascript - 悬停时跟踪 div?

javascript - 如何在div上创建两个滚动条作为顶部和底部?

css - padding-top 与父级宽度的百分比有何关系?

javascript - vuejs - 如何将 Prop 和事件动态传递给动态组件

javascript - 允许数字、加号、减号和括号的正则表达式

javascript - 如何使用脚本隐藏 Google 电子表格中的边栏?

html - CSS 网格最小内容不会缩小到正确的大小