Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 滚动条移动内容_Javascript_Html_Css_Scrollbar_Centering - Fatal编程技术网

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插件。。。如果你找不到,问问自己为什么

  • 不切实际
  • 不可能
  • 不值麻烦(需求量低)
Edit3:我做了一些搜索以满足我的好奇心。我找到了一个带有jQuery解决方案的线程,以及计算滚动条宽度的方法的链接

我知道,这是浪费时间和资源,但这里有一个链接供感兴趣的人使用

Edit4:我找到了一个CSS解决方案。我还没有测试过这个,但如果它能起作用,那就太好了

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;
}