我想要一个固定位置的可切换迪夫,放在屏幕底部,并具有最大高度百分比(此处,50%).然而,如果屏幕宽度缩小,其内容将无法在溢出上正确显示滚动条.如果我将溢出正确设置为.container,它就可以工作,但这会滚动切换迪夫,这是我不想要的.如果我将height: 100%设置为.container,它也有效,但无论如何,它的高度都是50%.我需要做什么才能达到我想要的行为?

const content = document.querySelector(".content");
const toggle = document.querySelector(".toggle");
toggle.addEventListener("click", (e) => {
  if (content.style.display != "none") {
    content.style.display = "none";
    toggle.innerHTML = "▲";
  } else {
    content.style.display = "block";
    toggle.innerHTML = "▼";
  }
});
.container {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100%;
  max-height: 50%;
  background-color: blue;
}

.content {
  height: 100%;
  overflow: auto;
}
<div class="other">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc pulvinar ante in facilisis faucibus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed lacinia massa quis sapien faucibus convallis. Suspendisse dignissim sem at nunc molestie egestas non quis nisi. Cras in auctor eros, ac ultricies nisi. Etiam finibus ut turpis at porta. Praesent mattis, sapien et rhoncus facilisis, sem mauris euismod risus, at bibendum lacus erat ut arcu. Nullam tellus risus, tristique quis nisl ut, malesuada ultricies lectus. Duis consequat ligula ut mi efficitur molestie. Ut malesuada, quam at luctus rutrum, augue ante efficitur urna, ac consequat velit metus sed velit. Morbi id dolor lacus. Maecenas quis quam ex. Nulla hendrerit aliquam massa a molestie.
</div>
<div class="container">
  <div class="toggle">▼</div>
  <div class="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc pulvinar ante in facilisis faucibus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed lacinia massa quis sapien faucibus convallis. Suspendisse dignissim sem at nunc molestie egestas non quis nisi. Cras in auctor eros, ac ultricies nisi. Etiam finibus ut turpis at porta. Praesent mattis, sapien et rhoncus facilisis, sem mauris euismod risus, at bibendum lacus erat ut arcu. Nullam tellus risus, tristique quis nisl ut, malesuada ultricies lectus. Duis consequat ligula ut mi efficitur molestie. Ut malesuada, quam at luctus rutrum, augue ante efficitur urna, ac consequat velit metus sed velit. Morbi id dolor lacus. Maecenas quis quam ex. Nulla hendrerit aliquam massa a molestie.
  </div>
</div>

推荐答案

您可能想将.content中的height替换为height:50vh;

.content {
  height:50vh;
  overflow: auto;
}

并删除.container中的max-height:

.container {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100%;
  background-color: blue;
}

50vh将作为蓝色区域的固定高度(+切换),因此您的container中不需要max-height. vh

只需根据您的需要调整50vh即可.由于切换,蓝色内容看起来超过50%.蓝色区域的高度是50%内容+切换高度.因此,只需根据需要减少50vh,例如46vh等.

const content = document.querySelector(".content");
const toggle = document.querySelector(".toggle");
toggle.addEventListener("click", (e) => {
  if (content.style.display != "none") {
    content.style.display = "none";
    toggle.innerHTML = "▲";
  } else {
    content.style.display = "block";
    toggle.innerHTML = "▼";
  }
});
.container {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100%;
  background-color: blue;
}

.content {
  height:50vh;
  overflow: auto;
}
<div class="other">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc pulvinar ante in facilisis faucibus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed lacinia massa quis sapien faucibus convallis. Suspendisse dignissim sem at nunc molestie egestas non quis nisi. Cras in auctor eros, ac ultricies nisi. Etiam finibus ut turpis at porta. Praesent mattis, sapien et rhoncus facilisis, sem mauris euismod risus, at bibendum lacus erat ut arcu. Nullam tellus risus, tristique quis nisl ut, malesuada ultricies lectus. Duis consequat ligula ut mi efficitur molestie. Ut malesuada, quam at luctus rutrum, augue ante efficitur urna, ac consequat velit metus sed velit. Morbi id dolor lacus. Maecenas quis quam ex. Nulla hendrerit aliquam massa a molestie.
</div>
<div class="container">
  <div class="toggle">▼</div>
  <div class="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc pulvinar ante in facilisis faucibus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed lacinia massa quis sapien faucibus convallis. Suspendisse dignissim sem at nunc molestie egestas non quis nisi. Cras in auctor eros, ac ultricies nisi. Etiam finibus ut turpis at porta. Praesent mattis, sapien et rhoncus facilisis, sem mauris euismod risus, at bibendum lacus erat ut arcu. Nullam tellus risus, tristique quis nisl ut, malesuada ultricies lectus. Duis consequat ligula ut mi efficitur molestie. Ut malesuada, quam at luctus rutrum, augue ante efficitur urna, ac consequat velit metus sed velit. Morbi id dolor lacus. Maecenas quis quam ex. Nulla hendrerit aliquam massa a molestie.
  </div>
</div>

Javascript相关问答推荐

详细说明如何以图表方式改变仪表的范围和 colored颜色

我的JS代码将按照哪个序列被解释

如何计算数组子级的深度- Vue.js

如果没有尾随斜线,托管在收件箱中的React/Vite将无法工作

TypScript界面中的Infer React子props

调用removeEvents不起作用

在nextjs服务器端api调用中传递认证凭证

配置WebAssembly/Emscripten本地生成问题

切换时排序对象数组,切换不起作用

更新动态数据中对象或数组中的所有值字符串

在我的index.html页面上找不到我的Java脚本条形图

如何在Angular拖放组件中同步数组?

使用Document.Evaluate() Select 一个包含撇号的HTML元素

JS Animate()方法未按预期工作

是否可以将Select()和Sample()与Mongoose结合使用?

将基元传递给THEN处理程序

在验证和提交表单后使用useNavigate()进行react 重定向,使用带有加载器和操作的路由

图表4-堆叠线和条形图之间的填充区域

无法设置RazorPay订阅API项目价格

如果对象中的字段等于某个值,则从数组列表中删除对象