Pseudo-classe CSS :read-only
La pseudo-classe CSS :read-only sélectionne les éléments non modifiables. Découvrez-la et essayez des exemples.
La pseudo-classe CSS :read-only correspond à tout élément que l'utilisateur ne peut pas modifier. Elle est l'exact opposé de :read-write : chaque élément est ciblé par l'une ou l'autre, jamais par les deux. Utilisez-la pour donner aux champs en lecture seule un aspect distinctif — par exemple, un arrière-plan atténué — afin que les utilisateurs voient instantanément quels champs ils peuvent modifier.

Ce qui est considéré comme modifiable
Un élément est modifiable (et donc ciblé par :read-write, et non par :read-only) lorsqu'il est l'un des suivants :
- Un élément
<input>qui ne possède ni l'attributreadonlyni l'attributdisabled. - Un élément
<textarea>qui ne possède ni l'attributreadonlyni l'attributdisabled. - Tout autre élément dont l'attribut
contenteditableest défini surtrue.
Tout le reste est en lecture seule, donc :read-only cible un élément lorsque :
- c'est un
<input>ou un<textarea>portant l'attributreadonly, ou - c'est un élément ordinaire dont l'attribut
contenteditableest àfalseou absent (la majeure partie de la page — paragraphes, titres, divs, etc.).
Une surprise fréquente : un attribut readonly sur un <div> ou un <p> n'a aucun effet, car readonly s'applique uniquement aux contrôles de formulaire. Un tel élément est ciblé par :read-only simplement parce qu'il n'est pas modifiable par nature — pas en raison de l'attribut readonly. Pour rendre un élément non-formulaire modifiable, utilisez contenteditable="true".
:read-only peut être chaîné avec d'autres sélecteurs (comme :hover) et combiné avec des pseudo-éléments (comme ::after).
Version
CSS Basic User Interface Module Level 3
Syntaxe
Syntaxe CSS :read-only
:read-only {
css declarations;
}Exemple du sélecteur :read-only :
Exemple de code CSS :read-only
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
input {
margin-bottom: 10px;
border: 1px solid #ddd;
padding: 5px;
}
input:read-only {
background-color: #ccc;
}
</style>
</head>
<body>
<h2>:read-only selector example</h2>
<form>
<div>
<label for="normal">Example1</label>
<input value="normal input" id="normal" />
</div>
<div>
<label for="read-only">Example2</label>
<input readonly value="read-only input" id="read-only" />
</div>
</form>
</body>
</html>L'attribut énuméré contenteditable indique si l'utilisateur peut modifier l'élément. Lorsqu'il est activé, le rendu du navigateur est modifié pour permettre l'édition. L'attribut doit avoir l'une des valeurs suivantes :
true(ou la chaîne vide), indiquant que l'élément doit être modifiable ;false, indiquant que l'élément ne doit pas être modifiable.
Exemple du sélecteur :read-only avec l'attribut contenteditable :
Exemple de la pseudo-classe CSS :read-only avec l'attribut contenteditable
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
p:read-only {
background: #8ebf42;
}
p[contenteditable="true"] {
color: #777777;
}
</style>
</head>
<body>
<h2>:read-only selector example</h2>
<p>Example of a normal paragraph.</p>
<p contenteditable="true">Example of a contenteditable paragraph! Just click and edit!</p>
</body>
</html>Exemple du sélecteur :read-only avec la balise HTML <textarea> au survol :
Exemple du sélecteur CSS :read-only avec la balise HTML <textarea> et le cas de survol
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
textarea:read-only {
background: #ffffff;
}
textarea:read-only:hover {
cursor: not-allowed;
background: #8ebf42;
}
</style>
</head>
<body>
<h2>:read-only selector example</h2>
<textarea cols="40" rows="5" readonly>Here is an example of :read-only selector on hover.</textarea>
</body>
</html>Exemple du sélecteur :read-only avec la balise HTML <div> et les pseudo-éléments :after, :before :
Exemple de la pseudo-classe CSS :read-only avec les pseudo-éléments :before, :after
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
div:read-only:hover {
background-color: #eee;
}
div:read-only:before,
div:read-only:after {
content: " / ";
padding: 10px;
color: #1c87c9;
font-size: 30px;
}
</style>
</head>
<body>
<h2>:read-only selector example</h2>
<div readonly>Here is an example of :read-only selector on hover.</div>
<br />
<div contenteditable="true">Example of a contenteditable paragraph! Just click and edit!</div>
</body>
</html>