Form layout styling with CSS
You can style forms using CSS and definition lists instead of tables. This has only been tested in IE6 and Firefox. As a basis I define the form in HTML as follows:
<fieldset class="form"> <legend>Add Contact</legend> <dl> <dt>Forename: </dt> <dd><input type="text" name="forename" id="forename" /></dd> <dt>Surname: </dt> <dd><input type="text" name="surname" id="surname" /></dd> <dt>Email: </dt> <dd><input type="text" name="email" id="email" /></dd> <dt></dt> <dd><input type="submit" value="Add" /></dd> </dl> </fieldset>
And the CSS:
fieldset.form {
width: 95%;
border: 1px dotted #ccc;
padding: 12px;
}
fieldset.form legend {
font-weight: bold;
background: #fff;
}
fieldset.form dl {
float: left;
clear: both;
}
fieldset.form dl dt {
clear: left;
float: left;
width: 110px;
margin: .5em 0;
text-align: right;
}
fieldset.form dl dd {
margin: .5em 0;
float: left;
padding: 0 0 0 4px;
}
* html fieldset.form dl dd {
float: none;
margin: .5em 0 0 0;
}
fieldset.form dl dt is the definition for the label accompanying an input control. It has a fixed width and is right-aligned. fieldset.form dl dd is the input control next to the label. The * html fieldset.form dl dd is used to fix a few bugs in IE - without it, the input controls are not next to the labels, and the seperation between items is greater than it should be.
Sample:
Tags: Web Developer Blog, CSS
Comments