Topic: Multi-Column Forms Best Practice |
|
|---|---|
| Author | Thread |
|
Maniac (V) Mad Scientist From: Rochester, New York, USA |
posted 07-26-2007 19:20
I work with an application that has a few hundred different complex forms. I often find myself in a situation requiring the following layout: code: <form>
<table>
<tr>
<th><label>Label 1</label></th>
<td><input type="text"/></td>
<th><label>Label 2</label></th>
<td><input type="text"/></td>
</tr>
... repeate another 20 times ...
</table>
</form>
code: <style type="text/css">
label { display: block; float: left; width: 15% }
span { display: block; float: left; width: 35%;}
span input { width: 100%; }
</style>
<form>
<div>
<label>Label 1</label>
<span><input type="text"/></span>
<label>Label 2</label>
<span><input type="text"/></span>
</div>
<div>
... repeate another 20 times ...
</div>
</form>
|
|
Paranoid (IV) Inmate From: Norway |
posted 07-26-2007 19:34
|
|
Paranoid (IV) Inmate From: Florida |
posted 07-26-2007 20:54
code: <label>Label 1 <input></label>
|
|
Maniac (V) Mad Scientist From: Rochester, New York, USA |
posted 07-26-2007 22:11
I like the fieldset idea. That makes things better but I do need to <span> element as I might have a complex widget such as code: <span><input type="text"/><input type="button" value="..."/></span>
code: <span><input type="text" id="month"/><input type="text" id="day"/><input type="text" id="year"/></span>
code: <style type="text/css">
label {
display: block;
width: 50%;
float: left;
}
</style>
<form>
<fieldset>
<label>Label 1 <input type="text"/><input type="text"/><input type="text"/></label>
<label>Label 2 <input type="text"/></label>
</fieldset>
<fieldset>
<label>Another Label 3 <input type="text"/></label>
<label>Another Label 4 <input type="text"/><input type="button" value="..."/></label>
</fieldset>
</form>
code: <style type="text/css">
label {
display: block;
width: 50%;
float: left;
}
label span {
display: block;
width: 25%;
float: left;
}
</style>
<form>
<fieldset>
<label>
<span>Label 1</span>
<input type="text"/>
<input type="text"/>
<input type="text"/>
</label>
<label>
<span>Label 2</span>
<input type="text"/>
</label>
</fieldset>
<fieldset>
<label>
<span>Another Label 3</span>
<input type="text"/>
</label>
<label>
<span>Another Label 4</span>
<input type="text"/>
<input type="button" value="..."/>
</label>
</fieldset>
</form>
|
|
Lunatic (VI) Inmate From: under the bed |
posted 07-26-2007 22:30
1) A <label> wrapped with a <th> is redundant code: <form> <fieldset> <label>Label 1 <input type="text"/><input type="text"/><input type="text"/></label> <label>Label 2 <input type="text"/></label> </fieldset> <fieldset> <label>Another Label 3 <input type="text"/></label> <label>Another Label 4 <input type="text"/><input type="button" value="..."/></label> </fieldset> </form>
code: <form> <fieldset> <legend>Heading 1</legend> <label for="input1">Label 1</label><input id="input1" type="text"/> <label for="input2">Label 2</label><input id="input2" type="text"/> <label for="input3">Label 3</label><input id="input3" type="text"/> <label for="input4">Label 4</label><input id="input4" type="text"/> </fieldset> <fieldset> <legend>Heading 2</legend> <label for="input5">Another Label 5</label><input id="input5 type="text"/> <label for="input6">Another Label 6</label><input id="input6 type="text"/> <input type="button" value="..."/> </fieldset> </form>
|
|
Paranoid (IV) Inmate From: Norway |
posted 07-26-2007 23:25
The SPAN is not necessary either. You can easily handle multiple inputs using CSS to move the inputs away and position the label in the top left part of a group of inputs: code: <?xml version='1.0' encoding='iso-8859-1'?>
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' >
<head>
<title>te | Mathieu 'P01' HENRI | 20070726</title>
<style type='text/css'>
form
{
background:pink;
padding:1em;
margin:1em;
}
fieldset
{
position:relative;
background:orange;
padding:1.5em 0 0 33%;
margin:1em 0;
border:0;
}
fieldset legend
{
display:block;
font-weight:bold;
background:red;
position:absolute;
left:0;
right:0;
top:0;
width:100%;
height:1.5em;
padding:0;
}
fieldset label
{
position:relative;
}
br
{
clear:both;
}
fieldset label
{
position:absolute;
left:0;
right:70%;
display:block;
background:yellow;
}
</style>
</head>
<body>
<form action=''>
<fieldset>
<legend>part 1</legend>
<label for='input1'>input1's label</label>
<textarea id='input1'>
ata
tetete
dgsd!
</textarea>
<br/>
<label for='input3'>input3's label</label>
<input id='input3' type='text' />
<input id='input4' type='text' />
<input id='input5' type='text' />
</fieldset>
<fieldset>
<legend>part 2</legend>
<label for='input6'>input6's label</label>
<input id='input6' type='text' />
<input id='input7' type='text' />
<input id='input8' type='text' />
<input id='input9' type='checkbox' />
<br/>
<label for='input10'>input10's label</label>
<input id='input10' type='radio' />
<input id='input10' type='radio' />
<input id='input10' type='radio' />
<input id='input10' type='radio' />
<br/>
<label for='input11'>select11's label</label>
<select id='input11' height='3'>
<option>opt 1<option>
<option>opt 2<option>
<option>opt 3<option>
<option>opt 4<option>
<option>opt 5<option>
</select>
</fieldset>
</form>
</body>
</html> |
|
Paranoid (IV) Inmate From: Norway |
posted 07-26-2007 23:32
|