【问题标题】:two divs side by side, one 100% width others width depended on content两个 div 并排,一个 100% 宽度其他宽度取决于内容
【发布时间】:2016-02-27 07:44:37
【问题描述】:

我想在不使用固定宽度的情况下并排放置两个 DIV 标签。 第一个 div 扩展到其内容,第二个 div 应填充剩余空间。此外,该 div 不得位于另一个 div 的顶部,因为它们具有透明的背景图像,因此如果它们相交就会很明显。我尝试了所有我能想到的可能性,但找不到使用 DIV 标签的解决方案。

我可以使用 TABLE 来做到这一点,但是否可以使用 DIV 来做到这一点?还是这是 DIV 不能做的另一件事?

代码如下:

            #right{
              background: green;     
              width: 100%;
            }
            #left {
              margin-top: 5px; /* to test if they intersect*/
              background: red;
            }  
            #container {
               width: 800px;
            }
            <div id="container">
               <div id="left"> This div is as big as it's content</div>
               <div id="right"> rest of space</div>
            </div> 

感谢您的回复!

【问题讨论】:

  • 是的,我使用表 atm,但我想知道是否可以使用 DIV 来完成。

标签: css html


【解决方案1】:

见:http://jsfiddle.net/kGpdM/

#left {
    background: #aaa;
    float: left
}
#right {
    background: cyan;
    overflow: hidden
}

这适用于所有现代浏览器和 IE7+。

左栏将与其中的内容一样宽。右列将占用剩余空间。

这个答案背后的overflow: hidden“技巧”是explained here

【讨论】:

  • 我仍然不明白为什么这样有效,但它有效。但我们能否可靠地相信这将在未来继续发挥作用?
  • @Vincent:是的,它保证在将来可以工作,这种行为在 CSS 规范中的某个地方已经得到了很好的定义。另一种方法是使用display: table-cellhere's an example
  • 这样的坏处是溢出隐藏区有东西需要动态通过(比如下拉菜单),会被截掉。
  • @NenadP:确实如此,在这种情况下,您必须使用不同的方法,例如我在之前的评论中链接到的 display: table-cell 方法。
猜你喜欢
  • 2014-06-09
  • 1970-01-01
  • 2023-03-09
  • 2013-03-29
  • 1970-01-01
  • 2015-05-09
  • 1970-01-01
  • 2013-04-04
  • 1970-01-01
相关资源
最近更新 更多