:read-only
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.
The :read-only
CSS pseudo-class selects elements (such as certain <input>
types and <textarea>
) that are not editable by the user. Elements on which the HTML attribute readonly
doesn't have an effect (such as <input type="radio">
, <input type="checkbox">
, and all other non-form elements) are also selected by the :read-only
pseudo-class. In fact, :read-only
matches anything that :read-write
doesn't match, making it equivalent to :not(:read-write)
.
Try it
Syntax
:read-only {
/* ... */
}
Examples
Confirming form information using read-only or read-write controls
One use of read-only form controls is to allow the user to check and verify information that they may have entered in an earlier form (for example, shipping details), while still being able to submit the information along with the rest of the form. We do just this in the example below.
The :read-only
pseudo-class is used to remove all the styling that makes the inputs look like clickable fields, making them look more like read-only paragraphs. The :read-write
pseudo-class on the other hand is used to provide some nicer styling to the editable <textarea>
.
input:read-only,
textarea:read-only {
border: 0;
box-shadow: none;
background-color: #ddd;
}
textarea:read-write {
outline: 1px dashed red;
outline-offset: 2px;
border-radius: 5px;
}
Styling read-only non-form controls
This selector doesn't just select <input>
/<textarea>
elements — it will select any element that cannot be edited by the user.
<p contenteditable>This paragraph is editable; it is read-write.</p>
<p>This paragraph is not editable; it is read-only.</p>
p {
font-size: 150%;
padding: 5px;
border-radius: 5px;
}
p:read-only {
background-color: red;
color: white;
}
p:read-write {
background-color: lime;
}
Specifications
Specification |
---|
HTML Standard # selector-read-only |
Selectors Level 4 # rw-pseudos |
Browser compatibility
BCD tables only load in the browser
See also
:read-write
- HTML
contenteditable
attribute