Den :read-write
og :read-only
velgere er to mutability pseudo-klasser som tar sikte på å gjøre skjemaet styling enklere basert på disabled
, readonly
og contenteditable
HTML-attributter. Selv om nettleserstøtten ikke er så ille, er de forskjellige implementeringene ganske vanskelige.
I henhold til de offisielle CSS-spesifikasjonene vil en :read-write
velger samsvare med et element når:
- det er enten et
input
som harreadonly
ellerdisabled
attributter. - det er en
textarea
som verken harreadonly
ellerdisabled
- det er et hvilket som helst annet redigerbart element (takket være
contenteditable
attributtet)
Syntaks og eksempel
/* 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; )
Nettleserstøtte
Disse nettleserstøttedataene er fra Caniuse, som har flere detaljer. Et tall indikerer at nettleseren støtter funksjonen i den versjonen og oppover.
Desktop
Chrome | Firefox | DVS | Kant | Safari |
---|---|---|---|---|
36 | 3 * | Nei | 1. 3 | 9 |
Mobil / nettbrett
Android Chrome | Android Firefox | Android | iOS Safari |
---|---|---|---|
88 | 85 | 81 | 9.0-9.2 |
Det er en stor forskjell mellom det som anbefales i spesifikasjonene og hva nettleserne faktisk gjør. For eksempel, hvis vi holder oss til spesifikasjonene, bør hvert element som kan redigeres av brukeren, men deaktiveres ( disabled
eller readonly
) eller rett og slett ikke kan redigeres av brukeren, målrettes av en ukvalifisert :read-only
velger.
Chrome | Firefox | Safari | Opera | |
---|---|---|---|---|
input | :Les Skriv | :Les Skriv | :Les Skriv | :Les Skriv |
input(disabled) | :Les Skriv | :Les Skriv | :Les Skriv | :Les Skriv |
input(readonly) | : skrivebeskyttet | : skrivebeskyttet | : skrivebeskyttet | : skrivebeskyttet |
(contenteditable) | - | :Les Skriv | - | : skrivebeskyttet |
* | - | : skrivebeskyttet | - | : skrivebeskyttet |
I mellomtiden ser det bare ut til at Firefox gjør det, og tilsynelatende heller ikke så bra, siden det anser et disabled
inndata som :read-write
. Når det gjelder Opera som ikke merker et contenteditable
element som :read-write
, er det ganske enkelt fordi det ikke støtter contenteditable
.