Previous Section  < Day Day Up >  Next Section

Recipe 5.6 Designing a Web Form Without Tables

Problem

You want to include form fields and labels on rows without using an HTML table, thereby ensuring a pure CSS-enabled layout without using any markup for presentation.

Solution

First use labels in conjunction with the form fields in the markup (see Figure 5-10):

<form action="login.php" method="post">

 <label for="uname">Username</label>

 <input type="text" name="uname" id="uname" value="" /><br />

 <label for="pname">Password</label>

 <input type="text" name="uname" id="uname" value="" /><br />

 <label for="pname">Remember you?</label> 

 <input type="checkbox" name="recall" id="recall"  

class="checkbox" /><br />

 <input type="submit" name="Submit" value="Submit" 

class="buttonSubmit" />

</form>

Figure 5-10. The form without styles applied
figs/csscb_0510.gif


Then set the display and label properties for the label elements to block, float the label elements to the left, and justify the text on the right (see Figure 5-11):

input {

 display: block;

 width: 175px;

 float: left;

 margin-bottom: 10px;

}

label {

 display: block;

 text-align: right;

 float: left;

 width: 75px;

 padding-right: 20px;

}

.checkbox {

 width: 1em;

}

br {

 clear: left;

} 

.buttonSubmit {

 width: 75px;

 margin-left: 95px;

}

Figure 5-11. The design of the form laid out with styles
figs/csscb_0511.gif


Discussion

The input and label elements are set to display: block, which displays them as block-level elements. This makes it possible to set the widths for the text in the label. Instead of resting on top of the input element, the labels are floated to the left. And because all labels have the same width, the look is uniform throughout the form.

The br tag creates a break between the label and form element sets, and clears the float from previous elements. This prevents the other elements (those that appear after the input field matched to the label) from floating as well.

See Also

The HTML 4.1 specification for the label element at http://www.w3.org/TR/html401/interact/forms.html#edef-LABEL; the CSS 2.1 specification for the float property at http://www.w3.org/TR/CSS21/visuren.html#propdef-float; the CSS 2.1 specification for the clear property at http://www.w3.org/TR/CSS21/visuren.html#propdef-clear.

    Previous Section  < Day Day Up >  Next Section