两个50%宽度的div不适合父级

时间:2014-08-11 13:01:05

标签: html css

很抱歉,如果它与某些内容重复,我会诚实地搜索,但我仍然遇到这个小提琴中显示的问题:http://jsfiddle.net/tfvdzzee/1/

这里的代码:

HTML

<div id="wrap">
    <div id="one">1</div>
    <div id="two">2</div>
</div>

CSS

#wrap
{
    max-width: 400px;
    margin: auto;
    border: 2px solid black;
}
#one, #two
{
    width: 50%;
    background: green;
}
#two
{
    float: right;
    background: red;
}

8 个答案:

答案 0 :(得分:3)

我相信display: inline-block;是最好的答案,因为它可以防止重叠和溢出的错误,同时保留其父定义。

JsFiddle Demo

HTML

<div id="wrap">
    <div id="one">1</div><!--
 --><div id="two">2</div>
</div>

CSS

#wrap
{
    max-width: 400px;
    margin: auto;
    border: 2px solid black;
}

#one, #two
{
    width: 50%;
    background: green;
    display: inline-block;
    /* If worried about IE7 and IE6, add the two next lines */
    *display: inline;
    *zoom: 1;
}

#two
{
    background: red;
}

答案 1 :(得分:2)

Demo Fiddle

您需要 float:left #one元素,并将overflow:hidden设置为父级,以确保正确包装子项。

将CSS更改为:

#wrap
{
    max-width: 400px;
    margin: auto;
    border: 2px solid black;
    overflow:hidden; /* <---ensure the parent wraps the children */

}

#one, #two
{
    width: 50%;
    background: green;
    float:left; /* <---ensure the children display inline */
}

#two
{
    float: right;
    background: red;
}

答案 2 :(得分:1)

在CSS中添加以下样式。

 #one{float:left}

DEMO

答案 3 :(得分:1)

删除 #two 的Css属性并添加此

#one, #two
{
    width: 50%;
    background: green;
    float: left;
}

答案 4 :(得分:1)

你需要漂浮你的div。浮动后,使用clearfix类清除浮动。

CSS:

#one, #two{ float:left; }

.clearfix:after {
   visibility: hidden;
   display: block;
   font-size: 0;
   content: " ";
   clear: both;
   height: 0;
 }

HTML:

<div id="wrap" class="clearfix">
  <div id="one">1</div>
  <div id="two">2</div>
</div>

DEMO

答案 5 :(得分:0)

使用float: leftfloat: right不需要#two

#one, #two
{
    width: 50%;
    background: green;
    float: left;
}

#two
{
    background: red;
}

Fiddle示例。

答案 6 :(得分:0)

#wrap
{
    max-width: 400px;
    margin: auto;
    border: 2px solid black;
}
#wrap:after{
    clear:both;
    content:"";
    display:block;
}

#one, #two
{
    width: 50%;
    float:left;
    background: green;
}

#two
{
    background: red;
}

尝试此操作并在:after div的#wrap伪元素上使用clearfix。

DEMO

答案 7 :(得分:-2)

扩展sifu的评论并以多种方式回答问题

第一种方法(使用浮动)

#wrap
{
  max-width: 400px;
  margin: auto;
  border: 2px solid black;
}
#one,#two
{
  float:left;
  width:50%;
}

http://jsfiddle.net/tfvdzzee/7/

显示内联块方法

#wrap
{
   max-width: 400px;
   margin: auto;
   border: 2px solid black;
   font-size:0px;
}
#one,#two
{
   width:50%;
   display:inline-block;
   font-size:16px;
}

http://jsfiddle.net/tfvdzzee/8/

如果您仍在为IE7开发(不知道为什么会这样),那么这两种方法都可以使用,那么方法2就无法工作。