首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >修复HTML中的左右浮动图像

修复HTML中的左右浮动图像
EN

Stack Overflow用户
提问于 2012-12-12 07:15:46
回答 4查看 7.7K关注 0票数 3

这是我想要做的:在一个网站的顶部有一个横幅,横跨整个网站。左侧是菜单,右侧是徽标图像;菜单向左浮动,图像向右浮动。

问题在于浏览器窗口的大小调整。因为图像是向右浮动的,所以随着窗口变小,它会正确地移动。但是,在某些情况下,它开始浮动到菜单中。Here是一个用两个浮动图像来说明这种效果的小提琴。调整浏览器窗口的大小以查看两个图像如何重叠。

设置

代码语言:javascript
运行
复制
body {
  min-width: 800px;
}

我现在可以确保当浏览器窗口达到一定的最小宽度时,滚动条就会出现。然而,这并不妨碍右浮动图像在浏览器窗口变小时继续移动。我试着改变position: relative,但是没有起作用。我试图在浏览器窗口到达其min-width时使用Javascript来固定图像,但似乎也没有影响。在DIV上使用min-width并使图像成为DIV的子项也不起作用。

我的问题是:如何确保从特定的窗口大小开始,右侧浮动的图像保持不动,而不是浮动到左侧浮动菜单中?

编辑:哦,天哪,我忘了提到一个相当重要的细节:顶部的菜单栏需要有粘性。这就是为什么我对DIV使用position: fixed属性的原因。其他页面内容应该滚动到该菜单下,然后滚出窗口,看到修改后的fiddle here,它基于ntgCleaner的答案。这改变了整个事情,不是吗!很抱歉..。

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-12 07:31:55

我改变了几件事:

  1. 我让你的横幅div变成了一个容器,而不仅仅是一个自由浮动的DIV。我给那个banner div设置了一个最小宽度:280px,并让它变成了overflow:hidden;
  2. I,让图像只左右浮动,而不是相对或绝对地定位(因为它现在在
  3. 容器中)。

#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中

代码语言:javascript
运行
复制
<div id="content">
this <br>
is <br>
some <br>
test <br>
text <br>
</div>

然后将其添加到您的CSS中

代码语言:javascript
运行
复制
#content {
    margin:60px 0px 0px 0px;
}​

Here's the new fiddle

票数 1
EN

Stack Overflow用户

发布于 2012-12-12 07:25:01

这就是你想要的吗?http://jsfiddle.net/9wNEx/10/

您没有正确使用position: fixed。固定的意思是“相对于视口或浏览器窗口定位”,这正是你所体验到的。

我从图像中删除了position: fixed,并将它们放入了div中。这将使它们始终位于页面的顶部,因为它们位于仍然固定的div中。

此外,我还调整了一些其他样式以复制您的示例。请注意,我去掉了固定高度的头部,并将其替换为填充底部。这样,当屏幕尺寸变小时,高度将跟随内容,并且图像被强制放在另一个下面。

css现在看起来像这样:

代码语言:javascript
运行
复制
#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;
}
票数 1
EN

Stack Overflow用户

发布于 2012-12-12 07:27:37

当我看着你的小提琴时,我想你的问题根本不是花车。position:fixed取代了float。这两个元素根本不是浮动的,它们在一个固定的位置(类似于绝对位置),这就是为什么当它们没有足够的空间时它们会重叠。

去掉float:leftfloat:right,结果是一样的。此外,topleftbottomright不适用于非定位元素。所以它们在你的横幅上是多余的。

然而,如果你使用浮动,当没有足够的空间时,右边的图像将在左边下面换行。参见http://codepen.io/morewry/pen/rjCGd。假设图像的高度仅为jsfiddle测试而设置,那么您需要做的就是:

代码语言:javascript
运行
复制
.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 */
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13830123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档