在Form中使用div的疯狂行为

时间:2013-11-08 14:12:56

标签: css forms html

我是CSS +表的新手,需要一些帮助。

这是我的表格:

<form id="form" name="form" method="POST" action="contact.asp" accept-charset="utf-8" style="width:540px;">
  <div>
    <label for="name">
      <span class="requ">Name:</span>
      <input type="text" name="name" style="width:180px;">
    </label>
    <label for="email">
      <span class="requ">E-mail:</span>
      <input type="text" name="email" style="width:316px;">
    </label>
  </div>
  <div>
    <label for="message">
      <span class="requ">Message:</span>
      <textarea name="message" rows="8" style="width:518px;"></textarea>
    </label>
  </div>
  <div id="reqmsg"><strong>Important!</strong> Fields with asterisk are required!</div>
  <div id="buttons">
    <input type="submit" name="send" value="Send">
    <input type="reset" name="clear" value="Clear">
  </div>
</form>

这是CSS:

#form { padding:0; margin:0 auto; }
#form label { float:left; padding:0; margin:6px; font-family:Arial, Helvetica, sans-serif; }
#form label span { display: block; margin-left:2px; font-size:12px; font-weight: bold; color:#5C5C5C; }
#form label span.requ { background-image:url(../images/required.png); background-repeat:no-repeat; background-position:right 5px; }
#form input { border:1px solid #939393; border-radius:6px; font-size:14px; background-color:#F8F8F8; }
#form input[type="text"] { padding:4px; color:#0067CE; }
#form select { padding:3px; color:#0067CE; border:1px solid #939393; border-radius:6px; background-color:#F8F8F8; cursor:pointer; }
#form textarea { padding:4px; font:normal 14px Arial, Helvetica, sans-serif; color:#0067CE; border:1px solid #939393; border-radius:6px; background-color:#F8F8F8; }
#form input[type="submit"] { width:100px; height:28px; padding:0; margin:0 5px 0 5px; font-size:15px; font-weight:bold; color:#FFFFFF; border: 1px solid #0062C4; border-radius:6px; background-color:#00A0DD; cursor:pointer; }
#form input[type="reset"]  { width:100px; height:28px; padding:0; margin:0 5px 0 5px; font-size:15px; font-weight:bold; color:#FFFFFF; border: 1px solid #707070; border-radius:6px; background-color:#9F9F9F; cursor:pointer; }
#form #reqmsg { display: block; padding:0; margin-top:10px; font:normal 12px Arial, Helvetica, sans-serif; color:#5C5C5C; text-align:center; border:1px solid #000000; }
#form #buttons { display: block; padding:0; margin-top:10px; text-align:center; border:1px solid #000000; }

我遇到的问题是div“reqmsg”。我使用边框来检查问题,并且它使用了所有形式。我想把这个div分开,所以我可以定义一个顶部和底部边距。与“按钮”div相同。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

问题在于浮动<label>元素。您需要清除浮动,否则布局问题将持续存在。

我创建了一个JsFiddle,其中包含.clear {clear: both;}作为CSS类并将<div class="clear"></div>应用于相应区域的清算示例。

答案 1 :(得分:1)

当一个元素浮动时,它将从html的结构中删除。如果另一个元素中的每个元素都浮动,则包含元素认为它是空的并且将显示没有高度。尽管仍然显示内部的浮动元素,但它们仍然会将下一个元素推向页面的下方。这会导致没有浮动元素的第一个元素认为它从页面顶部开始。

解决方案只是在#reqmsg之前添加一个空div,如<div style="clear: both"></div>