当存在滚动条时绝对 div 发生变化

发布于 2024-10-27 13:50:51 字数 207 浏览 6 评论 0原文

我的页面的全部内容都有问题。
问题是如果没有滚动条,我的内容向右大约 20 像素,但是当存在滚动条时,它会向左移动。 我必须通过将绝对定位的 div 放置在内容上 20px 来补偿这一点,直到出现滚动条(因为它位于页面的右侧)。

这对我来说是一个糟糕的错误,但我只是想要一个简单的方法来解决这个问题。有什么快速简单的建议吗?我将主要内容 div 设为绝对 div 会更好吗?

i have a problem with the entire content of my page.
The problem being without a scrollbar present my content is about 20px to the right, but when a scrollbar is present it shifts to the left.
I have to compensate for this for an absolute postioned div by positioning it over the content by 20px until a scrollbar is present as it rests at the right hand side of the page.

This is a crappy fault on my behalf but i just want an easy way to fix this. Any quick and easy suggestions? Would i be better off making the main content div an absolute one?

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

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

发布评论

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

评论(3

迷雾森÷林ヴ 2024-11-03 13:50:51

一种快速但肮脏的方法是始终强制滚动条可见:

html { Overflow-y:scroll; }

并不理想,但如果缺少滚动条偏移会破坏您的设计,它会标准化外观。

One quick and dirty way is to always force the scrollbar to be visible with:

html { overflow-y: scroll; }

Not ideal, but it standardizes the appearance if the lack of scrollbar offset is breaking your design.

抹茶夏天i‖ 2024-11-03 13:50:51

如果我正确理解你的问题,当滚动条存在时你的绝对 div 是 20px ?如果是这种情况,您可以设置一个父 div 来包围您的内容和绝对 div。

确保将此包装器 div 设置为position:relative;所以现在你的绝对 div 将位于相对 div 内,而不是文档级别。如果有滚动条,包装器 div 将向左偏移 20px(滚动条的宽度),绝对 div 也会向左偏移。

<div class="wrapper">
  your content goes here
  <div class="absoluteDiv"></div>
</div>

.wrapper { position: relative; }
.absoluteDiv { position: absolute; }

If I'm understanding your problem correctly, your absolute div is 20px off when a scrollbar is present? If that is the case what you can do is set a parent div that wraps around your content and absolute div.

Be sure to set this wrapper div to position: relative; so now your absolute div will be positioned inside the relative div instead of the document level. If there is a scrollbar, the wrapper div will be offset to the left by 20px (the width of the scrollbar) and the absolute div will also.

<div class="wrapper">
  your content goes here
  <div class="absoluteDiv"></div>
</div>

.wrapper { position: relative; }
.absoluteDiv { position: absolute; }
就此别过 2024-11-03 13:50:51

我认为您的内容实际上并没有以任何有问题的方式发生变化;只是滚动条的存在使视口变窄了。如果您使用的布局取决于视口宽度(例如流体布局或内容居中的固定宽度),这将导致所有内容在滚动条出现时移动滚动条宽度的一半。

AFAIK,没有可靠的方法来弥补这一点,因为滚动条的宽度未知。

I don't think your content is actually shifting in any sort of buggy way; it's just that the presence of the scroll bar makes the viewport narrower. If you're using a layout that depends on viewport width (e.g. fluid layout, or fixed-width with centered content), this will cause everything to move by half the width of the scroll bar when it appears.

AFAIK, there's no sure-fire way to compensate for that, since the width of the scroll bar isn't known.

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