这是我想要做的:在一个网站的顶部有一个横幅,横跨整个网站。左侧是菜单,右侧是徽标图像;菜单向左浮动,图像向右浮动。
问题在于浏览器窗口的大小调整。因为图像是向右浮动的,所以随着窗口变小,它会正确地移动。但是,在某些情况下,它开始浮动到菜单中。Here是一个用两个浮动图像来说明这种效果的小提琴。调整浏览器窗口的大小以查看两个图像如何重叠。
设置
body {
min-width: 800px;
}
我现在可以确保当浏览器窗口达到一定的最小宽度时,滚动条就会出现。然而,这并不妨碍右浮动图像在浏览器窗口变小时继续移动。我试着改变position: relative
,但是没有起作用。我试图在浏览器窗口到达其min-width
时使用Javascript来固定图像,但似乎也没有影响。在DIV上使用min-width
并使图像成为DIV的子项也不起作用。
我的问题是:如何确保从特定的窗口大小开始,右侧浮动的图像保持不动,而不是浮动到左侧浮动菜单中?
编辑:哦,天哪,我忘了提到一个相当重要的细节:顶部的菜单栏需要有粘性。这就是为什么我对DIV使用position: fixed
属性的原因。其他页面内容应该滚动到该菜单下,然后滚出窗口,看到修改后的fiddle here,它基于ntgCleaner的答案。这改变了整个事情,不是吗!很抱歉..。
谢谢!
发布于 2012-12-12 07:31:55
我改变了几件事:
#banner { left: 0px;top: 0px;width: 100%;height: 60px;background-color: lightblue;z-index: 1;不透明度: 0.8;overflow:hidden;min-width:280px;} #left { float:left;margin:5px;height:40px;} #right { float:right;margin:5px;height:40px;}
Here's the fiddle
对编辑后的问题进行编辑:
您只需将标题下的所有内容放入一个div中,然后为该div提供固定div高度的上边距。在这种情况下,它是60px。
将此代码添加到HTML中
<div id="content">
this <br>
is <br>
some <br>
test <br>
text <br>
</div>
然后将其添加到您的CSS中
#content {
margin:60px 0px 0px 0px;
}
Here's the new fiddle
发布于 2012-12-12 07:25:01
这就是你想要的吗?http://jsfiddle.net/9wNEx/10/
您没有正确使用position: fixed
。固定的意思是“相对于视口或浏览器窗口定位”,这正是你所体验到的。
我从图像中删除了position: fixed
,并将它们放入了div中。这将使它们始终位于页面的顶部,因为它们位于仍然固定的div中。
此外,我还调整了一些其他样式以复制您的示例。请注意,我去掉了固定高度的头部,并将其替换为填充底部。这样,当屏幕尺寸变小时,高度将跟随内容,并且图像被强制放在另一个下面。
css现在看起来像这样:
#banner {
left: 0px;
top: 0px;
width: 100%;
padding-bottom: 15px;
background-color: lightblue;
z-index: 1;
position: fixed;
opacity: 0.8;
}
#left {
float: left;
margin-left: 10px;
margin-top: 5px;
height: 40px;
}
#right {
float: right;
margin-right: 10px;
margin-top: 5px;
height: 40px;
}
发布于 2012-12-12 07:27:37
当我看着你的小提琴时,我想你的问题根本不是花车。position:fixed
取代了float。这两个元素根本不是浮动的,它们在一个固定的位置(类似于绝对位置),这就是为什么当它们没有足够的空间时它们会重叠。
去掉float:left
和float:right
,结果是一样的。此外,top
、left
、bottom
和right
不适用于非定位元素。所以它们在你的横幅上是多余的。
然而,如果你使用浮动,当没有足够的空间时,右边的图像将在左边下面换行。参见http://codepen.io/morewry/pen/rjCGd。假设图像的高度仅为jsfiddle测试而设置,那么您需要做的就是:
.banner {
padding: 5px; /* don't repeat padding unnecessarily */
min-width: ??; /* to keep floats from wrapping, set one */
overflow: hidden; /* clearfix */
}
.right { float: right; } /* only need one float, don't over-complicate it with two */
https://stackoverflow.com/questions/13830123
复制相似问题