Experimental forms are quite a challenge with CSS. In this case, I've chosen to use an Italian postal order as a template. The markup is as follows:
<div id="bollettino"> <h2><span class="logo">Banco<span>Posta</span></span> CONTI CORRENTI POSTALI - Ricevuta di versamento</h2> <form action="#" method="post"> <div id="ccn"> <label>sul C/C n.</label> <table summary="Numero di conto corrente: riempire i campi con i caratteri necessari" id="numerocc1"> <tr> <td><input type="text" name="char1" id="char1" size="2" /></td> <td><input type="text" name="char2" id="char2" size="2" /></td> <td><input type="text" name="char3" id="char3" size="2" /></td> <td><input type="text" name="char4" id="char4" size="2" /></td> <td><input type="text" name="char5" id="char5" size="2" /></td> <td><input type="text" name="char6" id="char6" size="2" /></td> <td><input type="text" name="char7" id="char7" size="2" /></td> <td><input type="text" name="char8" id="char8" size="2" /></td> </tr> </table> </div> <div id="euro"> <label>di Euro</label> <table summary="Importo da pagare: riempire i campi con le cifre necessarie" id="euro1"> <tr> <td><input type="text" name="cifra1" id="cifra1" size="2" /></td> <td><input type="text" name="cifra2" id="cifra2" size="2" /></td> <td><input type="text" name="cifra3" id="cifra3" size="2" /></td> <td><input type="text" name="cifra4" id="cifra4" size="2" /></td> <td><input type="text" name="cifra5" id="cifra5" size="2" /></td> <td><input type="text" name="cifra6" id="cifra6" size="2" /></td> <td><input type="text" name="cifra7" id="cifra7" size="2" /></td> <td><input type="text" name="cifra8" id="cifra8" size="2" /></td> <td><input type="text" name="cifra9" id="cifra9" size="2" /></td> <td><input type="text" name="cifra10" id="cifra10" size="2" /></td> </tr> </table> </div> <div id="importo"> <label for="importolettere">IMPORTO IN LETTERE</label> <input type="text" name="importolettere" id="importolettere" /> </div> <div id="intestato"> <label for="intestatoa">INTESTATO A</label> <input type="text" name="intestatoa" id="intestatoa" /> </div> <div id="causa"> <label for="causale">CAUSALE</label> <input type="text" name="causale" id="causale" /> </div> <p id="bollo">BOLLO DELL'UFFICIO POSTALE</p> <div id="eseguito"> <label for="eseguitoda">ESEGUITO DA</label> <input type="text" name="eseguitoda" id="eseguitoda" /> </div> <div id="via"> <label for="via-piazza">VIA - PIAZZA</label> <input type="text" name="via-piazza" id="via-piazza" /> </div> <div id="caps"> <label for="cap">CAP</label> <input type="text" name="cap" id="cap" /> <label for="localita">LOCALITÀ</label> <input type="text" name="localita" id="localita" /> </div> </form> </div>
The CSS code is the following:
/* General styles */ body { margin: 2em 0; padding: 0; background: #fff; color: #000; font-family: Arial, Helvetica, sans-serif; } #bollettino { font-size: 76%; margin: 0 auto; width: 500px; padding-left: 1em; border-right: 1px solid #000; } /* Title */ h2 { margin: 0; font-size: 1em; font-weight: normal; border-bottom: 1px solid; } span.logo { float: right; margin: 0; padding-right: 1em; } span.logo span { font-weight: bold; } /* Form styles */ input { border: 1px solid #c00; vertical-align: 0; } label { font-weight: bold; vertical-align: 5px; } table { display: inline; } td, td input { width: 18px; height: 22px; } #ccn, #euro, #importo, #intestato, #causa, #eseguito, #via, #caps { padding-top: 0.5em; } #importo label, #intestato label, #eseguito label, #via label, #caps label { vertical-align: -4px; } #euro1 { margin-left: 1.1em; } #importo input, #intestato input, #eseguito input, #via input, #caps input { border-width: 0 0 1px 0; border-style: dotted; border-color: #000; } #causa { margin-top: 0.8em; margin-right: 1em; border: 1px solid #000; padding-bottom: 2em; } #causa input { border-width: 0 0 1px 0; border-style: dotted; border-color: #000; display: block; width: 100%; } #causa label { background: #fff; padding: 3px 3px 3px 0.3em; position: relative; top: -15px; left: 3px; } #bollo { margin: 0 1em 0 0; padding-top: 100px; text-align: right; } #cap { margin-right: 0.2em; }
Internet Explorer needs the following additional code:
<!--[if IE]> <style type="text/css"> #importo label, #intestato label, #eseguito label, #via label, #caps label {vertical-align: -3px;} #causa>input {border-right: 1px solid; position: relative; width: 99.5%;} </style> <![endif]-->
Safari and Opera need a couple of JavaScript lines:
window.onload = function () { var inputs = document.getElementsByTagName("input"); for (var i=0; i<inputs.length; i++) { if(inputs[i].getAttribute("id") == "causale") { if(navigator.userAgent.indexOf("Safari") != -1) { inputs[i].style.width = "99.5%"; } else if(navigator.userAgent.indexOf("Opera") != -1) { inputs[i].style.width = "483px"; } } } };
You can see the final result here: