Den :read-write
och :read-only
väljare är två föränderlighet pseudo-klasser som syftar till att göra formulär styling lättare bygger på disabled
, readonly
och contenteditable
HTML-attribut. Medan webbläsarstödet inte är så dåligt är de olika implementeringarna ganska otäcka.
Enligt de officiella CSS-specifikationerna kommer en :read-write
väljare att matcha ett element när:
- det är antingen ett
input
som harreadonly
ellerdisabled
attribut. - det är en
textarea
som varken harreadonly
ellerdisabled
- det är något annat redigerbart element (tack vare
contenteditable
attributet)
Syntax och exempel
/* 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; )
Webbläsarstöd
Denna webbläsares supportdata kommer från Caniuse, som har mer detaljer. Ett nummer indikerar att webbläsaren stöder funktionen i den versionen och uppåt.
Skrivbord
Krom | Firefox | IE | Kant | Safari |
---|---|---|---|---|
36 | 3 * | Nej | 13 | 9 |
Mobil / surfplatta
Android Chrome | Android Firefox | Android | iOS Safari |
---|---|---|---|
88 | 85 | 81 | 9,0-9,2 |
Det är en stor skillnad mellan vad som rekommenderas i specifikationerna och vad webbläsarna faktiskt gör. Till exempel, om vi håller oss till specifikationerna, bör varje element som är användarredigerbart men inaktiverat ( disabled
eller readonly
) eller helt enkelt inte användarredigerbart riktas mot en okvalificerad :read-only
väljare.
Krom | Firefox | Safari | Opera | |
---|---|---|---|---|
input | :läsa skriva | :läsa skriva | :läsa skriva | :läsa skriva |
input(disabled) | :läsa skriva | :läsa skriva | :läsa skriva | :läsa skriva |
input(readonly) | : skrivskyddad | : skrivskyddad | : skrivskyddad | : skrivskyddad |
(contenteditable) | - | :läsa skriva | - | : skrivskyddad |
* | - | : skrivskyddad | - | : skrivskyddad |
Under tiden verkar bara Firefox göra det, och uppenbarligen inte så bra heller eftersom det anser att en disabled
inmatning är som :read-write
. När det gäller Opera som inte märker ett contenteditable
element som :read-write
, är det helt enkelt för att det inte stöder contenteditable
.