垂直浮动div

我有垂直浮动div:

当页面内容包含滚动时,div完全附加到内容:

在此处输入图像描述

但是当页面不包含滚动时,浮动div和页面内容之间会有几个像素的差距:

在此处输入图像描述

我怎么解决这个问题?

我想我应该检查内容的位置或检查页面上是否有滚动并使用jquery动态地根据内容设置div的位置?

这里简单的演示http://jsfiddle.net/KEeqe/8只需改变高度:1710px到500px – 400px你会明白我的意思

你不需要JavaScript。

在你的jsfiddle中 ,你有一个div,可能包含你的页面内容和一个你想要固定在它右侧的一个小按钮。 由于您的内容div设置为width: 80% ,因此只需按下您的Twitter按钮left: 80% 。 由于边框和填充,它会偏离几个像素,因此请在twitter按钮上使用margin-left来修复它。 在你的jsfiddle中,有一个2px的差距,所以你需要应用margin-left: -2px 。 这是简单的非js修复: Tadah!

如果你有一个固定宽度内容div居中,你会遇到同样的问题。 解决方案类似:将twitter按钮置于中心,左边距为内容宽度的一半,加上边框。 所以,如果内容固定在400px宽并且居中,那么你就可以这样定位你的推特按钮: left: 50%; margin-left: 202px left: 50%; margin-left: 202px 。 Tadah!

您的div位于视口右侧的固定位置。 如果删除了滚动条,则视口会变大,因此您的div将向右移动滚动条的宽度。

我真的不知道你想要在这里实现什么,但看起来你想要将div修复到页面的左侧。 如果我错了,请纠正我。

如果你想将它固定在左侧,而不是:

 right: 446px; 

使用:

 left: 0; 

编辑

我想我知道你现在想要实现的目标 – 你希望侧边栏对于div处于固定位置。 不幸的是, position: fixed只能用于根据视口修复位置。

你可能不得不使用javascript。 这是我修改过的jsfiddle.net以使用一些jQuery

另一个编辑

这是一个更好的版本,使过渡更顺畅

在这一个中有一个选项 ,固定div固定在左边82%。 所以它总是位于内容之外,但相对宽度会随着视口宽度的增加而增加。 另一种方法是为内容固定宽度(例如500px)将固定div放在left: 520px

固定在左边

这是一种使用jQuery / JavaScript实现它的方法。 这是一个工作示例: http : //jsfiddle.net/KEeqe/11/

HTML:

 
Wrap Div

CSS:

 #wrap{ border: 2px solid rgb(0, 0, 0); width: 450px; height: 2101px; margin: 0 auto; } #twitter-tab{ position: fixed; top: 0; left: 0; display: block; } 

jQuery / JavaScript:

 $(function () { var pos = $('#wrap').position(); var posTop = pos.top; var posLeft = pos.left + $('#wrap').outerWidth(); $('#twitter-tab').css({'top' : posTop, 'left': posLeft}); $(window).resize(function () { var posLeft = $('#wrap').position().left + $('#wrap').outerWidth(); $('#twitter-tab').css({'left': posLeft}); }); }); 

我编辑了我的解决方案,允许在CSS中更改#wrap宽度(无需更改JavaScript),并且还包含beno的窗口resize建议。

每次垂直滚动条出现和消失时,视口宽度都会更改,这就是为什么不能将固定定位基于视口右侧的原因。

如果你绝对确定你的中心内容不会改变宽度,你可以使用left而不是右边但是如果你使用水平居中你再次遇到麻烦,因为你永远不会满足不同屏幕分辨率(宽度)的要求。

您可以将div移动到视口的左侧,这通常是Web开发人员选择的位置,以避免这样的问题,或者您仍然可以将它放在您想要的位置,但是您必须更改布局并可能使用绝对或相对定位。