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, die eine standardisierte bevorzugte Größe erhalten, wie z.B. Formularelemente. Diese Eigenschaft ermöglicht es Ihnen, das standardmäßige Größenverhalten zu überschreiben, sodass Formularelemente sich in ihrer Größe anpassen können, um ihren Inhalt aufzunehmen.
Diese Eigenschaft wird typischerweise verwendet, um Text-<input> und <textarea> Elemente zu stylen, sodass sie sowohl ihren Inhalt umschließen als auch 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 expandieren, wenn sie maximale Größengrenzen erreichen (definiert durch die Größe ihres enthaltenden Elements oder über CSS festgelegt), an welchem Punkt ein Scrollen erforderlich ist, um allen Inhalt zu sehen.
Elemente, die von field-sizing: content betroffen sind
Speziell field-sizing auf content beeinflusst die folgenden Elemente:
- Formulareingabetypen, die direkte Texteingabe von Benutzern akzeptieren. Dies umfasst die Typen
email,number,password,search,tel,textundurl.- Wenn keine Mindestbreite auf das Steuerelement gesetzt wird, wird es nur so breit wie der Textcursor sein.
- Steuerelemente mit
placeholderAttributen werden groß genug gerendert, um den Platzhaltertext anzuzeigen. - Das
sizeAttribut ändert die standardmäßige bevorzugte Größe solcher<input>Elemente. Im Ergebnis hatsizekeine Wirkung auf<input>Elemente, bei denenfield-sizing: contentgesetzt ist.
fileEingaben. 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, wird sich das Steuerelement so ändern, dass es den Dateinamen umschließt.<textarea>Steuerelemente. Es ist erwähnenswert, dass<textarea>Elemente mitfield-sizing: contentsich ähnlich wie einzeilige Textsteuerelemente verhalten, mit den folgenden Ergänzungen:- Wenn
<textarea>Elemente nicht in der Lage sind, aufgrund einer Breitenbeschränkung zu wachsen, werden sie beginnen in der Höhe zu wachsen, um zusätzliche Zeilen des Inhalts darzustellen. Wenn dann eine Höhenbeschränkung erreicht wird, werden sie ein Rollbalken anzeigen, um den gesamten Inhalt sichtbar zu machen. rowsundcolsAttribute ändern die standardmäßig bevorzugte Größe eines<textarea>. Im Ergebnis habenrows/colskeine Wirkung auf<textarea>Elemente, bei denenfield-sizing: contentgesetzt ist.
- Wenn
<select>Steuerelemente. Diese verhalten sich ein wenig anders, als Sie vielleicht erwarten würden, wennfield-sizing: contentgesetzt ist. Die Wirkung hängt von der Art des<select>Steuerelements ab, das Sie erstellen:- Reguläre Dropdown-Boxen werden ihre Breite ändern, um den angezeigten Wert immer anzupassen, wenn neue Werte ausgewählt werden. (Standardmäßig wird die Größe des Dropdowns so festgelegt, dass sie den längsten Optionswert anzeigt.)
- Listenfelder (
<select>Elemente mit demmultipleodersizeAttribut) werden groß genug sein, um alle Optionen ohne Scrollen anzuzeigen. (Standardmäßig erfordert die Dropdown-Box ein Scrollen, um alle Optionswerte anzuzeigen.) - Das
sizeAttribut 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 das<select>Steuerelement als Dropdown oder Listenfeld erscheinen soll. Es wird jedoch immer alle Optionen eines Listenfelds anzeigen, auch wennsizekleiner als die Anzahl der Optionen ist.
field-sizing Interaktion mit anderen Größeinstellungen
Die durch field-sizing: content bereitgestellte Flexibilität zur Größenanpassung von Formularelementen kann überschrieben werden, wenn Sie andere CSS-Größeneigenschaften verwenden. Vermeiden Sie es, eine feste width und height zu verwenden, wenn Sie field-sizing: content verwenden, da sie eine feste Größe auf das Steuerelement zurücksetzen werden. Die Verwendung von Eigenschaften wie min-width und max-width zusammen mit field-sizing: content ist effektiv, da sie es dem Steuerelement ermöglichen, mit dem eingegebenen Text zu wachsen und zu schrumpfen und es auch daran hindern, zu groß oder zu klein zu werden.
Das maxlength Attribut verursacht, dass das Steuerelement aufhört zu wachsen, wenn die maximale Zeichenanzahl 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
Wachsender und schrumpfender Textfelder
Dieses Beispiel zeigt die Wirkung von field-sizing: content auf einzeilige und mehrzeilige Textfelder. Die Felder passen ihre Größe an, während Text hinzugefügt oder entfernt wird, effektiv, bis eine untere oder obere Größengrenze 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. [email protected]" />
</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
maxlengthAttribut gesetzt, das das Wachstum der Feldgröße stoppt, wenn die Zeichenbegrenzung erreicht ist. - Das
<textarea>wird in der Inline-Richtung wachsen, bis das Ende dermin-widthEinschränkung (im untenstehenden CSS-Code gesetzt) erreicht ist, und dann beginnen, neue Zeilen in der Blockrichtung hinzuzufügen, um nachfolgende Zeichen zu enthalten. - Das
emailEingabefeld hat einen Platzhalter gesetzt. Dies verursacht, dass das Feld groß genug gerendert wird, um den gesamten Platzhalter anzuzeigen. Sobald das Feld fokussiert ist und der Benutzer beginnt, Text einzugeben, ändert das Feld seine Größe zum Wert vonmin-width. DastextFeld, das keinen Platzhalter hat, rendert initially beimin-width.
CSS
Im CSS setzen wir field-sizing: content auf die drei Formularfelder zusammen mit einer min-width und max-width, um die Eingabegröße einzuschränken. Es ist erwähnenswert, dass, wenn keine Mindestbreite auf den Feldern gesetzt wäre, sie nur so breit wie der Textcursor gerendert würden.
Wir geben den <label>s auch ein rudimentäres 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 Effekte von field-sizing: content zusammen mit anderen Größeigenschaften zu erkunden.
Steuerung der <select> Elementanzeige
Dieses Beispiel zeigt 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: einen mit field-sizing: content angewandt, und einen ohne, um Ihnen den Unterschied zu zeigen (obwohl der Effekt weniger offensichtlich sein mag als bei Textfeldern). Jeder Satz enthält einen Dropdown-Menütyp und einen mehrzeiligen Listenfeldtyp (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 jedes Formularelement einzuschließen, um eine sinnvolle Textbeschreibung mit jedem Feld für Barrierefreiheitszwecke zu verknüpfen (siehe Sinnvolle Textlabels für weitere Informationen). Wir haben dies in diesem Beispiel nicht gemacht, da es sich rein auf Aspekte der visuellen Darstellung der Formularelemente konzentriert, aber Sie sollten sicherstellen, dass Sie Formularlabels im Produktivcode einfügen.
CSS
Im CSS wird field-sizing: content nur auf 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 die Größe des angezeigten Wertes an und ändert die Größe, sobald verschiedene Optionen ausgewählt werden. Ohne
field-sizing: contentist die Größe so festgesetzt, dass sie so breit ist wie die längste Option. - Das Mehrfachauswahl-Listenfeld zeigt alle Optionen auf einmal. Ohne
field-sizing: contentmuss der Benutzer das Feld scrollen, um alle Optionen zu sehen.
Spezifikationen
| Specification |
|---|
| CSS Basic User Interface Module Level 4 # field-sizing |
Browser-Kompatibilität
BCD tables only load in the browser