【问题标题】:Floating divs around and under an image在图像周围和下方浮动 div
【发布时间】:2013-05-14 22:18:04
【问题描述】:

我正在尝试设计一个页面,左侧有一个浮动图像,右侧有一个 div,其文本和块元素在图像周围流动,然后在图像下方有更多 div。使用此代码查看http://jsfiddle.net/BcjzK/3/

.container {
    width:700px;
    border:solid 1px gray;
}
.content {
    width:460px;
    border:solid 1px red;
    margin-right:0px;
    margin-left:auto;
}
.extra-content {
    width:230px;
    border:solid 1px green;
}
img {
    float:left;
    border:solid 1px blue;
}
blockquote {
    border:solid 1px gray;
    width:30%;
    float:right;
}

<div class="container">
    <img src="http://hazelden.ca/sample.png" width="320" height="auto" />
    <div class="content">
        <p> Some content, some blockquotes and images</p>
    </div>
    <div class="extra-content">
        Some more text
    </div>
</div>

大图将被设置为特定宽度,其高度设置为“自动”。

我无法让绿色边框的 div (class="extra-content") 紧贴在大图像正下方的空间中,而红色边框的 div (class="内容”)正常流动。我尝试了 clear: 在各种元素中的多种组合并重新排序 div。

我希望这是我没有看到的简单的东西。

【问题讨论】:

  • 您是否尝试过将 img 和 content 都设置为 float:left;所以他们只是流动,然后添加额外的内容,所以它应该就在下面?但请确保您还添加了 clear:right;关于内容
  • 因为图像和内容 div 的组合宽度比容器 div 宽,浮动内容 div 只会强制它位于图像下方。没有组合 float: 和 clear: 似乎有效。

标签: css css-float


【解决方案1】:

我让它在你的小提琴中工作:

http://jsfiddle.net/BcjzK/4/

由于 div 布局的工作方式,如果它在 HTML 代码中出现在红色 div 之后,它总是会在红色 div 下方启动绿色 div,除非您将它放在封装整个左侧的父容器中。

作为修复,我制作了另一个容器 div,它可以同时容纳 img 和绿色 div,然后将该容器向左浮动。

HTML:

<div class="container">
<div class="imgContainer">
    <img src="http://hazelden.ca/sample.png" alt="Some Image" width="320" height="auto" />
    <div class="extra-content">
        Text
    </div>
</div>
<div class="content">
...

CSS:

.container {
width:700px;
border:solid 1px gray;

}

.imgContainer{

 float: left;

}
.content {
 width:460px;
 border:solid 1px red;
 margin-right:0px;
 margin-left:auto;

}
.extra-content {
 width:230px;
 border:solid 1px green;
}
img {

 border:solid 1px blue;
}
blockquote {
 border:solid 1px gray;
 width:30%;
 float:right;
}

编辑:

我注意到 imgContainer 框会强制您的内容文本稍微改变位置以适应它的存在。如果您希望内容文本的布局与之前完全相同,请使用:

.imgContainer{  
 float: left;
 height: 450px;
 overflow: visible;    
}

http://jsfiddle.net/BcjzK/5/

您甚至可以通过将imgContainer的height属性更改为430px,使图片下方的内容文本尽可能靠近侧面。

http://jsfiddle.net/BcjzK/6/

希望这会有所帮助!

【讨论】:

  • 感谢您的意见!现在唯一的问题是,随着更多内容添加到绿色 div 并且它变得更高,内容 div 中的文本在清除绿色 div 之前不会包裹在图像下方。
  • 如果您使用我发布的 jsfiddle 的第二个或第三个链接中的代码,它应该可以工作。将 imgContainer 高度设置为固定量,然后设置 overflow: visible 属性似乎可以满足您的要求。这是小提琴 6,绿色框中有一堆文本:jsfiddle.net/BcjzK/7
  • 是的,这正是我想要的。谢谢!
  • 没问题!很乐意提供帮助。
猜你喜欢
  • 2013-01-28
  • 2013-10-30
  • 1970-01-01
  • 2022-11-17
  • 2011-05-18
  • 2012-11-21
  • 1970-01-01
  • 1970-01-01
  • 2012-11-13
相关资源
最近更新 更多