javascript - 具有扩展 div 的表与下一行重叠?

标签 javascript html css

我想创建一个表,其中每个 <td>包含一个可以扩展的 div,但问题是表行不随 div 扩展。下面是我的示例代码:

document.querySelector('.expand').addEventListener('click', () => {
  let additionalInfo = document.querySelector('.additional-info');
  if (additionalInfo.style.display === 'none') {
    additionalInfo.style.display = "block";
    additionalInfo.style.maxHeight = additionalInfo.scrollHeight + "px";
  } else {
    additionalInfo.style.display = "none";
    additionalInfo.style.maxHeight = 0 + "px";
  }
});
.main-info {
  width: 650px;
  height: 150px;
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}

.additional-info {
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
  padding: 0 18px;
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.2s ease-out;
  background-color: #f1f1f1;
  display: none;
}
<div>
  <div>
    <input type="text"></input>
  </div>
  <div>
    <table>
      <tr>
        <td>
          <div class="main-info">
            <div class="expand">Expand</div>
            Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test
            <div class="additional-info">
              Some additional Information!<br> Some additional Information!<br> Some additional Information!<br> Some additional Information!<br> Some additional Information!<br> Some additional Information!<br> Some additional Information!<br> Some additional
              Information!<br> Some additional Information!
            </div>
          </div>
        </td>
      </tr>


      <tr>
        <td>
          <div class="main-info">
            <div class="expand">Expand</div>
            Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test
            <div class="additional-info">
              Some additional Information!<br> Some additional Information!<br> Some additional Information!<br> Some additional Information!<br> Some additional Information!<br> Some additional Information!<br> Some additional Information!<br> Some additional
              Information!<br> Some additional Information!
            </div>
          </div>
        </td>
      </tr>


    </table>
  </div>
</div>

这是 td 元素:

<td>
    <div class="main-info">
        <div class="expand">Expand</div>
        Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test
    <div class="additional-info">
        Some additional Information!<br>
        Some additional Information!<br>
        Some additional Information!<br>
        Some additional Information!<br>
        Some additional Information!<br>
        Some additional Information!<br>
        Some additional Information!<br>
        Some additional Information!<br>
        Some additional Information!
    </div>
    </div>
</td>

基本上,当 additional-info div 变为可见,它与下一行的内容重叠。我注意到如果additional-info div 不是 main-info 的一部分但作为它自己的元素添加到 td 中,该行很好地展开:

<td>
    <div class="main-info">
        <div class="expand">Expand</div>
        Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test
    </div>

    <!-- additional-info is separate from main-info -->
    <div class="additional-info">
        Some additional Information!<br>
        Some additional Information!<br>
        Some additional Information!<br>
        Some additional Information!<br>
        Some additional Information!<br>
        Some additional Information!<br>
        Some additional Information!<br>
        Some additional Information!<br>
        Some additional Information!
    </div>
</td>

有没有办法获得相同的行为但保留 additional-info div 作为 main-info 的一部分分区?我不想使用 JQuery 等其他库,而只是使用 vanilla JS 和 HTML/CSS。

最佳答案

更改类主要信息来自

.main-info {
    width: 650px;
    height: 150px;
    box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}

.main-info {
    width: 650px;
    min-height: 150px;
    box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}

col 会很好地扩展

关于javascript - 具有扩展 div 的表与下一行重叠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59813483/

相关文章:

javascript - Reactjs API错误 'TypeError: fetch(...).then(...).then(...).done is not a function'

javascript - 按两个不同类别过滤

java - GWT:将用户转发到 URL

javascript - 试图在悬停时使不同的文本出现在 3 个对齐的图像下方

javascript - 提供 div 可以回退的默认文本

javascript - 与 Javascript 对象交互,其中键是数字日期/时间

javascript - 修改后的警告框样式(浏览器上的 JavaScript)

html - 如何通过 Twitter Bootstrap Button Group 上的 text-* 类对齐文本?

c# - 强制更改 RadioButtonGroup 中的样式?

css - JSF 的外部 CSS