在浮动div周围包裹全宽div

时间:2011-04-26 12:32:14

标签: css xhtml

我正在尝试使用浮动div做一些事情,我认为这是最简单的,但我似乎完全无法达到我想要的效果。我希望有一个固定宽度浮动div并且它周围的所有div尽可能水平扩展,而不会重叠浮动div。也就是说,在浮动div旁边,它们应该填充它旁边的可用空间,在浮动div下面,它们应该占据容器的整个宽度。

我已经尝试了我能想到的positiondisplaywidthright属性的所有组合,但没有任何东西能给我我想要的东西。我认为我需要将.fill div设置为display: inline-block;,然后使用widthright属性管理它们的宽度,但我尝试的任何内容都不会给我可用宽度。

请注意,我事先不知道哪个div将在浮动div旁边,因为所有div的高度都是可变的,因此我无法为.fill div设置显式宽度。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html version="-//W3C//DTD XHTML 1.1//EN" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:s
chemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd">
<head>
  <title>float test</title>
  <style type="text/css">
    html, body, div {
      margin: 0;
      border: 0;
      padding: 0;
    }
    #container {
      position: relative;
      width: 100%;
      overflow: hidden;
    }
    #right {
      width: 20em;
      height: 40em;
      margin: 0 0 0 1em;
      float: right;
      background-color: #88f;
      opacity: .5;
    }
    .fill {
      height: 3em;
      margin: 1em;
      background-color: #f88;
      opacity: .5;
    }
  </style>
</head>
<body>
  <div id="container">
    <div id="right"></div>
    <div id="left">
      <div class="fill"></div><div class="fill"></div><div class="fill"></div><div class="fill"></div>
      <div class="fill"></div><div class="fill"></div><div class="fill"></div><div class="fill"></div>
      <div class="fill"></div><div class="fill"></div><div class="fill"></div><div class="fill"></div>
      <div class="fill"></div><div class="fill"></div><div class="fill"></div><div class="fill"></div>
   </div>
  </div>
</body>
</html>

1 个答案:

答案 0 :(得分:3)

overflow: hidden;添加到.fill