El :read-write
y :read-only
selectores son dos mutabilidad pseudo-clases destinadas a hacer más fácil peinar forma sobre la base de disabled
, readonly
y contenteditable
atributos HTML. Si bien el soporte del navegador no es tan malo, las diversas implementaciones son bastante inestables.
De acuerdo con las especificaciones oficiales de CSS, un :read-write
selector coincidirá con un elemento cuando:
- es un
input
que tienereadonly
nidisabled
atributos. - es un
textarea
que no tienereadonly
nidisabled
- es cualquier otro elemento editable (gracias al
contenteditable
atributo)
Sintaxis y ejemplo
/* 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; )
Soporte del navegador
Estos datos de soporte del navegador son de Caniuse, que tiene más detalles. Un número indica que el navegador admite la función en esa versión en adelante.
Escritorio
Cromo | Firefox | ES DECIR | Borde | Safari |
---|---|---|---|---|
36 | 3 * | No | 13 | 9 |
Móvil / Tablet
Android Chrome | Android Firefox | Androide | Safari de iOS |
---|---|---|---|
88 | 85 | 81 | 9.0-9.2 |
Existe una gran diferencia entre lo que se recomienda en las especificaciones y lo que hacen realmente los navegadores. Por ejemplo, si nos atenemos a las especificaciones, cada elemento que sea editable por el usuario pero esté deshabilitado ( disabled
o readonly
) o simplemente no editable por el usuario debe ser dirigido por un :read-only
selector no calificado .
Cromo | Firefox | Safari | Ópera | |
---|---|---|---|---|
input | :leer escribir | :leer escribir | :leer escribir | :leer escribir |
input(disabled) | :leer escribir | :leer escribir | :leer escribir | :leer escribir |
input(readonly) | :solo lectura | :solo lectura | :solo lectura | :solo lectura |
(contenteditable) | - | :leer escribir | - | :solo lectura |
* | - | :solo lectura | - | :solo lectura |
Mientras tanto, solo Firefox parece hacerlo, y aparentemente tampoco demasiado bien, ya que considera una disabled
entrada como :read-write
. En cuanto a que Opera no etiqueta un contenteditable
elemento como :read-write
, es simplemente porque no es compatible contenteditable
.