field-sizing
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Die field-sizing CSS-Eigenschaft ermöglicht es Ihnen, das Größenverhalten von Elementen zu steuern, denen eine Standardpräferenzgröße zugewiesen wird, wie z.B. Formularelementen. Diese Eigenschaft erlaubt es Ihnen, das Standardgrößenverhalten zu überschreiben und Formularelemente an ihre Inhalte anpassen zu lassen.
Diese Eigenschaft wird typischerweise verwendet, um Text-<input>- und <textarea>-Elemente so zu gestalten, dass sie sich sowohl bei kleineren Inhalten anpassen als auch 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äßige bevorzugte Größe von Formularelementen. Diese Einstellung bietet eine einfache Möglichkeit, Texteingaben so zu konfigurieren, dass sie sich an ihren Inhalt anpassen und wachsen, wenn mehr Text eingegeben wird. Sie hören auf zu expandieren, wenn sie maximale Größenbeschränkungen erreichen (definiert durch die Größe des umgebenden Elements oder festgelegt über CSS), an diesem Punkt ist Scrollen erforderlich, um alle Inhalte anzuzeigen.
Elemente, die von field-sizing: content betroffen sind
Insbesondere field-sizing auf content wirkt sich auf die folgenden Elemente aus:
- Formulareingabetypen, die direkte Texteingaben von Benutzern akzeptieren. Dazu gehören die Typen
email,number,password,search,tel,textundurl.- Wenn keine Mindestbreite für die Kontrolle festgelegt ist, wird sie nur so breit wie der Textcursor sein.
- Kontrollen mit
placeholder-Attributen werden groß genug dargestellt, um den Platzhaltertext anzuzeigen. - Das
size-Attribut ändert die standardmäßige bevorzugte Größe solcher<input>-Elemente. Daher hatsizekeine Wirkung auf<input>-Elemente mitfield-sizing: contentgesetzt.
file-Eingaben. Direkte Texteingabe ist nicht möglich; jedoch ändert sich der angezeigte Dateiname, wenn der Benutzer eine neue Datei zum Hochladen auswählt. Wennfield-sizing: contentgesetzt ist, ändert sich die Größe der Steuerung, um den Dateinamen anzupassen.<textarea>-Kontrollen. Es lohnt sich zu beachten, dass<textarea>-Elemente mitfield-sizing: contentähnlich wie einzeilige Textkontrollen reagieren, mit den folgenden zusätzlichen Punkten:- Wenn
<textarea>-Elemente wegen einer Breitenbeschränkung nicht wachsen können, beginnen sie in der Höhe zu wachsen, um zusätzliche Zeilen von Inhalten anzuzeigen. Wenn dann eine Höhenbeschränkung erreicht wird, zeigen sie einen Scrollbalken an, um den gesamten Inhalt anzuzeigen. - Die
rowsundcols-Attribute ändern die standardmäßige bevorzugte Größe eines<textarea>. Daher habenrows/colskeine Wirkung auf<textarea>-Elemente mitfield-sizing: contentgesetzt.
- Wenn
<select>-Kontrollen. Diese verhalten sich etwas anders, als Sie es mitfield-sizing: contenterwarten würden. Der Effekt hängt von der Art der<select>-Kontrolle ab, die Sie erstellen:- Reguläre Dropdown-Boxen ändern ihre Breite, um immer den angezeigten Optionswert anzupassen, wenn neue Werte ausgewählt werden. (Standardmäßig wird die Größe des Dropdowns so eingestellt, dass der längste Optionswert angezeigt werden kann.)
- Listenfelder (
<select>-Elemente mit demmultipleodersize-Attribut) werden groß genug sein, um alle Optionen anzuzeigen, ohne scrollen zu müssen. (Standardmäßig erfordert das Dropdown-Feld Scrollen, um alle Optionswerte anzuzeigen.) - Das
size-Attribut hat sehr wenig Wirkung auf<select>-Elemente, diefield-sizing: contentgesetzt haben. In solchen Fällen überprüft der Browser, ob diesizegleich1ist, um zu bestimmen, ob die<select>-Kontrolle als Dropdown oder Listenfeld angezeigt werden soll. Es wird jedoch immer alle Optionen eines Listenfelds anzeigen, selbst wennsizekleiner als die Anzahl der Optionen ist.
field-sizing-Interaktion mit anderen Größeneinstellungen
Die durch field-sizing: content gebotene Flexibilität der Größeneinstellung von Formularelementen kann überschrieben werden, wenn Sie andere CSS-Größeneigenschaften verwenden. Vermeiden Sie es, eine feste width und height festzulegen, wenn Sie field-sizing: content verwenden, da sie die Kontrolle auf eine feste Größe festlegen. Die Verwendung von Eigenschaften wie min-width und max-width zusammen mit field-sizing: content ist jedoch sehr effektiv, da sie der Kontrolle ermöglichen, mit dem eingegebenen Text zu wachsen und zu schrumpfen und auch verhindern, dass die Kontrolle zu groß oder zu klein wird.
Das maxlength-Attribut bewirkt, dass die Kontrolle aufhört, in der Größe zu wachsen, wenn das maximale Zeichenlimit erreicht wird.
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, und umschließen den Inhalt effektiv, bis ein unteres oder oberes Größenlimit erreicht wird.
HTML
Das HTML in diesem Beispiel enthält drei Formularfelder, jedes mit einem zugehörigen <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 gesetzt, das die Größe des Feldes am Wachsen hindert, wenn das Zeichenlimit erreicht ist. - Das
<textarea>wird in der Inline-Richtung wachsen, bis der Rand dermin-width-Beschränkung (festgelegt im unten stehenden CSS-Code) erreicht ist, und dann beginnen, neue Zeilen in der Block-Richtung hinzuzufügen, um nachfolgende Zeichen aufzunehmen. - Die
email-Eingabe hat einen Platzhalter gesetzt. Dies führt dazu, dass das Feld groß genug gerendert wird, um den gesamten Platzhalter anzuzeigen. Sobald das Feld fokussiert ist und der Benutzer beginnt zu tippen, ändert das Feld die Größe auf denmin-width-Wert. Dastext-Feld, das keinen Platzhalter hat, wird initial beimin-widthgerendert.
CSS
Im CSS setzen wir field-sizing: content auf die drei Formularfelder, zusammen mit einer min-width und max-width, um die Eingabengröße einzuschränken. Es lohnt sich zu wiederholen, dass, wenn keine Mindestbreite auf den Feldern festgelegt wäre, sie nur so breit wie der Textcursor gerendert würden.
Wir geben den <label>s 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 die Felder einzugeben und zu entfernen, um die Effekte von field-sizing: content zusammen mit anderen Größeneigenschaften zu erkunden.
Steuerung der Anzeige von <select>-Elementen
Dieses Beispiel veranschaulicht die Wirkung von field-sizing: content auf <select>-Elemente, sowohl für Dropdown-Menütypen als auch für mehrzeilige Listenfeldtypen.
HTML
Das HTML enthält zwei Sätze von <select>-Elementen: einen mit field-sizing: content angewendet und einen ohne, wodurch Sie den Unterschied sehen können (obwohl der Effekt weniger offensichtlich sein kann als bei Textfeldern). Jeder Satz enthält ein Dropdown-Menü und ein mehrzeiliges Listenfeld (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:
Beste Praxis ist es, für jedes Formularelement ein <label>-Element hinzuzufügen, um jedem Feld eine sinnvolle Textbeschreibung für Zugänglichkeitszwecke zuzuordnen (siehe Verwendung sinnvoller Textlabels für weitere Informationen). Wir haben dies in diesem Beispiel nicht getan, da es sich ausschließlich auf Aspekte der visuellen Darstellung der Formularelemente konzentriert, aber Sie sollten in Produktionscode sicherstellen, dass Sie Formularlabels hinzufügen.
CSS
Im CSS ist field-sizing: content nur für den ersten Satz von <select>-Elementen gesetzt.
.field-sizing select {
field-sizing: content;
}
Ergebnis
Beachten Sie die folgenden Effekte von field-sizing: content:
- Das Dropdown-Menü passt immer zur Größe der angezeigten Option und ändert die Größe, wenn unterschiedliche Optionen ausgewählt werden. Ohne
field-sizing: contentist die Größe so festgelegt, dass sie so breit wie die längste Option ist. - Das mehrfache Listenfeld zeigt alle Optionen auf einmal an. Ohne
field-sizing: contentmuss der Benutzer den Kasten scrollen, um alle Optionen anzuzeigen.
Spezifikationen
| Specification |
|---|
| CSS Form Control Styling Level 1> # propdef-field-sizing> |
Browser-Kompatibilität
Loading…