不固定高度的滚动div

发布于 2024-10-30 20:29:03 字数 700 浏览 1 评论 0原文

我需要构建一个动态调整大小的滚动 div。

div 应动态调整大小以适合屏幕。但如果内容不适合屏幕,它应该显示一个滚动条。因此浏览器自己的滚动条永远不需要激活。

我可以通过在 div 中放置另一个 div 并使用 overflow: auto 来让滚动条出现在该 div 中。

<div id="gridcontainer" style="overflow:auto;height:300px; width:100px;" >
    <div id="gridcontent" style="height:100%">
    <!--Put loads of text in here-->
    </div>
</div>

问题是这仅在第一个 div 具有固定高度时才有效。我本来希望我可以将第一个 div 设置为 height:100%,但遗憾的是不是 - 该属性似乎被忽略,并且滚动条没有出现。

我尝试将 div 放入 height:100% 的表格中,并将第一个 div 设置为 height:auto,希望它可以从其父级获取高度。但 div 似乎仍然忽略了 height 属性。

所以我的问题是:可以仅使用 html 来完成此操作,还是使用 javascript 来完成?

I need to build a dynamically-resizing scrolling div.

The div should dynamically resize to fit the screen. But if the content doesn't fit on the screen, it should display a scrollbar. So the browser's own scrollbar should never need to become active.

I can get a scrollbar to appear in the div by placing another div inside it and using overflow: auto.

<div id="gridcontainer" style="overflow:auto;height:300px; width:100px;" >
    <div id="gridcontent" style="height:100%">
    <!--Put loads of text in here-->
    </div>
</div>

The trouble is that this only works when the first div has a fixed height. I had hoped I could just set the first div to height:100%, but sadly not- this property appears to get ignored, and the scrollbar just doesn't appear.

I have tried putting the divs in a table with height:100%, and setting the first div to height:auto, hoping it might take its height from its parent. But the div still seems to ignore the height property.

So my question is: Can this be done using just html, or- failing that- javascript?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

緦唸λ蓇 2024-11-06 20:29:03

您可以使用绝对定位拉伸 div。这样,它将始终采用浏览器窗口(或最近的定位祖先)的大小。

鉴于此 HTML:

<div id="gridcontainer"></div>

CSS 应该类似于:

#gridcontainer {
  position: absolute;
  top: 0; bottom: 0; left: 0; right: 0;
  overflow: auto;
}

Live Demo

You could stretch the div using absolute positioning. This way it will always take the size of the browser window (or the closest, positioned ancestor).

Given this HTML:

<div id="gridcontainer"></div>

the CSS should be something like:

#gridcontainer {
  position: absolute;
  top: 0; bottom: 0; left: 0; right: 0;
  overflow: auto;
}

Live Demo

殊姿 2024-11-06 20:29:03

从 IE9 开始,您可以使用视口单位。

假设容器的高度是动态的,除非其大小大于窗口高度。在这种情况下,我们停止扩展并停止扩展。激活卷轴。

#container{
  background: #eaeaea;
  max-height: 100vh;
  overflow-y: scroll;
}

div{
  outline: 1px solid orange;
  width: 200px;
  height: 200px;
}
<div id='container'>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
</div>

Since IE9 you can use viewport units.

Let's say that the height of your container is dynamic, unless its size is greater than the window height. In that case we stop the expansion & activate the scroll.

#container{
  background: #eaeaea;
  max-height: 100vh;
  overflow-y: scroll;
}

div{
  outline: 1px solid orange;
  width: 200px;
  height: 200px;
}
<div id='container'>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
</div>

瑕疵 2024-11-06 20:29:03

如果您尝试使元素适合屏幕,则可以将元素的高度和宽度值设置为 100%。

您还需要设置 html 和 body 的高度

html, body {height: 100%}
#gridcontaine {
   height: 100%;
   width: 100%;
 }

If you are trying to make element fit the screen then you can set the value of hight and width of the element to 100%.

You will also need to set the height of html and body

html, body {height: 100%}
#gridcontaine {
   height: 100%;
   width: 100%;
 }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文