DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!
Die Selektoren :read-write und :read-only sind zwei Mutabilitäts-Pseudoklassen, die darauf abzielen, das Styling von Formularen basierend auf den HTML-Attributen disabled, readonly und contenteditable zu vereinfachen. Obwohl die Browserunterstützung nicht schlecht ist, sind die verschiedenen Implementierungen recht eigenwillig.
Gemäß den offiziellen CSS-Spezifikationen wählt ein :read-write-Selektor ein Element aus, wenn
- es sich um ein
inputhandelt, das weder das Attributreadonlynochdisabledhat. - es sich um ein
textareahandelt, das wederreadonlynochdisabledhat - es sich um ein beliebiges anderes editierbares Element handelt (dank des
contenteditable-Attributs)
Syntax & Beispiel
/* Any element that is not writable */
:read-only { }
/* ... so you might want to scope it */
input:read-only,
textarea:read-only,
[contenteditable]:read-only {
cursor: not-allowed;
}
/* Any enabled text input
or enabled textarea
or element with the contenteditable attribute */
:read-write {
background: white;
cursor: text;
}
Browser-Unterstützung
Diese Browser-Supportdaten stammen von Caniuse, wo es mehr Details gibt. Eine Zahl gibt an, dass der Browser die Funktion ab dieser Version unterstützt.
Desktop
| Chrome | Firefox | IE | Edge | Safari |
|---|---|---|---|---|
| 36 | 3* | Nein | 13 | 9 |
Mobil / Tablet
| Android Chrome | Android Firefox | Android | iOS Safari |
|---|---|---|---|
| 127 | 127 | 127 | 9.0-9.2 |
Es gibt einen großen Unterschied zwischen dem, was in den Spezifikationen empfohlen wird, und dem, was die Browser tatsächlich tun. Wenn wir uns beispielsweise an die Spezifikationen halten, sollte jedes vom Benutzer editierbare, aber deaktivierte (disabled oder readonly) oder einfach nicht vom Benutzer editierbare Element von einem uneingeschränkten :read-only-Selektor angesprochen werden.
| Chrome | Firefox | Safari | Opera | |
|---|---|---|---|---|
input | :read-write | :read-write | :read-write | :read-write |
input[disabled] | :read-write | :read-write | :read-write | :read-write |
input[readonly] | :read-only | :read-only | :read-only | :read-only |
[contenteditable] | — | :read-write | — | :read-only |
* | — | :read-only | — | :read-only |
Mittlerweile scheint nur Firefox dies zu tun, und offenbar auch nicht gut, da es ein disabled-Input als :read-write betrachtet. Dass Opera ein contenteditable-Element nicht als :read-write kennzeichnet, liegt einfach daran, dass es contenteditable nicht unterstützt.
Ausgezeichneter Artikel Chris!
Microsoft Edge unterstützt dies ebenfalls (ab Build 10547+): https://dev.windows.com/en-us/microsoft-edge/platform/status/?filter=f3f0000bf&search=mutability