You can lay out your forms without table. In the markup used to create your form you should wrap each row in a <p> tag>. The next test file shows this:
File test.html
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”
“https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<html xmlns=”https://www.w3.org/1999/xhtml” lang=”en-US”>
<head>
<title>How to lay out a two-column form with CSS</title>
<meta http-equiv=”content-type” content=”text/html; charset=utf-8″ />
<link rel=”stylesheet” type=”text/css” href=”test.css” />
</head>
<body>
<form method=”post” action=”test2.html”>
<h1>User registration</h1>
<p>
<label for=”fullname”>Name</label>
<input type=”text” name=”fullname” id=”fullname” />
</p>
<p>
<label for=”company”>Company</label>
<input type=”text” name=”company” id=”company” />
</p>
<p>
<label for=”purpose”>Contact purpose</label>
<select name=”purpose” id=”purpose”>
<option value=”Feedback”>Feedback</option>
<option value=”Technical Support”>Technical Support</option>
<option value=”Other”>Other</option></select>
</p>
<p>
<label for=”subject”>Subject</label>
<input type=”text” name=”subject” id=”subject” />
</p>
<p>
<label for=”message”>Message</label>
<textarea name=”message” id=”message” cols=”30″ rows=”4″ ></textarea>
</p>
<p><input type=”submit” name=”btnSubmit” id=”btnSubmit” value=”Submit” class=”btn” /></p>
</form>
</body>
</html>
You should use the next file for your test:
File test.css
h1 {
font: 1.2em Arial, Helvetica, sans-serif;
}
input.txt {
color: #00008B;
background-color: #FFFFCC;
border: 1px inset #FFCC00;
width: 200px;
}
input.btn {
color: #00008B;
background-color: #FFFFCC;
border: 1px outset #FFCC00;
}
form p {
clear: left;
margin: 0;
padding: 0;
padding-top: 5px;
}
form p label {
float: left;
width: 30%;
font: bold 0.9em Arial, Helvetica, sans-serif;
}
In the code above the <label> tag is used to address our label. Then it floats left and it gives a width value. As float takes an element out of the document flow, a clear property with the value left should be given to the paragraphs, to ensure that each paragraph starts below the <label> in the preceding paragraph. A padding-top value is given to the paragraphs, in order to space out the rows.
The next picture shows the result: