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äßig bevorzugte Größe haben, wie zum Beispiel Formularelemente. Diese Eigenschaft ermöglicht es Ihnen, das standardmäßige Größenverhalten zu überschreiben, sodass Formularelemente in ihrer Größe angepasst werden können, um ihren Inhalt zu fassen.
Diese Eigenschaft wird typischerweise verwendet, um Text-<input>
- und <textarea>
-Elemente so zu gestalten, dass sie den Inhalt umschließen (shrinkwrap) 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öße von Formularelementen. Diese Einstellung bietet eine einfache Möglichkeit, Textfelder so zu konfigurieren, dass sie den Inhalt umschließen und mit wachsendem Textinhalt wachsen. Sie hören auf zu wachsen, wenn sie maximale Größenlimits erreichen (definiert durch die Größe ihres enthaltenen Elements oder festgelegt über CSS), zu welchem Zeitpunkt das Scrollen erforderlich wird, um den gesamten Inhalt anzuzeigen.
Elemente, die von field-sizing: content
beeinflusst werden
Konkret wirkt sich field-sizing
auf content
bei den folgenden Elementen aus:
- Formular-Input-Typen, die direkte Texteingabe von Benutzern akzeptieren. Dazu gehören
email
,number
,password
,search
,tel
,text
undurl
Typen.- Wenn keine Mindestbreite für die Kontrolle festgelegt ist, wird sie nur so breit wie der Textcursor.
- Kontrollen mit
placeholder
Attributen werden groß genug gerendert, um den Platzhaltertext anzuzeigen. - Das
size
Attribut modifiziert die standardmäßig bevorzugte Größe solcher<input>
-Elemente. Folglich hatsize
keinen Effekt auf<input>
-Elemente mitfield-sizing: content
eingestellt.
file
Inputs. 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
eingestellt ist, passt sich die Kontrolle in der Größe an, um den Dateinamen zu umschließen.<textarea>
Kontrollen. Es ist bemerkenswert, dass<textarea>
-Elemente mitfield-sizing: content
eingestellt ähnlich wie einzeilige Textkontrollen 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 Zeileninhalt anzuzeigen. Wird dann eine Höhenbegrenzung erreicht, zeigt das Element eine Scrollleiste an, um den gesamten Inhalt anzuzeigen. - Die
rows
undcols
Attribute modifizieren die standardmäßig bevorzugte Größe eines<textarea>
. Folglich habenrows
/cols
keinen Effekt auf<textarea>
-Elemente mitfield-sizing: content
eingestellt.
- Wenn
<select>
Kontrollen. Diese verhalten sich ein wenig anders, als Sie es vielleicht erwarten, mitfield-sizing: content
eingestellt. Der Effekt hängt von der Art der<select>
-Kontrolle ab, die Sie erstellen:- Reguläre Dropdown-Boxen ändern ihre Breite, um stets den angezeigten Optionswert zu fassen, wenn neue Werte ausgewählt werden. (Standardmäßig ist die Größe der Dropdown-Box so eingestellt, dass sie den längsten Optionswert anzeigt.)
- Listenfelder (
<select>
-Elemente mit demmultiple
odersize
Attribut) werden groß genug sein, um alle Optionen anzuzeigen, ohne scrollen zu müssen. (Standardmäßig erfordert die Dropdown-Box das Scrollen, um alle Optionswerte anzuzeigen.) - Das
size
Attribut hat sehr wenig Einfluss auf<select>
-Elemente, diefield-sizing: content
eingestellt haben. In solchen Fällen überprüft der Browser, obsize
gleich1
ist, um zu bestimmen, ob die<select>
-Kontrolle als Dropdown oder als Listenfeld erscheinen sollte. Es werden jedoch immer alle Optionen eines Listenfeldes angezeigt, selbst wennsize
kleiner ist als die Anzahl der Optionen.
Interaktion von field-sizing
mit anderen Größeneinstellungen
Die Flexibilität der Größeneinstellung für Formularelemente durch field-sizing: content
kann außer Kraft gesetzt 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 sie sonst eine feste Größe auf die Kontrolle zurücksetzen. Das Verwenden von Eigenschaften wie min-width
und max-width
zusammen mit field-sizing: content
ist sehr effektiv, da sie es der Kontrolle ermöglichen, mit dem eingegebenen Text zu wachsen und zu schrumpfen und gleichzeitig 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 Zeichengrenze 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 den Effekt von field-sizing: content
auf ein- und mehrzeilige Textfelder. Die Felder passen ihre Größe an, während Text hinzugefügt oder entfernt wird, und umschließen den Inhalt effektiv (shrinkwrap), bis eine untere oder obere Größenbegrenzung erreicht ist.
HTML
Das HTML in diesem Beispiel enthält drei Formularfelder, jedes 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 die folgenden Punkte zum HTML:
- Die ersten beiden Felder haben ein
maxlength
Attribut gesetzt, welches verhindert, dass die Größe des Feldes wächst, wenn das Zeichengrenze erreicht ist. - Das
<textarea>
wird in der Inline-Richtung wachsen, bis der Rand dermin-width
-Beschränkung (im untenstehenden CSS-Code festgelegt) erreicht ist, und dann beginnen, neue Zeilen in der Blockrichtung hinzuzufügen, um die folgenden Zeichen zu fassen. - Das
email
-Eingabefeld hat einen Platzhalter. 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 sich die Größe des Feldes auf denmin-width
-Wert. Dastext
-Feld, das keinen Platzhalter hat, wird zunächst beimin-width
gerendert.
CSS
Im CSS setzen wir field-sizing: content
auf die drei Formularfelder, zusammen mit einer min-width
und max-width
, um die Eingabegröße zu beschränken. Es ist erwähnenswert, dass, wenn auf den Feldern keine Mindestbreite festgelegt wäre, sie nur so breit wie der Textcursor gerendert würden.
Wir geben auch den <label>
s ein einfaches 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, in den untenstehenden Feldern Text einzugeben und zu entfernen, um die Effekte von field-sizing: content
in Verbindung mit anderen Größeneigenschaften zu erkunden.
Darstellung von <select>
-Elementen steuern
Dieses Beispiel veranschaulicht den Effekt von field-sizing: content
auf <select>
-Elemente, sowohl bei Dropdown-Menüs als auch bei mehrzeiligen Listenfeldtypen.
HTML
Das HTML enthält zwei Sätze von <select>
-Elementen: einen mit angewendetem field-sizing: content
und einen ohne, wobei Sie den Unterschied sehen können (obwohl der Effekt vielleicht weniger offensichtlich ist 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:
Best Practices erfordern das Einfügen eines <label>
-Elements für jedes Formularelement, um eine sinnvolle Textbeschreibung mit jedem Feld zum Zweck der Barrierefreiheit zu verknüpfen (siehe Sinnvolle Textbezeichnungen verwenden für weitere Informationen). Wir haben dies in diesem Beispiel nicht getan, da es sich rein auf Aspekte der visuellen Darstellung von Formularelementen konzentriert, aber Sie sollten sicherstellen, dass Sie Formularelementbezeichnungen im Produktionstext einfügen.
CSS
Im CSS ist field-sizing: content
nur auf dem 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 Optionswerts an und ändert seine Größe, wenn unterschiedliche Optionen ausgewählt werden. Ohne
field-sizing: content
ist die Größe so festgelegt, dass sie so breit wie die längste Option ist. - Die Multi-Select-Liste 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 |