【问题标题】:3 divs, side by side, center one horizontally aligned, other occupying remaining space and NOT behind center div3 个 div,并排,居中 1 个水平对齐,其他占据剩余空间,不在居中 div 后面
【发布时间】:2013-09-29 19:30:05
【问题描述】:

我一直在寻找论坛,但找不到类似的问题。在我看来,一个简单的overflow:hidden 可以解决这个问题,但它不起作用......

我在这里创建了一个示例: http://www.estrelasustentavel.pt/demo

所以,它希望让“边”divs(左右)占据中心 div 留下的所有空间(水平对齐)。中心 div 的大小可以有一个固定的宽度,但最好不要....

问题是我不希望侧面divs 留在中心 div 后面,因为我将对这些图像进行“过度”操作以具有一点透明度。并且背景图像(森林)应该是可见的,所以边 divs 不应该占据中心 div 后面的任何空间。

【问题讨论】:

标签: css html


【解决方案1】:

您可以使用 CSS 表格布局来实现。

在这个演示中,第二个 div 恰好占据了他需要的空间,而第一个和第三个 div 占据了其余部分。

也可以通过display: flex实现,不过目前CSS表格布局对浏览器支持更好(IE8+)

Working Fiddle

HTML:

<div class="Row">
    <div class="Stretch">First</div>
    <div class="Content">second will always occupy as much as he can</div>
    <div class="Stretch">Third</div>
</div>

CSS:

.Row
{
    width: 100%;
    display: table;
    border-spacing: 5px;
}

.Row > div
{
    display: table-cell;
    background-color: #e5b9b9;
}
.Content
{
    white-space: nowrap;
}
.Stretch
{
    width: 50%;
}

在解决方案中,我在第二个 div 上使用 nowarp, 因此,如果您有很多需要分行的文本,请添加&lt;/br&gt; 标签。

【讨论】:

  • OK avrahamcool,您的解决方案看起来不错。我将我的示例更新为您的代码。但是,我必须对中心 DIV 内的 UL 应用固定宽度才能在该 DIV 上具有适当的宽度。 “nowrap”属性的目的是什么?似乎没有任何效果......关于如何不强制宽度使 DIV 元素居中的任何建议?
  • 你能把 HTML 和 CSS 的那部分贴在小提琴里吗?它会更容易玩,并为您找到一个好的解决方案。
  • 当然!感谢您的关注!请注意,如果删除 UL 的宽度,则单元格会丢失其格式...jsfiddle.net/eQwCn/13
  • 使用inline-block 而不是float 来表示li。另外:从ulli 中删除默认填充 - 看看这个Fiddle
  • 好的,avrahamcool。完美解决问题。非常感谢您的帮助。
猜你喜欢
  • 2017-06-29
  • 1970-01-01
  • 1970-01-01
  • 2016-09-14
  • 2017-08-30
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 2016-09-15
相关资源
最近更新 更多