1. Labels verwenden
Sie benötigen keine Labels, damit Ihr Formular funktioniert, aber wie ein Leser von CSS-Tricks einmal sagte, ist es ein Verbrechen gegen die Barrierefreiheit, sie nicht zu verwenden. Labels geben an, wofür das Eingabefeld bestimmt ist, und verbinden sie miteinander. Die Verwendung des <label>-Tags ist nicht nur semantisch korrekt, sondern bietet Ihnen auch die Möglichkeit, sie mit CSS einzigartig zu gestalten.
2. Labels spalten
So erzielen Sie diese tabellenähnliche Struktur in Formularen, ohne tatsächlich eine Tabelle verwenden zu müssen. Legen Sie einfach eine feste Breite fest, spalten Sie sie nach links, richten Sie den Text rechts aus und geben Sie ihr einen kleinen rechten Rand. Wunderschön.
label {
float: left;
text-align: right;
margin-right: 15px;
width: 100px;
}

3. Achten Sie darauf, Ihre Standardstile nicht zu ruinieren
Viele Browser haben standardmäßig Stile für Eingabeschaltflächen. Dies sorgt für eine schöne, konsistente Benutzererfahrung. Wenn Sie also davon abweichen, stellen Sie sicher, dass Sie einen guten Grund dafür haben. Eine gängige Methode, dies zu untergraben, ist die Verwendung einer CSS-Reset-Technik, die etwas wie folgt enthält:
* {
border: none;
}
Das kann gut sein, da es unerwünschte Rahmen verhindert, die um unerwünschte Objekte erscheinen könnten. Es kann jedoch auch die Standardstile für Eingabeschaltflächen in Firefox beeinträchtigen. Einige Browser sind widerstandsfähiger und manche sind schwer zu ändern, selbst wenn Sie möchten (Safari).
4. Die :focus Pseudoklasse verwenden
Sie können Ihren Eingabefeldern und Textbereichen Stile zuweisen, die nur dann wirksam werden, wenn ein Benutzer in diesen Bereich geklickt hat, und zwar mit der :focus Pseudoklasse. Sie könnten zum Beispiel die Rahmenfarbe dieser Elemente ändern, wie hier:
textarea:focus, input:focus {
border: 2px solid #900;
}
Die meisten Browser unterstützen sie, also können Sie sie auch gleich verwenden. Denken Sie an Forward-Enhancement.

5. Mit Hinweisen vorbelegen, aber diese dann löschen
Es kann nützlich sein, Ihre Eingabefelder und Textbereiche mit kleinen Hinweisen oder Erinnerungen vorab zu befüllen. Wenn Sie beispielsweise ein allgemeines Kontaktformular und einen Textbereich mit der Beschriftung "Nachricht:" haben, möchten Sie diesen Textbereich möglicherweise mit etwas wie "Ihre positiven Kommentare oder konstruktive Kritik hier." vorab befüllen. Oder Sie haben ein Namensfeld, das mit "Vorname Mittelname Nachname" vorab befüllt ist, um Benutzer an die Reihenfolge zu erinnern, in der sie ihren Namen eingeben sollen. Dies können Sie einfach tun, indem Sie Text innerhalb Ihrer Tags einfügen.
<textarea cols="20" name="Message" rows="20">Hint goes here.</textarea>
Wenn Sie hier aufhören, muss der Benutzer jedoch manuell alles löschen, was Sie eingegeben haben, und das ist nicht gut. Sie können ein kleines Javascript hinzufügen, um diesen Hinweis zu löschen, wenn der Benutzer in das Feld klickt. Dieses kleine Code-Snippet erlaubt auch nur, dass dies einmal geschieht. Wenn der Benutzer wegklickt und dann wieder hineinklickt, verliert er nicht, was er eingegeben hat.
<textarea name="Message" rows="20" cols="20" onfocus="this.value=''; this.onfocus=null;">Hint goes here.</textarea>
6. Mit Web Form Factory arbeiten lassen
Formulare sind nicht nur dazu da, gut auszusehen, sie müssen auch funktionieren. Ein Webformular kann zwei Hauptfunktionen haben: die Schnittstelle zu einer Datenbank oder die Generierung einer E-Mail. Web Form Factory ist ein Open-Source-Dienst, der Ihr Formular nimmt und den benötigten Code generiert, um es so funktionieren zu lassen, wie es soll.

7. Eine vorgefertigte Lösung in Betracht ziehen
Webformulare sind ein Gebiet, das immer wieder und wieder bearbeitet wurde. Dies ist ein Bereich, in dem "das Rad nicht neu erfinden" vielleicht die beste Entscheidung ist, die Sie treffen können.
Ich denke, jeder sollte sich Wufoo ansehen. Wufoo ist einfach der absolut großartigste Formularersteller aller Zeiten. Die Preise reichen von kostenlos bis angemessen, der Erstellungswizzard ist erstaunlich, und die Implementierung der Formulare auf Ihrer Website könnte nicht einfacher sein.

Ausgezeichneter Beitrag, vielen Dank.
Wenn Sie ein WordPress-Benutzer sind, würde ich cforms empfehlen, das es Ihnen ermöglicht, mehr als ein Formular zu erstellen und sie mit verschiedenen Themes zu gestalten.
Zur Info. Der :focus-Trick funktioniert bei IE nicht ohne weiteres. Sie können das JS auf dieser Seite verwenden, um dies zu ermöglichen.
http://www.htmldog.com/articles/suckerfish/focus/
Danke, Sanjay, das ist eine großartige Lösung, um die mangelnde Unterstützung von IE für die focus-Pseudoklasse zu ermöglichen.
Für Dummies wie mich habe ich nach etwas Experimentieren einige Markup-Codes für den zweiten Punkt erstellt. Ich bin mir nicht sicher, ob es der beste Weg ist, aber er ist semantisch, denke ich!
<form>
<ul>
<li><label for=”input1″> <input type=”text” id=”input1″> </li>
…
</ul>
</form>
CSS-Zauberer, bitte lasst mich wissen, ob es einen besseren Weg gibt, das zu tun! Mit entsprechender Formatierung für die unsignierte Liste natürlich und dem Label-Stil wie oben.
Hallo Paul,
Ja, das ist die Essenz.
Hier ist ein einfacher Formular-Markup
Gibt es gute Ressourcen für gut aussehende (benutzerdefinierte) Formulare in Safari? Ich verliere mehr Haare über die Formatierung von Formularen in Safari.
Ich fürchte, ich habe keine guten Tipps speziell für Safari. Safari steht in gewisser Weise für sich, was die Fokuszustände, Schaltflächen, Dropdowns und dergleichen angeht. Das kann für einen Designer frustrierend sein, wenn man wirklich einen Plan dafür hat und Schwierigkeiten hat, Safari zu bekämpfen, aber im Allgemeinen finde ich die Standardeinstellungen in Ordnung.
Chris, bezüglich Ihres Beispiels für einfache Markup-Beispiele. Der Wert des Attributs *for* muss mit dem Attribut *id* innerhalb des Steuerelements identisch sein. Daher
<input id="Name" type="text" name="Name" />Ich möchte das erwähnen, um Fehler bei Ihren Lesern zu vermeiden.
Thomas
Vielen Dank für diese ausgezeichneten Tipps.
Das ist eine tolle Seite.
Mit freundlichen Grüßen.
Die Wufoo-Formular-Website war nicht schlecht. Ich habe sie für eine Website verwendet, die ich gerade entwickle :D
Arg! Bitte tun Sie das onfocus clear value nicht.
Warum? Nun, wenn ein Benutzer anfängt, etwas in das Eingabefeld zu tippen, dann Alt+Tab oder das Fenster anderweitig verlässt (z. B. um eine URL zu kopieren, um eine Referenz zu zitieren usw.) und dann wieder zurück zu Alt+Tab wechselt, wird ein onblur-Ereignis ausgelöst (wenn Sie weg-tabben) und ein onfocus-Ereignis (wenn Sie zurück-tabben), das das tippen löscht.
Eine bessere Methode ist zu prüfen, ob der aktuelle Wert == dem Standardwert ist, bevor Sie löschen. Dazu müssen Sie beim Laden der Seite durch Ihre Eingaben gehen und einen Wert prüfen, diesen als input.defaultValue speichern und dann etwas wie dies tun:
onfocus=”if(this.defaultValue==this.value) this.value=”;”
Ich habe ewig versucht, das mit dem Fokus von Formularelementen herauszufinden! Ich kann nicht glauben, dass ich nicht an :focus gedacht habe. Tolle Idee.
@Aaron: Das wird es tatsächlich nicht. Dieses Szenario wird mit dem zweiten dort gezeigten Codeblock behandelt.
onfocus="this.value=''; this.onfocus=null;">Wenn es nur onfocus=”this.value=”; wäre, würde es jedes Mal gelöscht, aber auf diese Weise wird es nicht gelöscht, sobald Sie mit der Eingabe von Text beginnen. Es sei denn, ich verstehe Sie falsch?
Ich wünschte, die Leute würden aufhören zu sagen, dass "die meisten Browser" die :focus Pseudoklasse unterstützen – das vermittelt den Lernenden einen falschen Eindruck.
:focus ist cool, aber verlassen Sie sich nicht darauf, da IE6 (trotz dem, was Microsoft sagt, immer noch der größte Marktanteil) es NICHT unterstützt!
Der Grund, warum ich sagte "die meisten Browser unterstützen es, also können Sie es auch gleich verwenden", ist genau das. Die :focus Pseudoklasse ist gut für Benutzerfreundlichkeit und Stil, aber sie beeinträchtigt nicht die Funktionalität. Nutzen Sie sie also, und Benutzer der meisten Browser werden davon profitieren, während Benutzer von IE 6 immer noch ein voll funktionsfähiges Formular haben werden.
Tatsächlich könnte es sogar Leute ermutigen, zu lernen, da sie bemerken könnten, wie es in IE nicht funktioniert und nach einer Lösung (Javascript) suchen.
Es ist auch erwähnenswert, dass Sie vermeiden sollten, die JavaScript-Funktionalität über Inline-Event-Handler hinzuzufügen – das vermischt Inhalt und Verhalten. Schauen Sie sich die YUI YAHOO.Util.Event.addEventListener Methode an, ähnliche Methoden in anderen Bibliotheken oder die Kern-Browserfunktionen addEventListener und attachEvent (IE).
Hallo Ed,
Wow, ein echter Yahoo!-Mitarbeiter, wie schmeichelhaft =)
Sie bringen einen ausgezeichneten Punkt zur Sprache, der gut zu diesem Blog passt. Wir verwenden CSS, um Inhalt und Design zu trennen. Das ist eine ausgezeichnete Praxis, warum also nicht beibehalten und Inhalt und Verhalten trennen?
Danke, dass Sie auf diese Bibliotheken hingewiesen haben, ich muss mich wirklich mit diesen Techniken auf den neuesten Stand bringen.
Für eine weitere Perspektive auf das automatische Befüllen von Eingaben und Textfeldern: http://www.456bereastreet.com/archive/200710/autopopulating_text_input_fields_with_javascript/
Und zum :focus-Problem in IE6 können Sie die whatever:hover .htc verwenden, um es in diesem Browser zum Laufen zu bringen: http://www.xs4all.nl/~peterned/csshover.html
Schönes Formular! Ich denke, Sie haben vergessen, eine td aus einer älteren tabellenbasierten Version davon zu entfernen. https://css-tricks.de/examples/NiceSimpleContactForm/ validiert wegen dieser nicht.
Sie könnten auch die break-Tags nach jeder Eingabe entfernen und einen Clear darauf setzen, um den gleichen Effekt zu erzielen, nur um Ihren Code etwas stärker nach Struktur und Design zu trennen.
@Dyre Hult: Ja, es gab eine verirrte <td> darin, doh! Ich habe sie herausgenommen und das Formular validiert jetzt einwandfrei. Ich habe auch das herunterladbare Beispiel aus dem Artikel aktualisiert. Danke!
Diese <br />-Tags dienten auch keinem Zweck mehr, also wurden sie entfernt. Das ist die Schönheit, Beispiele wie dieses zu posten, denn sie werden durch so konstruktive Kritik natürlich immer besser und besser!
Darf ich auch accesskey=”” und tabindex=”” vorschlagen?
Das ist auch nützlich. Danke nochmals..
Das war großartig! Was für ein gut geschriebener und hilfreicher Beitrag, ich liebe es, dass Sie all die Erklärungen *warum* Dinge so sein sollten, wie Sie sie beschrieben haben, enthalten haben. Vielen Dank! **Lesezeichen gesetzt**
nette Formulare, vielen Dank!!!
Ich werde :focus zum ersten Mal benutzen, lol!
Gut gemacht, gut gemacht.
Vielen Dank für diesen Tipp, da ich mein eigenes Webformular mit dieser Idee zur Verbesserung der Benutzerfreundlichkeit ändern möchte.
Ralph
Ausgezeichneter Beitrag, vielen Dank.
Ich hoffe, jemand kann mir bei einem Problem mit dem netten und einfachen Kontaktformular helfen.
Ich habe es auf meiner Website implementiert und es hat großartig funktioniert.
Dann hat es einfach aufgehört zu funktionieren und sendet mir nicht mehr die E-Mail mit den Kontaktdaten. Tatsächlich erhalte ich gar keine E-Mail.
Ich habe die ursprünglichen Formulardateien getestet und alles unverändert gelassen, außer dass ich meine E-Mail in die $EmailTo = "Mein E-Mail-Feld"; in der Datei contactengine.php eingefügt habe.
Ich bin ratlos, was schiefgelaufen ist.
Könnte es mein Server sein? Oder hat jemand Vorschläge, bitte.
Danke, Toni
ausgezeichneter Beitrag… sehr hilfreich
Die Wufoo-Formular-Website war nicht schlecht. Ich habe sie für eine Website über Sokobanja verwendet, die ich gerade entwickle :D
Die beste Website
Danke Chris für die nützlichen Tipps und Einblicke,
meine Benutzer haben jetzt ein besseres Surferlebnis :D.
Dieses einfache Kontaktformular ist wirklich fantastisch!! Aber gibt es eine Möglichkeit, die gelbe Hintergrundfarbe zu vermeiden, die wir bei Textelementen wie E-Mail, Name usw. erhalten??
Die Wufoo-Formular-Website war nicht schlecht. Ich habe sie für eine Website über Sokobanja verwendet, die ich gerade entwickle :D
Ich werde das auf jeden Fall implementieren und die Nachricht verbreiten! Danke für den großartigen Artikel, das ist genau das, wonach ich gesucht habe.
Vielen Dank für diese nützlichen Informationen zu CSS und Formularen.
Vielen Dank für Ihren guten Rat!
Ich mochte die Web Form Factory wirklich. Danke