Stilizarea formularelor folosind CSS
9 SepDeoarece am observat că sunt mulţi ce nu ştiu să facă nişte formulare doar cu CSS, fără a folosi tabele, m-am decis să fac un mic tutorial despre acest subiect.
Un formular complet are următoarea sintaxă:
<form action="form.php" method="post"> <fieldset> <label>User name:</label> <input id="username" name="username" type="text" /> <label>Password:</label>< input type="password" name="password"/> <button>Login</button> </fieldset> </form>
Rezultatul îl poţi vedea AICI.
Desigur, arată urât, dar asta vrem să rezolvăm, nu? Ce putem face?
1. Formatare de bază
Cu input-box-urile pe un rând, iar label-urile pe alt rând, reprezintă cea mai simplă cale de formatare a formularelor. Astfel, în CSS adăugăm:
label, button {display:block}
iar box-urile vor fi pe un alt rând, indiferent dacă sunt input, textarea sau select. De asemenea, butonul de submit trece pe o nouă linie.
Rezultatul îl poţi vedea AICI.
2. Formatare avansată
Problema poate apărea însă în momentul când vrei să pui toate elementele pe acelaşi rând (text : input box). Metoda folosită de mine, inspirată dintr-o carte Sitepoint, foloseşte definition list (DL) pentru o formatare după bunul meu plac.
Astfel, sintaxa, uşor modificată, devine:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <form action="form.php" method="post"> <dl> <dd> <label>User name:</label> <input id="username" name="username" type="text" /> </dd> <dd> <label>Password:</label> <input name="password" type="password" /> </dd> </dl> <button>Login</button> </form> |
la fiecare element din listă (DD), adăugăm
dd { width:100%; float:left; clear:left; }
iar fiecare label capătă următorul stil:
label { width:100px; /* sau oricât consideri că este necesar */ float:left; }
Rezultatul final îl poţi vedea AICI.
Desigur, este un formular rudimentar, cu numai două câmpuri. Adevărata utilitate a metodei descrise se vede în momentul când formularul are 10-20 câmpuri
Succes!

[...] a scris acum cateva zile un articol foarte bun despre stilizarea formularelor fara a folosi tabele, ci folosind definition lists. Pune un [...]
Ca o completare la articol: tagurile “label” sunt folosite pentru a asocia bucata de text din stanga cu inputul din dreapta. Ele sunt legate prin atributul “for” al tagului label, care trebuie sa fie acelasi cu id-ul inputului. Adica asa:
[label for="nume"]Numele dvs:[/label][input type="text" name="nume" id="nume" /]