field-sizing CSS property
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Die field-sizing CSS Eigenschaft ermöglicht es Ihnen, das Größenverhalten von Elementen zu steuern, denen eine standardmäßig bevorzugte Größe zugewiesen wird, wie z.B. Formularelemente. Diese Eigenschaft ermöglicht Ihnen, das standardmäßige Größenverhalten zu überschreiben, sodass Formularelemente ihre Größe an ihre Inhalte anpassen können.
Diese Eigenschaft wird typischerweise verwendet, um Text-<input> und <textarea> Elemente so zu gestalten, dass sie ihren Inhalt umschließen können und wachsen, 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äßig bevorzugte Größeneinstellung von Formularelementen. Diese Einstellung bietet eine Möglichkeit, Texteingaben so zu konfigurieren, dass sie ihren Inhalt umschließen und wachsen, wenn mehr Text eingegeben wird. Sie hören auf zu wachsen, wenn sie maximale Größenbeschränkungen erreichen (definiert durch die Größe ihres beinhaltenden Elements oder festgelegt über CSS), zu diesem Zeitpunkt ist Scrollen erforderlich, um den gesamten Inhalt anzuzeigen.
Elemente, die von field-sizing: content betroffen sind
Konkret hat field-sizing mit content Auswirkungen auf folgende Elemente:
- Formularelement-Typen, die direkte Texteingaben von Nutzern akzeptieren. Dazu gehören die Typen
email,number,password,search,tel,textundurl.- Wenn keine Mindestbreite für die Steuerung festgelegt ist, wird sie nur so breit wie der Textcursor sein.
- Steuerungen mit
placeholderAttributen werden groß genug dargestellt, um den Platzhaltertext anzuzeigen. - Das
sizeAttribut verändert die standardmäßig bevorzugte Größe solcher<input>Elemente. Daher hatsizekeine Wirkung auf<input>Elemente mitfield-sizing: contentgesetzt.
fileEingaben. Direkte Texteingabe ist nicht möglich; jedoch ändert sich der angezeigte Dateiname, wenn der Nutzer eine neue Datei zum Hochladen auswählt. Wennfield-sizing: contentgesetzt ist, wird die Steuerung ihre Größe ändern, um den Dateinamen zu umschließen.<textarea>Steuerungen. Es ist erwähnenswert, dass<textarea>Elemente mitfield-sizing: contentsich ähnlich verhalten wie einzeilige Texteingaben, mit folgenden Ergänzungen:- Wenn
<textarea>Elemente aufgrund einer Breitenbeschränkung nicht wachsen können, werden sie anfangen, in der Höhe zu wachsen, um zusätzliche Zeilen von Inhalt darzustellen. Wenn dann eine Höhenbeschränkung erreicht wird, werden sie anfangen, eine Scrollleiste anzuzeigen, um den gesamten Inhalt sichtbar zu machen. - Die
rowsundcolsAttribute verändern die standardmäßig bevorzugte Größe einer<textarea>. Daher habenrows/colskeine Wirkung auf<textarea>Elemente mitfield-sizing: contentgesetzt.
- Wenn
<select>Steuerungen. Diese verhalten sich etwas anders, als man es mitfield-sizing: contenterwarten könnte. Die Wirkung hängt von der Art der<select>Steuerung ab, die Sie erstellen:- Normale Dropdown-Boxen werden ihre Breite ändern, um immer den angezeigten Optionswert zu fassen, während neue Werte ausgewählt werden. (Standardmäßig ist die Größe des Dropdowns so eingestellt, dass sie den längsten Optionswert anzeigen kann.)
- Listboxen (
<select>Elemente mit demmultipleodersizeAttribut) werden groß genug dargestellt, um alle Optionen anzuzeigen, ohne dass ein Scrollen erforderlich ist. (Standardmäßig erfordert die Dropdown-Box ein Scrollen, um alle Optionswerte anzuzeigen.) - Das
sizeAttribut hat wenig Wirkung auf<select>Elemente, diefield-sizing: contentgesetzt haben. In solchen Fällen prüft der Browser, ob diesizegleich1ist, um zu bestimmen, ob die<select>Steuerung als Dropdown oder als Listbox erscheinen sollte. Es wird jedoch immer alle Optionen einer Listbox anzeigen, selbst wennsizekleiner ist als die Anzahl der Optionen.
field-sizing Interaktion mit anderen Größeneinstellungen
Die Flexibilität der Größenanpassung, die durch field-sizing: content für Formularelemente bereitgestellt wird, kann überschrieben werden, wenn Sie andere CSS-Größeneigenschaften verwenden. Vermeiden Sie es, eine feste width und height zu setzen, wenn Sie field-sizing: content verwenden, da diese eine feste Größe für die Steuerung neu durchsetzen werden. Die Verwendung von Eigenschaften wie min-width und max-width zusammen mit field-sizing: content ist jedoch sehr effektiv, da sie es der Steuerung erlauben, mit dem eingegebenen Text zu wachsen und zu schrumpfen und gleichzeitig verhindern, dass die Steuerung zu groß oder zu klein wird.
Das maxlength Attribut bewirkt, dass die Steuerung aufhört zu wachsen, 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 zeigt die Wirkung von field-sizing: content auf ein- und mehrzeilige Textfelder. Die Felder passen ihre Größe an, während Text hinzugefügt oder entfernt wird, um den Inhalt effektiv zu umschließen, bis eine kleinere oder größere Größenbegrenzung erreicht ist.
HTML
Das HTML in diesem Beispiel enthält vier Formularfelder, jedes mit einem zugehörigen <label>: drei <input> Elemente der Typen text, email und tel, und ein <textarea> Element.
<div>
<label for="name">Enter name:</label>
<input type="text" id="name" />
</div>
<div>
<label for="email">Enter email:</label>
<input type="email" id="email" placeholder="e.g. a@b.com" />
</div>
<div>
<label for="tel">Enter telephone:</label>
<input type="tel" id="tel" maxlength="15" />
</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 keine Längenbeschränkungen.
- Das dritte Feld (vom Typ
tel) hat einmaxlengthAttribut gesetzt, welches das Wachstum des Feldes stoppt, wenn das Zeichenlimit erreicht ist. - Das
<textarea>wird in der Inline-Richtung wachsen, bis die Kante dermin-widthBeschränkung (festgelegt im untenstehenden CSS-Code) erreicht ist, dann wird es anfangen, neue Zeilen in der Blockrichtung hinzuzufügen, um nachfolgende Zeichen zu enthalten. - Das
emailEingabefeld hat einen Platzhalter gesetzt. Dies führt dazu, dass das Feld groß genug dargestellt wird, um den gesamten Platzhalter anzuzeigen. Sobald das Feld fokussiert ist und der Benutzer anfängt zu tippen, ändert das Feld die Größe auf denmin-widthWert. DastextFeld, das keinen Platzhalter hat, wird initial beimin-widthgerendert.
CSS
Im CSS setzen wir field-sizing: content auf die drei Formularelemente, zusammen mit einer min-width und max-width, um die Eingabegröße zu begrenzen. Es ist erwähnenswert, dass, wenn keine Mindestbreite auf den Feldern gesetzt ist, sie nur so breit wie der Textcursor gerendert würden.
Wir geben auch den <label>s 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 die untenstehenden Felder einzugeben und zu entfernen, um die Effekte von field-sizing: content zusammen mit anderen Größeneinstellungen zu erkunden.
Steuerung der <select> Elementdarstellung
Dieses Beispiel zeigt die Wirkung von field-sizing: content auf <select> Elemente, sowohl für Dropdown-Menü-Typen als auch für mehrzeilige Listbox-Typen.
HTML
Das HTML enthält zwei Sets von <select> Elementen: eins mit field-sizing: content angewendet und eins ohne, was Ihnen ermöglicht, den Unterschied zu sehen (auch wenn der Effekt weniger offensichtlich sein mag als bei Textfeldern). Jedes Set beinhaltet einen Dropdown-Menü-Typ und einen mehrzeiligen Listbox-Typ (mit dem multiple Attribut gesetzt).
<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:
Es ist bewährte Praxis, ein <label> Element für jede Formsteuerung zu beinhalten, um eine sinnvolle Textbeschreibung mit jedem Feld für Barrierefreiheitszwecke zu assoziieren (siehe Verwendung aussagekräftiger Textlabels für mehr Informationen). Wir haben dies in diesem Beispiel nicht getan, da es sich rein auf Aspekte der visuellen Darstellung der Formsteuerungen konzentriert, jedoch sollten Sie sicherstellen, dass Sie Formularbeschriftungen in Produktionscode einbinden.
CSS
Im CSS ist field-sizing: content nur auf das erste Set von <select> Elementen gesetzt.
.field-sizing select {
field-sizing: content;
}
Ergebnis
Beachten Sie die folgenden Effekte von field-sizing: content:
- Das Dropdown-Menü passt sich immer der Größe des angezeigten Optionswertes an und ändert die Größe, wenn unterschiedliche Optionen ausgewählt werden. Ohne
field-sizing: contentist die Größe festgelegt so breit wie die längste Option. - Die Mehrfachauswahl-Listbox zeigt alle Optionen auf einmal an. Ohne
field-sizing: contentmuss der Benutzer die Box scrollen, um alle Optionen anzuzeigen.
Spezifikationen
| Spezifikation |
|---|
| CSS Form Control Styling Level 1> # propdef-field-sizing> |