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 standardmäßige bevorzugte Größe haben, wie z.B. Formularelemente. Diese Eigenschaft erlaubt es Ihnen, das Standardgrößenverhalten zu überschreiben und Formularelemente an ihre Inhalte anzupassen.
Diese Eigenschaft wird typischerweise verwendet, um Text-<input>
und <textarea>
-Elemente so zu gestalten, dass sie sich an ihren Inhalt anpassen 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, Texteingaben so zu konfigurieren, dass sie ihren Inhalt einpassen und wachsen, wenn mehr Text eingegeben wird. Sie hören auf zu expandieren, wenn sie die maximalen Größenlimits erreichen (definiert durch die Größe des enthaltenen Elements oder über CSS gesetzt), woraufhin ein Scrollen erforderlich ist, um den gesamten Inhalt anzuzeigen.
Elemente, die von field-sizing: content
betroffen sind
Insbesondere beeinflusst field-sizing
mit der Einstellung content
die folgenden Elemente:
- Formulareingabetypen, die direkte Texteingabe von Benutzern akzeptieren. Dies umfasst die Typen
email
,number
,password
,search
,tel
,text
undurl
.- Wenn keine Mindestbreite für das Steuerelement festgelegt ist, wird es nur so breit sein wie der Textcursor.
- Steuerelemente mit
placeholder
Attributen werden groß genug dargestellt, um den Platzhaltertext anzuzeigen. - Das
size
Attribut modifiziert die standardmäßige bevorzugte Größe solcher<input>
-Elemente. Daher hatsize
keinen Effekt auf<input>
-Elemente mit der Einstellungfield-sizing: content
.
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: content
gesetzt ist, ändert das Steuerelement seine Größe, um den Dateinamen einzupassen.<textarea>
Steuerelemente. Es ist erwähnenswert, dass<textarea>
-Elemente mit der Einstellungfield-sizing: content
sich ähnlich wie einzeilige Textsteuerelemente verhalten, mit den 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 Zeilen anzuzeigen. Wenn dann eine Höhenbeschränkung erreicht wird, wird ein Scrollbalken angezeigt, um den gesamten Inhalt anzuzeigen. - Die
rows
undcols
Attribute modifizieren die standardmäßig bevorzugte Größe eines<textarea>
. Daher habenrows
/cols
keine Wirkung auf<textarea>
-Elemente mit der Einstellungfield-sizing: content
.
- Wenn
<select>
Steuerelemente. Diese verhalten sich etwas anders, als Sie es bei der Einstellungfield-sizing: content
erwarten könnten. Die Wirkung hängt von der Art des<select>
Steuerelements ab, das Sie erstellen:- Normale Drop-Down-Boxen ändern ihre Breite, um immer den angezeigten Optionswert anzupassen, wenn neue Werte ausgewählt werden. (Standardmäßig wird die Drop-Down-Größe so eingestellt, dass sie den längsten Optionswert anzeigen kann.)
- Listenboxen (
<select>
-Elemente mit demmultiple
odersize
Attribut) werden groß genug sein, um alle Optionen anzuzeigen, ohne dass gescrollt werden muss. (Standardmäßig erfordert die Dropdown-Box das Scrollen, um alle Optionswerte anzuzeigen.) - Das
size
Attribut hat nur geringen Effekt auf<select>
-Elemente, die die Einstellungfield-sizing: content
haben. In solchen Fällen überprüft der Browser, obsize
gleich1
ist, um zu bestimmen, ob das<select>
Steuerelement als Drop-Down oder Listenbox angezeigt werden soll. Allerdings werden immer alle Optionen einer Listenbox angezeigt, selbst wennsize
kleiner als die Anzahl der Optionen ist.
field-sizing
-Interaktion mit anderen Größenangaben
Die durch field-sizing: content
bereitgestellte Flexibilität bei der Größe von Formularelementen kann überschrieben werden, wenn Sie andere CSS-Größeneigenschaften verwenden. Vermeiden Sie, bei Nutzung von field-sizing: content
eine feste width
und height
festzulegen, da diese eine feste Größe auf das Steuerelement erzwingen. Die Verwendung von Eigenschaften wie min-width
und max-width
zusammen mit field-sizing: content
ist jedoch sehr effektiv, da sie es dem Steuerelement ermöglichen, mit dem eingegebenen Text zu wachsen und zu schrumpfen und gleichzeitig verhindern, dass das Steuerelement zu groß oder zu klein wird.
Das maxlength
Attribut bewirkt, dass das Steuerelement aufhört, in der Größe 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 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 effektiv den Inhalt, bis ein unteres oder oberes Größenlimit erreicht ist.
HTML
Das HTML in diesem Beispiel enthält drei Eingabefelder, jeweils mit einem zugehörigen <label>
: zwei <input>
Elemente der Typen text
und email
sowie 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 folgende Punkte zu dem HTML:
- Die ersten beiden Felder haben ein
maxlength
Attribut gesetzt, das das Wachstum der Feldgröße stoppt, wenn das Zeichenlimit erreicht ist. - Das
<textarea>
wird in Richtung der Zeile wachsen, bis der Rand dermin-width
Beschränkung (im CSS-Code unten festgelegt) erreicht ist, und dann beginnen, neue Zeilen in Blockrichtung hinzuzufügen, um nachfolgende Zeichen zu enthalten. - Das
email
-Eingabefeld hat einen Platzhalter gesetzt. Dadurch wird das Feld groß genug dargestellt, um den gesamten Platzhalter anzuzeigen. Sobald das Feld den Fokus erhält und der Benutzer mit der Eingabe beginnt, ändert das Feld seine Größe auf denmin-width
-Wert. Dastext
-Feld, das keinen Platzhalter hat, wird anfänglich beimin-width
gerendert.
CSS
Im CSS setzen wir field-sizing: content
auf die drei Eingabefelder, zusammen mit einer min-width
und max-width
, um die Eingabegröße zu begrenzen. Es ist zu betonen, dass die Felder, wenn keine Mindestbreite gesetzt wäre, nur so breit wie der Textcursor dargestellt würden.
Wir geben den <label>
s auch eine grundlegende Gestaltung, 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ößeneigenschaften zu erkunden.
Anzeige von <select>
-Elementen steuern
Dieses Beispiel zeigt die Wirkung von field-sizing: content
auf <select>
Elemente, sowohl bei Dropdown-Menüs als auch bei mehrzeiligen Listenfeldern.
HTML
Das HTML enthält zwei Sätze von <select>
-Elementen: einen mit aktivierter field-sizing: content
-Einstellung und einen ohne, damit Sie den Unterschied sehen können (obwohl der Effekt weniger offensichtlich als bei Texteingabefeldern sein mag). Jede Gruppe umfasst 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:
Eine bewährte Praxis ist es, jedes Formularelement mit einem <label>
-Element zu versehen, um jedem Feld eine bedeutungsvolle Textbeschreibung zur Barrierefreiheit zuzuordnen (siehe Bedeutungsvolle Textbeschriftungen verwenden für weitere Informationen). In diesem Beispiel haben wir dies nicht getan, da es sich ausschließlich auf Aspekte der visuellen Darstellung von Formularsteuerelementen konzentriert. Sie sollten jedoch sicherstellen, dass Sie Formularbeschriftungen im Produktionscode einfügen.
CSS
Im CSS wird field-sizing: content
nur auf der ersten Gruppe 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 Optionswerts an und ändert seine Größe, wenn andere Optionen ausgewählt werden. Ohne
field-sizing: content
ist die Größe auf die Breite der längsten Option festgelegt. - Die Mehrfachauswahl-Listenbox zeigt alle Optionen gleichzeitig an. Ohne
field-sizing: content
muss der Benutzer die Box scrollen, um alle Optionen anzuzeigen.
Spezifikationen
Specification |
---|
CSS Basic User Interface Module Level 4 # field-sizing |