【问题标题】:Apply position: fixed to a div while maintaining auto-width应用位置:固定到 div,同时保持自动宽度
【发布时间】:2023-04-04 17:21:01
【问题描述】:

我有一个打开的对话框窗口,它有一个可调整大小的宽度和一个可引发滚动的最大高度。我想在此对话框的顶部放置一个 div(或多个元素,如有必要),这样当我滚动时,该 div 仍然可见。我还希望 div 的宽度能够填充对话框的宽度。

所以,我从一些基本的 HTML 标记开始:

<div id="dialog">
    <div id="dialogHeader"><div>
    <div id="dialogContents"></div>
</div>

此时,dialogHeader 的宽度会自动缩放以适应对话框的宽度。但是,如果我向下滚动 dialogContents,dialogHeader 会滚动出视口。

当使用“位置:固定;”标记 dialogHeader 时,我遇到了相反的问题现在,它仍留在视口中,但其宽度缩小到其内容的宽度。

如果我将 dialogHeader 的宽度设置为 100%,那么它会扩展到对话框之外。

有什么诀窍可以实现这两种效果吗?还是我需要使用jQuery监控对话框的宽度并自动调整dialogHeader的宽度?

这是一个屏幕截图,显示我的元素位于对话框顶部,其位置设置为固定。请注意,您可以看到绿色背景没有覆盖整个顶部。

【问题讨论】:

  • 是的。该对话框有一个滚动条。我在场景的屏幕截图中进行了编辑。
  • 你能把滚动条放在内容 div 上而不是外层 div 上吗?
  • 可能。我只是认为这将是阻力最小的路径,因为在此应用程序中的所有对话框的对话框级别设置了最大高度。限制对话框子集中的内容高度可能会导致潜在的双重嵌套滚动条/其他不规则行为......只是好奇是否可以先这样。 :)

标签: javascript html css


【解决方案1】:

将窗口内容单独且绝对定位在窗口容器内,并使用overflow:auto 强制内容滚动而不是溢出/增长其父级。

您可以将任何顶部浮动元素放在父上下文中。

Sample implementation on JSfiddle

请注意,您可以随意调整输出窗口的大小以测试其调整大小。

【讨论】:

  • 查看 cmets。他不想将滚动条移动到内容上,而是希望将其保留在整个对话框中。
  • 我更改了小提琴以添加浮动搜索框,但如果这不是他要找的我完全误解了这个问题呵呵。
猜你喜欢
  • 2013-02-02
  • 1970-01-01
  • 2015-07-24
  • 1970-01-01
  • 2014-08-23
  • 1970-01-01
  • 2017-06-03
  • 2012-04-17
  • 1970-01-01
相关资源
最近更新 更多