Javascript 滚动条移动内容
我有:我有几个网页都有这个大纲:Javascript 滚动条移动内容,javascript,html,css,scrollbar,centering,Javascript,Html,Css,Scrollbar,Centering,我有:我有几个网页都有这个大纲: <body> <div id="container"> CONTENT </div> </body> 问题:所有页面都较短,因此不会显示滚动条,但有一页较长,因此会显示右侧的垂直滚动条。第二页会使容器稍微(向左)移动一点 据我所知,一个常见的解决方案是让滚动条显示在所有页面上,但我真的想避免这种情况,因为它只是多个页面中的一个页面 问题:有没有一种方法可以避免在容器居中时移动容器,而不使滚动条显示在所有页面上?我
<body>
<div id="container">
CONTENT
</div>
</body>
问题:所有页面都较短,因此不会显示滚动条,但有一页较长,因此会显示右侧的垂直滚动条。第二页会使容器稍微(向左)移动一点
据我所知,一个常见的解决方案是让滚动条显示在所有页面上,但我真的想避免这种情况,因为它只是多个页面中的一个页面
问题:有没有一种方法可以避免在容器居中时移动容器,而不使滚动条显示在所有页面上?我不知道纯CSS解决方案,但您可以使用javascript动态计算并调整左边框的正确宽度(通过滚动条的大小,使右边距稍微薄一些)
顺便说一句:IMO:正确的处理方法是:保持原样。因为这是一种默认行为,我认为用户不会像你那样担心。这是我的观点,有些人可能会有不同的观点,但是在每个页面上添加滚动条(解决这个问题)是一个巨大的失败。)您也可以使用php,在长页面上添加左填充值,但滚动条在不同浏览器/平台上的宽度不同,因此javascript将是唯一的像素完美解决方案。拥有大屏幕的人在任何页面上都看不到滚动条 使用小型显示器的人总是会在所有页面上看到滚动条 不管显示器大小如何,人们都可以自由设置任意大小的浏览器窗口并产生滚动条 哦,我们不要忘记有人喜欢添加十几个浏览器工具栏插件,使浏览器窗口的内容区域尽可能高出一半 这就是它的本质,没有静态的解决方案可以绕过它。由于上面列出的原因,更改一页的页边距不是解决方案 如果您坚持修复人们已经学会使用的东西,那么它必须是一个“动态”JavaScript解决方案,您可以在其中计算左侧边距并添加滚动条的宽度。对于不同的浏览器,条形图的宽度不同,因此您也必须计算它 编辑:就像有人在另一个回答中所说的,这是默认的浏览器行为,应该单独处理 Edit2:正如用户dampe在评论中所说,每次用户调整窗口大小后,您还必须触发JavaScript 这将是对你时间的巨大浪费。通常,浏览器的默认行为由浏览器决定。要考虑的变量太多,如果您没有测试所有场景、外观、操作系统、浏览器版本、浏览器品牌、工具栏附加组件、监视器类型、大小等,那么您肯定会错过一些东西。一旦开始工作,您将发现需要对Explorer进行异常和更正。在你意识到这一点之前,你最终会有一大块浮肿。。。为什么呢?这有什么价值 起点:100%保证所有浏览器和情况下的预期行为 结束点:保证只在显示器/系统中看起来很棒。。。你冒着这样的风险,它在一个你从未想过的系统/场景中看起来像垃圾 首先搜索预先制作的JavaScript解决方案或jQuery插件。。。如果你找不到,问问自己为什么
- 不切实际
- 不可能
- 不值麻烦(需求量低)
html {
overflow-y: scroll;
}
Edit5:CSS解决方案有效,但不符合我的喜好。它会为每个页面创建滚动条,但当不需要时,滚动条会变灰或变空。。。不优雅。如果你想要一个纯css选项,我相信在正文中有一个绝对定位的div,宽度和高度为100%,溢出自动和右填充大于滚动条的宽度,将取代正常的滚动条,而不会在长页面上向左移动内容
我知道我很久以前就使用过这种技术,但我记不起我必须使用的css的确切技巧。@dampe:谢谢你的回答。我也不喜欢将滚动条添加到所有页面的想法。你可能是对的,除了我没有人会注意到。我一直试图让我的网站非常简单和优雅。你有没有关于如何使用javascript“动态计数”的例子?我同意。用户没有对您的站点进行页到页的比较。当然不是浏览器对浏览器的比较。@Thomas M:我没有代码示例。。但你可以在这里或谷歌搜索。它基本上是关于获取浏览器窗口的尺寸。然后做一些数学运算(边距=browserWindowWidth-内容大小),再做一些数学运算(leftMargin=边距/2)和(rightMargin=边距/2-ScrollBar的宽度)。等它需要测试和调整,IE可能会让你想把你的头扯下来:dAlso正如Sparky672提到的:每个滚动条的大小都会有点不同。还有不同的皮肤和工具栏。。。这一切使得动态解决方案为此浪费了时间:)嗯,我忘了。。你不必关心右边距。你基本上需要不同的解决方案。您必须计算左边距的宽度(没有滚动条时应该是多少)。然后做一些检查,看看滚动条是否出现(=你的内容很长)-当你确切地知道在哪个页面发生这种情况时,你可以避免这种情况。然后你只需要将边距设置为“应该”
html {
overflow-y: scroll;
}