Neben den vielen Formatierungsmöglichkeiten gibt es mit HTML5 und CSS3 zusätzlich die Möglichkeit auf Benutzereingaben zu reagieren. Das Verschicken der Formulare ist jedoch nur mit einer Scriptsprache oder Programmen möglich.
Es gibt einige Generatoren im Netz, die das Gestalten und Erstellen von Formularen vereinfachen Webmart Formular Generator
Ein Online Generator für alle möglichen CSS Eigenschaften: https://enjoycss.com/
Folgende HTML Elemente kommen in Formularen vor und können mit CSS gestaltet werden.
HTML Element | Bedeutung |
---|---|
<form> | gesamtes Formular |
<input> | Eingabefelder, einzeilige Textfelder, Buttons, Checkboxen |
<textarea> | mehrzeilige Textfelder |
<select> | Auswahllisten |
<option> | einzelene Auswahlfelder in Auswahllisten |
<fieldset> | Bereiche eines Formulars |
<legend> | Titel eines fieldsets |
<label> | Bezeichnung von Formularfeldern |
Es gibt seit HTML5 sehr viele verschiedene input Felder. Außerdem sind auch Buttons, die normalerweise gänzlich anders gestaltet werden, input Felder. Um diese unterschiedlichen Elemente anzusprechen, empfiehlt es sich die Möglichkeiten von Selektoren auszuschöpfen.
Mit den CSS3 Möglichkeiten kann mehr ausgefallen Eingabefelder erzeugen.
Beispiel formatierte input Felder
Ist ein Eingabefeld ausgewählt, kann man der Pseudoklasse :focus CSS Eigenschaften ändern. Ein input Element kann einen border
und eine outline
Eigenschaft haben.
Mit dem Pseudoelement ::placeholder
kann man den Platzhaltertext gestalten, der mit dem placehoder-Attribut zugewiesen wird.
CSS
input::placeholder{ font-weight: bold; color: grey; font-style: italic; }
HTML
<input type="text" placeholder="bitte eingeben">
Mit CSS3 kann man die Positionierung des label Elementes bestimmen. Wenn man auf das label Element klickt, wird der der Focus in das dazugehörige input Feld gesetzt. Damit das für den User ersichtlich ist, kann man dem label Element folgende CSS Eigenschaft zuweisen. cursor: pointer;
Ein anderer wichtiger Punkt ist die Positionierung des label Elements
display: inline-block
auszeichnet und so eine Breite zuweisen kann width: 10em
.Setzt auf diese Art das label Element auf die linke Seite, sollte man für mehrzeilige Textfelder noch folgende Formatierung vornehmen. vertical-align:top;
Radiobuttons werden mit <input type="radio"> und Checkboxen mit <input type="checkbox"> erstellt. Sie sind mit einer outline versehen, die man ändern kann.
Desweiteren kann man mit der Pseudoklasse :checked ein ausgewähltes Element ansprechen. Weitere Beispiele unter Pseudoklasse :checked
CSS
input[type="checkbox"]:checked{ outline: 2px dotted red; width: 20px; height: 20px; }
Html
<input type="checkbox">
Mehrzeilige Textfelder werden in modernen Browsern als skalierbar angzeigt. Man hat jedoch die Mögichkeit mit CSS einzugreifen. resize: none
Buttons lassen sich mit CSS auf vielfältige Weise gestalten. Man kann Sie mit Hintergrundfarben, Bilder, und abgerundeten Kanten versehen. Auch mit HTML5 hat man die Möglichkeit spezielle Grafikbuttons zu definieren oder einen Bild innerhalb eines Buttons zu referenzieren.
weitere Buttons Beispiel 1 | Beispiel 2 | Beispiel 3 | Beispiel 4 |
In den folgenden Beispielen wird ein einfaches Formular Schritt für Schritt mit CSS formatiert.
Beispiel 1 | Beispiel 2 | Beispiel 3 |
Hier weitere Step by Step Beispiele
Beispiel 1 | Beispiel 2 | Beispiel 3
Man kann eine Select List mit CSS nicht bis ins letzte stylen. Vor allen Dingen die DropDown List und de ausgewählten Elemente lassen sich nicht einfach mit CSS stylen.
Um die volle Kontrolle zu haben, kann man eine Select nutzen, diese jedoch komplett unsichtbar machen und mit Javascript komplett neu aufbauen mit Div Elementen etc. Dazu gibts bei W3Schools ein Beispiel. oder siehe hier CSS Tricks.
Oder man wählt einfach andere HTML Elemente.
Programmieren mit Select Listen in meinen Javascript Tipps.
Einige Attribute und Zustände können mit CSS Selektoren angesprochen werden.
:required , :invalid, :valid
erforderlich, ungültig, gültig
input:hover:required{
background-color: blue;
}
input:focus:invalid{
background: red;
}
input:focus:valid{
background-color: antiquewhite;
}