【发布时间】:2012-01-14 15:03:54
【问题描述】:
(关于 Stack Overflow 的第一个问题。希望我做对了。)
我正在尝试创建一个浮动菜单,该菜单从其内容继承其宽度(因为我事先不知道宽度,即从 URL 加载)。我可以通过让菜单 div 绝对定位而不设置宽度或高度来做到这一点。
当内容高到需要滚动时,就会出现问题。我设置“溢出:自动;”以便它可以垂直滚动,但新的滚动条不会使 div 更宽。取而代之的是,div 保持相同的宽度,并且滚动条会突出到之前大小合适的内容中,从而强制内容换行。
在示例中:在 Firefox 中,“5”被换行到下一行,但在 Chrome(至少对于 Mac)中,它全部显示在一行中。
在不明确设置菜单宽度以包括滚动条宽度的情况下,有什么优雅的方法可以做到这一点?
谢谢!
【问题讨论】:
-
据我所知,不使用 JavaScript 是无法做到这一点的。如果我错了,我很想听听!
-
丑陋的 hack-fix 是,当您知道内容太高并且滚动条将可见时,您可以将包含 div 的宽度显式设置为其当前内部宽度 + 浏览器的宽度滚动条(即使用这样的代码:jdsharp.us/jQuery/minute/calculate-scrollbar-width.php)。在 Mac 版 Chrome 中,滚动条宽度为 0,因此不会增加任何额外空间。在 Firefox for Mac 中,滚动条宽度为 15。
-
是的,这就是我所说的那种 JavaScript。
-
有趣的是,无论你在 div 上放置多少右填充,如果出现滚动条,它仍然会包裹在 FF 中。见jsfiddle.net/w7Mm8/30。
-
@Tristan 您提供的用于计算滚动宽度的链接中的代码存在错误。您需要在它动态创建的 html 中添加一个额外的
</div>。
标签: html css menu scrollbar positioning