Signatur
Beschreibung
Die Eigenschaft width von HTMLInputElement gehört zum HTML-Attribut width. Sinnvoll ist sie nur bei Grafik-Buttons, also bei <input type="image">. Dort legt sie fest, wie breit das Bild angezeigt wird, mit dem das Formular abgeschickt wird.
Beim Lesen bekommst du laut HTML-Spezifikation eine ganze Zahl in CSS-Pixeln:
- die tatsächlich dargestellte Breite, wenn das Bild gerendert wird,
- die natürliche Breite des Bildes, wenn es geladen ist, aber nicht angezeigt wird (z. B. bei
display: none), 0, wenn kein Bild verfügbar ist, etwa weil es noch lädt, der Pfad falsch ist oder das Feld keintype="image"hat.
Beim Schreiben wird das Inhaltsattribut width gesetzt. Der Browser zeigt das Bild dann in dieser Breite an. Ist nur die Breite angegeben und nicht die Höhe, skaliert der Browser die Höhe meist im passenden Seitenverhältnis.
Mit der Breite von Textfeldern hat die Eigenschaft nichts zu tun. Wie breit ein <input type="text"> ist, bestimmst du mit CSS (width) oder mit dem Attribut size (Anzahl der Zeichen).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $value | number | Nur beim Schreiben: neue Breite in CSS-Pixeln als nicht-negative ganze Zahl. Sie wird in das Attribut width übernommen. |
Rückgabewert
unsigned long). 0, wenn kein Bild verfügbar ist.Beispiele
Breite eines Grafik-Buttons auslesen
// HTML: <input type="image" id="senden" src="senden.png" alt="Absenden" width="120">
const button = document.querySelector('#senden');
// Erst nach dem Laden des Bildes ist ein sinnvoller Wert sicher
button.addEventListener('load', () => {
console.log(`Breite: ${button.width}px`);
});
Breite zur Laufzeit ändern
const button = document.querySelector('input[type="image"]');
// Auf kleinen Bildschirmen einen kleineren Button anzeigen
const anpassen = () => {
button.width = window.matchMedia('(max-width: 600px)').matches ? 80 : 160;
console.log(button.getAttribute('width'));
};
anpassen();
window.addEventListener('resize', anpassen);
Bei anderen Feldtypen liefert width 0
const textfeld = document.createElement('input');
textfeld.type = 'text';
textfeld.setAttribute('width', '300');
// Kein Bild vorhanden, daher 0
console.log(textfeld.width);
// Für Textfelder stattdessen CSS oder size verwenden
textfeld.style.width = '300px';
textfeld.size = 30;
// Wichtig · Fallstricke
- Nur für
type="image": Bei allen anderen Typen liefert der Getter0, auch wenn ein Attributwidthgesetzt ist. - Timing: Liest du die Eigenschaft, bevor das Bild geladen ist, bekommst du oft
0. Deshalb auf das Ereignisloadwarten. - Dargestellte Breite: Der Getter gibt die Breite zurück, die tatsächlich angezeigt wird, also inklusive CSS-Einfluss. Das kann vom Attributwert abweichen. Den reinen Attributwert erhältst du mit
getAttribute('width'). - Nicht-ganzzahlige oder negative Werte werden beim Setzen umgewandelt bzw. ignoriert. Übergib am besten nur ganze Zahlen ≥ 0.
- Für responsive Layouts ist CSS (
width,max-width) meist die bessere Wahl. Das Attribut ist trotzdem nützlich, damit der Browser vorab Platz für das Bild reserviert und das Layout beim Laden nicht springt. - Die Eigenschaft wird von allen gängigen Browsern seit langem unterstützt.