field-sizing
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Die field-sizing CSS-Eigenschaft ermöglicht es Ihnen, das Größenverhalten von Elementen zu steuern, die eine standardmäßige bevorzugte Größe haben, wie zum Beispiel Formularelemente. Diese Eigenschaft ermöglicht Ihnen, das standardmäßige Größenverhalten zu überschreiben, sodass Formularelemente ihre Größe anpassen können, um ihren Inhalt aufzunehmen.
Diese Eigenschaft wird typischerweise verwendet, um Text-<input>- und <textarea>-Elemente zu gestalten, damit sie ihren Inhalt umschließen und wachsen können, wenn mehr Text in das Formularelement eingegeben wird.
Syntax
/* Keyword values */
field-sizing: content;
field-sizing: fixed;
/* Global values */
field-sizing: inherit;
field-sizing: initial;
field-sizing: revert;
field-sizing: revert-layer;
field-sizing: unset;
Werte
Beschreibung
field-sizing: content überschreibt die standardmäßige bevorzugte Größe von Formularelementen. Diese Einstellung bietet eine einfache Möglichkeit, Textfelder so zu konfigurieren, dass sie ihren Inhalt umschließen und wachsen, wenn mehr Text eingegeben wird. Sie hören auf zu wachsen, wenn sie ihre maximalen Größenbeschränkungen erreichen (definiert durch die Größe des umgebenden Elements oder über CSS festgelegt), woraufhin ein Scrollen erforderlich ist, um den gesamten Inhalt anzuzeigen.
Elemente, die von field-sizing: content betroffen sind
Konkret wirkt sich field-sizing mit dem Wert content auf folgende Elemente aus:
- Formulareingabetypen, die direkte Texteingaben von Benutzern akzeptieren. Dies schließt
email,number,password,search,tel,textundurlTypen ein.- Wenn keine Mindestbreite für das Steuerelement festgelegt ist, wird es nur so breit wie der Textcursor.
- Steuerelemente mit
placeholder-Attributen werden groß genug angezeigt, um den Platzhaltertext darzustellen. - Das
size-Attribut ändert die standardmäßige bevorzugte Größe solcher<input>-Elemente. Daher hatsizekeinen Effekt auf<input>-Elemente mitfield-sizing: content.
file-Eingaben. Direkte Texteingaben sind nicht möglich; allerdings ändert sich der angezeigte Dateiname, wenn der Benutzer eine neue Datei zum Hochladen auswählt. Wennfield-sizing: contenteingestellt ist, ändert sich die Größe des Steuerelements, um den Dateinamen zu umschließen.<textarea>-Steuerelemente. Es ist erwähnenswert, dass<textarea>-Elemente mitfield-sizing: contentwie einzeilige Texteingaben funktionieren, mit folgenden Ergänzungen:- Wenn
<textarea>-Elemente aufgrund einer Breitenbeschränkung nicht wachsen können, beginnen sie in der Höhe zu wachsen, um zusätzliche Inhaltsreihen anzuzeigen. Wird dann eine Höhenbeschränkung erreicht, wird ein Scrollbalken eingeblendet, um den gesamten Inhalt anzuzeigen. - Die
rowsundcols-Attribute ändern die standardmäßige bevorzugte Größe eines<textarea>. Daher habenrows/colskeine Auswirkung auf<textarea>-Elemente mitfield-sizing: content.
- Wenn
<select>-Steuerelemente. Diese verhalten sich etwas anders als erwartet, wennfield-sizing: contenteingestellt ist. Der Effekt hängt vom Typ des erstellten<select>-Steuerelements ab:- Normale Dropdown-Boxen ändern ihre Breite, um immer den angezeigten Optionswert anzupassen, wenn neue Werte ausgewählt werden. (Standardmäßig ist die Größe des Dropdowns groß genug, um den längsten Optionswert anzuzeigen.)
- Listenfelder (
<select>-Elemente mit demmultipleodersize-Attribut) sind groß genug, um alle Optionen anzuzeigen, ohne scrollen zu müssen. (Standardmäßig erfordert die Dropdown-Box ein Scrollen, um alle Optionswerte anzuzeigen.) - Das
size-Attribut hat kaum Auswirkungen auf<select>-Elemente, diefield-sizing: contenteingestellt haben. In solchen Fällen überprüft der Browser, ob diesizegleich1ist, um zu bestimmen, ob das<select>-Steuerelement als Dropdown oder Listenfeld angezeigt werden soll. Es werden jedoch immer alle Optionen eines Listenfeldes angezeigt, selbst wennsizekleiner als die Anzahl der Optionen ist.
field-sizing-Interaktion mit anderen Größeneinstellungen
Die durch field-sizing: content gebotene Größeneffizienz von Formularelementen kann überschrieben werden, wenn Sie andere CSS-Größeneigenschaften verwenden. Vermeiden Sie das Festlegen einer festen width und height, wenn Sie field-sizing: content verwenden, da sie eine feste Größe des Steuerelements erneut auferlegen. Das Verwenden von Eigenschaften wie min-width und max-width zusammen mit field-sizing: content ist sehr effektiv, da sie es dem Steuerelement ermöglichen, mit dem eingegebenen Text zu wachsen und zu schrumpfen sowie zu verhindern, dass das Steuerelement zu groß oder zu klein wird.
Das maxlength-Attribut führt dazu, dass das Steuerelement nicht weiter in der Größe wächst, wenn das maximale Zeichenlimit erreicht ist.
Formale Definition
| Anfangswert | fixed |
|---|---|
| Anwendbar auf | Elements with default preferred size |
| Vererbt | Nein |
| Berechneter Wert | wie angegeben |
| Animationstyp | diskret |
Formale Syntax
field-sizing =
fixed |
content
Beispiele
>Wachsende und schrumpfende Textfelder
Dieses Beispiel veranschaulicht die Wirkung von field-sizing: content auf ein- und mehrzeilige Textfelder. Die Felder passen ihre Größe an, wenn Text hinzugefügt oder entfernt wird. Sie umschließen den Inhalt effektiv, bis eine untere oder obere Größenbegrenzung erreicht ist.
HTML
Das HTML in diesem Beispiel enthält drei Formularfelder, jeweils mit einem zugeordneten <label>: zwei <input>-Elemente der Typen text und email und ein <textarea>-Element.
<div>
<label for="name">Enter name:</label>
<input type="text" id="name" maxlength="50" />
</div>
<div>
<label for="email">Enter email:</label>
<input type="email" id="email" maxlength="50" placeholder="e.g. a@b.com" />
</div>
<div>
<label for="comment">Enter comment:</label>
<textarea id="comment">This is a comment.</textarea>
</div>
Beachten Sie die folgenden Punkte zum HTML:
- Die ersten beiden Felder haben ein
maxlength-Attribut festgelegt, das das Wachsen des Feldes stoppt, wenn das Zeichenlimit erreicht ist. - Das
<textarea>wächst in der Inline-Richtung, bis diemin-width-Beschränkung (festgelegt im CSS-Code unten) erreicht wird, und beginnt dann, in der Block-Richtung neue Zeilen hinzuzufügen, um nachfolgende Zeichen aufzunehmen. - Das
email-Eingabefeld hat einen Platzhalter gesetzt. Dies führt dazu, dass das Feld groß genug dargestellt wird, um den gesamten Platzhalter anzuzeigen. Sobald das Feld fokussiert wird und der Benutzer anfängt zu tippen, ändert sich die Feldgröße zummin-width-Wert. Dastext-Feld, welches keinen Platzhalter hat, wird zunächst mitmin-widthgerendert.
CSS
Im CSS setzen wir field-sizing: content auf die drei Formularfelder neben einer min-width und max-width, um die Eingabegröße zu begrenzen. Wiederholenswert ist, dass die Felder ohne festgelegte Mindestbreite nur so breit wie der Textcursor gerendert werden würden.
Wir geben den <label>-Elementen auch ein grundlegendes Styling, damit sie ordentlich neben den Feldern sitzen.
input,
textarea {
field-sizing: content;
min-width: 50px;
max-width: 350px;
}
label {
width: 150px;
margin-right: 20px;
text-align: right;
}
Ergebnis
Versuchen Sie, Text in den Feldern einzugeben und zu entfernen, um die Auswirkungen von field-sizing: content zusammen mit anderen Größeneinstellungen zu erkunden.
Steuerung der Anzeige von <select>-Elementen
Dieses Beispiel veranschaulicht die Wirkung von field-sizing: content auf <select>-Elemente, sowohl Dropdown-Menütypen als auch mehrzeilige Listenfeldtypen.
HTML
Das HTML enthält zwei Sätze von <select>-Elementen: eines mit field-sizing: content angewendet und eines ohne, sodass Sie den Unterschied sehen können (obwohl der Effekt möglicherweise weniger offensichtlich ist als bei Textfeldern). Jeder Satz enthält einen Dropdown-Menütyp und einen mehrzeiligen Listenfeldtyp (mit gesetztem multiple-Attribut).
<div class="field-sizing">
<h2>With <code>field-sizing: content</code></h2>
<select>
<option>Bananas</option>
<option>Strawberries</option>
<option selected>Apples</option>
<option>Raspberries</option>
<option>Pomegranate</option>
</select>
<select multiple>
<option>Bananas</option>
<option>Strawberries</option>
<option>Apples</option>
<option>Raspberries</option>
<option>Pomegranate</option>
</select>
</div>
<div>
<h2>Without <code>field-sizing: content</code></h2>
<select>
<option>Bananas</option>
<option>Strawberries</option>
<option selected>Apples</option>
<option>Raspberries</option>
<option>Pomegranate</option>
</select>
<select multiple>
<option>Bananas</option>
<option>Strawberries</option>
<option>Apples</option>
<option>Raspberries</option>
<option>Pomegranate</option>
</select>
</div>
Hinweis:
Best Practice ist es, für jedes Formularsteuerelement ein <label>-Element zu verwenden, um jedem Feld einen sinnvollen Text zuzuweisen, um die Barrierefreiheit zu erhöhen (siehe Sinnvolle Text-Labels verwenden für weitere Informationen). In diesem Beispiel haben wir dies nicht getan, da es sich rein auf Aspekte der visuellen Darstellung der Formularelemente konzentriert, aber Sie sollten sicherstellen, dass Sie in Produktionscode Formular-Labels einfügen.
CSS
Im CSS wird field-sizing: content nur auf den ersten Satz der <select>-Elemente angewendet.
.field-sizing select {
field-sizing: content;
}
Ergebnis
Beachten Sie die folgenden Effekte von field-sizing: content:
- Das Dropdown-Menü passt immer die Größe an den angezeigten Optionswert an und ändert die Größe, wenn verschiedene Optionen ausgewählt werden. Ohne
field-sizing: contentist die Größe fixiert und so breit wie die längste Option. - Das Mehrfachauswahl-Listenfeld zeigt alle Optionen auf einmal an. Ohne
field-sizing: contentmuss der Benutzer die Box scrollen, um alle Optionen anzuzeigen.
Spezifikationen
| Specification |
|---|
| CSS Form Control Styling Level 1> # propdef-field-sizing> |