DIV流量和边界问题

时间:2016-05-20 10:37:33

标签: html css

代码有什么问题。边界有问题。

<div id="contents" style="width: 50%; height: auto; margin: 0 auto; left: 50%; border: 2px solid #73AD21;">
    <div id="USER" style="margin: 5px">
        <p style="width: 50%; text-align:left; padding-left: 1%; float: right; font-size: large"> user :</p>
        <input id="txt_ID" type="text" style="width: 45%; float: left"/>
    </div>
    <div id="PASS" style="margin: 5px">
        <p style="width: 50%; text-align:left; padding-left: 1%; float: right; font-size: large">pass :</p>
        <input id="txt_Password" type="text" style="width: 45%; float: left"/>
    </div>
</div>

6 个答案:

答案 0 :(得分:0)

您使用float元素,因此请在主div结束前添加clear: both

<div id="contents" style="width: 50%; height: auto; margin: 0 auto; left: 50%; border: 2px solid #73AD21;">
    <div id="USER" style="margin: 5px">
        <p style="width: 50%; text-align:left; padding-left: 1%; float: right; font-size: large"> user :</p>
        <input id="txt_ID" type="text" style="width: 45%; float: left"/>
    </div>
    <div id="PASS" style="margin: 5px">
        <p style="width: 50%; text-align:left; padding-left: 1%; float: right; font-size: large">pass :</p>
        <input id="txt_Password" type="text" style="width: 45%; float: left"/>
    </div>
    <div style="clear: both"></div>
</div>

答案 1 :(得分:0)

你必须清除漂浮物。

添加以下css

#contents:after {
  content: '';
  display: table;
  clear:both;
}

答案 2 :(得分:0)

您在内部div中使用浮动,因此父级没有高度。只需将float: left;设置为contents div即可看到您的问题。

<div id="contents" style="width: 50%; height: auto; margin: 0 auto; float: left; left: 50%; border: 2px solid #73AD21;">
  <div id="USER" style="margin: 5px">
    <p style="width: 50%; text-align:left; padding-left: 1%; float: right; font-size: large"> user :</p>
    <input id="txt_ID" type="text" style="width: 45%; float: left"/>
  </div>
  <div id="PASS" style="margin: 5px">
    <p style="width: 50%; text-align:left; padding-left: 1%; float: right; font-size: large">pass :</p>
    <input id="txt_Password" type="text" style="width: 45%; float: left"/>
  </div>
</div>

您可能不应该使用inline-css而是使用外部css文件并使用clearfix来清除contents div上的浮点数。

答案 3 :(得分:0)

您可以应用#contents { float: left}或使用clear浮动技巧获取内部元素高度:

#contents {
  width: 50%;
  height: auto;
  margin: 0 auto;
  left: 50%;
  border: 2px solid #73AD21;
}
#contents:after {
  content: '';
  display: block;
  clear: both;
}
#contents > div {
  margin: 5px;
}
#contents p {
  width: 50%;
  text-align: left;
  padding-left: 1%;
  float: right;
  font-size: large;
}
#contents input {
  width: 45%;
  float: left
}
<div id="contents">
  <div id="USER">
    <p>user :</p>
    <input id="txt_ID" type="text" />
  </div>
  <div id="PASS">
    <p>pass :</p>
    <input id="txt_Password" type="text" />
  </div>
</div>

答案 4 :(得分:0)

这是因为您正在使用float - 这会使元素脱离正常流量,因为所有内容都会浮动,外部div没有高度。

改为使用display: inline-block

<div id="contents" style="width: 50%; height: auto; margin: 0 auto; left: 50%; border: 2px solid #73AD21;">
    <div id="USER" style="margin: 5px">
        <p style="width: 50%; text-align:left; padding-left: 1%; font-size: large; display: inline-block;"> user :</p>
        <input id="txt_ID" type="text" style="width: 45%; display: inline-block;"/>
    </div>
    <div id="PASS" style="margin: 5px">
        <p style="width: 50%; text-align:left; padding-left: 1%; font-size: large; display: inline-block;">pass :</p>
        <input id="txt_Password" type="text" style="width: 45%; display: inline-block;"/>
    </div>
</div>

link to fiddle

答案 5 :(得分:0)

您的父容器正由float ed子容器折叠。我建议使用clearfix类:

&#13;
&#13;
.cf:before,
.cf:after {
    content: " "; /* 1 */
    display: table; /* 2 */
}

.cf:after {
    clear: both;
}

/**
 * For IE 6/7 only
 * Include this rule to trigger hasLayout and contain floats.
 */
.cf {
    *zoom: 1;
}
&#13;
<div class="cf" id="contents" style="width: 50%; height: auto; margin: 0 auto; left: 50%; border: 2px solid #73AD21;">
    <div id="USER" style="margin: 5px">
        <p style="width: 50%; text-align:left; padding-left: 1%; float: right; font-size: large"> user :</p>
        <input id="txt_ID" type="text" style="width: 45%; float: left"/>
    </div>
    <div id="PASS" style="margin: 5px">
        <p style="width: 50%; text-align:left; padding-left: 1%; float: right; font-size: large">pass :</p>
        <input id="txt_Password" type="text" style="width: 45%; float: left"/>
    </div>
</div>
&#13;
&#13;
&#13;

Clearfix来源:http://nicolasgallagher.com/micro-clearfix-hack/

有关clearfix的信息:What is a clearfix?