【发布时间】:2013-04-20 09:58:52
【问题描述】:
当一个 DIV 上使用 CSS 浮动时,其他没有浮动的 DIV 会继续占用浮动 DIV 的空间。虽然我确信这是故意的,但我不知道如何达到我想要的效果。请考虑这个例子:
<html>
<div style="width:400px">
<div style="width:150px;float:right;border:thin black solid">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam.</div>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
<div style="background-color:red;border:thin black solid">Some sample text</div>
Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
</div>
</html>
如果您将此 HTML 粘贴到浏览器中(或检查其jsfiddle),您会注意到“一些示例文本”是红色的,并且红色背景一直延伸到浮动 DIV。虽然我确信有一种方法可以掩盖我不想要的红色背景部分,但它仍然会使边框被裁剪掉并隐藏在 DIV 下方。理想情况下,我希望背景颜色和边框只占据有效的文本空间,而不是在浮动的 DIV 下方蔓延。这种效果可能吗?
请注意,我使用的 float 属性不是作为列的替代品,而是作为一个让文本围绕它流动的块。到目前为止,所提出的解决方案都没有考虑到这一点。为了清楚起见,这里有一些图片。
这是我得到的:
这就是我想要的:
您会注意到,在这两个示例中,当文本到达底部时,最终文本会环绕浮动部分。我的第二个示例可以通过直接指定包含“一些示例文本”的 div 的宽度来实现。我不想指定宽度。这似乎是多余的,因为我想要与它周围的文本相同的宽度。但也许这是不可能的?
【问题讨论】:
-
我想奖励明确指出不可能的答案,因为这个答案(结束了辩论)没有足够的关注,并且获得最高票数的回应......没有回答问题......虽然它提供了有价值的信息
-
@SamuelRossille:我不确定我在这里缺少什么(上面的图片不再显示所需的内容)。我在接受的答案(目前是柯克沃尔的答案)下发布了一些小提琴链接,这似乎表明 cletus 的答案是正确的(文本仍然包裹在正确的浮动下)。可能在旧版浏览器中存在不同的行为(此主题已有三年多的历史了)。
-
@ScottS,是的,对不起。那是在 SO 没有自己的内部图像托管解决方案的糟糕时代。我查看是否可以恢复这些图像,但无济于事。
-
@KirkWoll:这是可以理解的。你能在你的回答下评论我的 cmets 吗?我不知道您想要实现什么(希望您还记得很久以前),但似乎 cletus 的答案实际上就是您所寻求的(至少现代浏览器解释它)。但我可能会在这里遗漏一些东西。
标签: html css layout positioning css-float