webForumDet fria alternativet

Bästa sättet att designa upp formulär

HTML & CSS

5 svar · 468 visningar · startad av desdecado

Medlem sedan juli 2004206 inlägg
Frågan#1

Jag kör XHTML (trans.) och försöker vara väldigt strikt(!) hur jag använder tables på siten. Jag vet att tabeller ska användas till att visa just tabeller med data och det gör jag också.

Nu är det så att jag undrar hur ni löser problemet att layouta tex registreringssidor med mycket text och textboxar/kontroller utan att använda tabeller? Jag är såååå frestad att falla in på den mörka sidan igen och använda tabeller för dessa få sidor... =/

Jag vill helst ha alla css helt separerad ifrån xhtmlfilen, dvs i separat fil och inga styles rakt på taggarna. Detta gör så att jag måste tillverka xxx antal classer bara för dessa gigantiska "registreringssidor" (jag vill som sagt inte styla på div'arn direkt).

Hur gör ni?

Medlem sedan sep. 20021 655 inlägg
#2

Jag gissar att du är ute efter en layout i stil med

Förnamn:     |input-fält|
Efternamn:   |input-fält|
E-post:      |input-fält|

På "a list apart" finns det en artikel som heter "Practical CSS Layout Tips, Tricks & Techniques":
http://www.alistapart.com/articles/practicalcss/
Under avsnittet "FORM(s) and Function" visar de hur man kan få något liknande ovan nämnda uppställning (fast med högerjusterade namn på fälten) utan att använda en tabell.
Deras kod ser ut så här:

<form action="">
<div class="row"><span class="label">Name:</span>
<span class="formw"><input size="25" type="text"></span></div>

<div class="row"><span class="label">Age:</span>
<span class="formw"><input size="25" type="text"></span></div>

<div class="row"><span class="label">Shoe size:</span>
<span class="formw"><input size="25" type="text"></span></div>

<div class="row"><span class="label">Comments:</span>
<span class="formw"><textarea cols="25" rows="8">Go ahead - write something...</textarea></span></div>
<div class="spacer">&nbsp;</div>
</form>

Det finns en del att klaga på deras kod:
1. Det ska inte behövas något "spacer"-element (sista div-elementet). Genom att stoppa in ett sådant frångår man från principen att skilja innehåll från layout.

2. De använder <span class="label"> för att märka upp namnet på fältet, men det finns ett alldeles utmärkt label-element för det, som dessutom har lite funktionalitet eftersom man kan binda det till ett input-fält.

3. De skriver <span class="formw"><input size="25" type="text"></span>, men input-elementet är ett inline-element och behöver inte ha något container-element av det slaget.
<input size="25" type="text" class="formw"> räcker gott och väl.

4. Det avgörande för att man inte ska behöva skämmas för att använda en tabell i ditt fall är när de skriver

<div class="row">

De märker alltså tydligt upp ett div-element till en "rad", där label och input-element sedan är celler, även om de inte skriver det någonstans.
Att använda andra element än table-element för att skriva en tabell är helt fel, anser jag.

Men om man inte bryr sig om deras kod kan man titta på följande:

<style type="text/css">
form p { width: 300px; margin: 0.3em; clear: both; }
form label { float: left; }
form input { float: right; }
</style>

...

<form>

<p><label for="namn">Namn:</label>
   <input size="25" type="text" id="namn" /></p>

<p><label for="efternamn">Efternamn:</label>
   <input size="25" type="text" id="efternamn" /></p>

<p><label for="epost">E-post:</label>
   <input size="25" type="text" id="epost" /></p>

</form>

Nu talar jag inte på något sätt i HTML-koden om hur jag vill att layouten ska vara - det lämnar jag helt och hållet till CSS-koden.

Medlem sedan okt. 20005 273 inlägg
#3

Hej
martin har en snygg lösning på sin blog där han använder en definitionslista.

http://blog.visitkortet.com/blog/2004/11/01/tamja-formular/

Den kommer jag att använda nästa gång jag kör ett fomulär.

mv icaaq

Medlem sedan maj 2000252 inlägg
Medlem sedan juni 20003 076 inlägg
#5

isaaq skrev:

Den kommer jag att använda nästa gång jag kör ett fomulär.

Jag antar att du gjort ett formulär sedan den 13/11 -04, använde du martins metod?

Metoden ser ju bra ut men hur ser det ut i olika webbläsare då
de renderar formulärsfält så himla olika och koden använder
ganska många margins för att positionera dem!

Medlem sedan okt. 20005 273 inlägg
#6

Jag har använt följande faktiskt :)
http://member.webforum.nu/1029/fieldset.htm

mv icaaq

268 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
137 ms — ändringar (db)