为什么我的两列形式不能正确排列?

时间:2013-12-15 13:28:31

标签: html css html5 css3

我正在学习一些css并希望制作一个两列形式,没有任何表格标签等。 这就是我所拥有的(来自CSS Cookbook 3ed版的代码)。

JSfiddle HERE...

HTML code:

<div class="container">
        <form id="regform" name="regform" method="post" action="/regform.php">
            <div id="register">
                <h4>Register</h4>
                <label for="fmlogin">Login</label>
                <input type="text" name="fmlogin" id="fmlogin" /> 
                <label for="fmemail">Email Address</label>
                <input type="text" name="fmemail" id="fmemail" /> 
                <label for="fmemail2">Confirm Address</label>
                <input type="text" name="fmemail2" id="fmemail2" /> 
                <label for="fmpswd">Password</label>
                <input type="password" name="fmpswd" id="fmpswd" /> 
                <label for="fmpswd2">Confirm Password</label>
                <input type="password" name="fmpswd2" id="fmpswd2" />
            </div>
            <div id="contactinfo">
                <h4>Contact Information</h4>
                <label for="fmfname">First Name</label>
                <input type="text" name="fmfname" id="fmfname" />
                <label for="fmlname">Last Name</label>
                <input type="text" name="fmlname" id="fmlname" />
                <label for="fmaddy1">Address 1</label>
                <input type="text" name="fmaddy1" id="fmaddy1" />
                <label for="fmaddy2">Address 2</label>
                <input type="text" name="fmaddy2" id="fmaddy2" />
                <label for="fmcity">City</label>
                <input type="text" name="fmcity" id="fmcity" />
                <label for="fmstate">State or Province</label>
                <input type="text" name="fmstate" id="fmstate" />
                <label for="fmzip">Zip</label>
                <input type="text" name="fmzip" id="fmzip" size="5" />
                <label for="fmcountry">Country</label>
                <input type="text" name="fmcountry" id="fmcountry" />
                <input type="submit" name="submit" value="send" class="submit" />
            </div>
        </form>
    </div>

CSS代码:

label {
    margin-top: .33em;
    display: block;
}

input {
    display: block;
    width: 250px; 
}

#register {
    float: left; 
}

#contactinfo {
    padding-left: 275px; 
}

4 个答案:

答案 0 :(得分:2)

因为你浮动一个div而不是另一个div。

通过一些简单的CSS更改,它将起作用(只要h4不跨越多行):

#register {
    float: left;
    width: 275px;
}

#contactinfo {
    float: left;
}

请参阅updated fiddle

答案 1 :(得分:0)

以下是我的调试方法(除了我使用Firebug或其他Inspect / devtools):http://jsfiddle.net/PhilippeVay/yuxTA/2/

正如@Arjan在回答中所述,这是由于浮动及其影响 取消注释不会修改布局的解决方案的最后一个CSS声明。如果您想要一个垂直边距,请同时将margin-top添加到两列或padding-top

答案 2 :(得分:0)

另一种选择是从h4移除边距(尽管如其他答案所述,浮动[或类似]两列更有意义。)

h4 {margin: 0;}

答案 3 :(得分:0)

你必须在容器中浮动所有div

#register {
float: left; 

}

#contactinfo {
float:left;
margin-left:30px;  /*increase or decrease if you like*/
}