What is the `read-only` and `read-write` pseudo-classes?
Jul 27, 2025 am 04:12 AM:read-only and :read-write are pseudo-classes used to style elements based on whether they are editable. 1.:read-only is used for non-editable elements such as input boxes with readonly attributes; 2.:read-write is used for editable elements such as normal text boxes and contenteditable areas; 3. They are suitable for form design, dynamic interfaces and conditional styles, but they need to be used with HTML attributes to ensure correct functions; 4. Modern browsers have good support, but early IE versions may not be compatible.
In CSS, :read-only
and :read-write
are pseudo-classes that let you style elements based on whether they're editable or not. They might not be as commonly used as :hover
or :focus
, but they come in handy when dealing with form inputs and contenteditable elements.

When to Use :read-only
This pseudo-class targets elements that are not editable by the user. That includes input fields with the readonly
attribute, or elements like <div> or <code><span></span>
that aren't meant for editing.
For example:

<input type="text" value="I'm read-only" readonly>
You can style it like this:
input:read-only { background-color: #f0f0f0; border: 1px solid #ccc; }
It's useful when you want to visually distinguish non-editable fields from regular ones — maybe to make them look more static or grayed out.

Note: Just because an element is styled with :read-only
, it doesn't mean it's actually locked — always use the readonly
attribute in HTML for real behavior control.
When to Use :read-write
On the flip side, :read-write
applies to elements users can edit. This includes standard text inputs, textareas, and even elements with the contenteditable
attribute set.
Here's a basic example:
<textarea>I'm editable</textarea> <div contenteditable="true">Edit me too!</div>
And the corresponding CSS:
:read-write { border: 2px dashed #4caf50; }
This selector is especially helpful if you want to apply consistent styles across all editable areas — say, adding a subtle highlight or different padding.
Also, keep in mind that even password fields ( <input type="password">
) are considered :read-write
, so your styles will apply there too unless you specifically exclude them.
Practical Use Cases
Here are a few places where these pseudo-classes can really shine:
- Form design: Highlight editable vs non-editable fields to improve UX.
- Dynamic interfaces: Style contenteditable regions differently to signal interaction.
- Conditional styling: Combine with other selectors (like
:focus
or:invalid
) to build smarter UI rules.
For example, if you're building a CMS where some fields are locked after approval, using :read-only
makes it easy to give visual feedback without extra classes.
Another trick: You can invert the logic and write something like:
input:not(:read-only) { /* Styles for editable inputs only */ }
That gives you more precision control without writing extra markup.
Browser Support and Caveats
These pseudo-classes are well-supported in modern browsers including Chrome, Firefox, Safari, and Edge. However, older browsers like Internet Explorer (especially versions before IE12) may not support them fully.
Also, keep in mind:
-
:read-only
and:read-write
don't change behavior, only appear. - Always pair visual cues with actual attributes (
readonly
,disabled
, etc.) for accessibility and functionality.
So while they're not essential for every project, they're definitely worth having in your CSS toolkit when working with forms or editable content.
Basically that's it.
The above is the detailed content of What is the `read-only` and `read-write` pseudo-classes?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Thevertical-alignpropertyinCSSalignsinlineortable-cellelementsvertically.1.Itadjustselementslikeimagesorforminputswithintextlinesusingvalueslikebaseline,middle,super,andsub.2.Intablecells,itcontrolscontentalignmentwithtop,middle,orbottomvalues,oftenu

accent-color is an attribute used in CSS to customize the highlight colors of form elements such as checkboxes, radio buttons and sliders; 1. It directly changes the default color of the selected state of the form control, such as changing the blue check mark of the checkbox to red; 2. Supported elements include input boxes of type="checkbox", type="radio" and type="range"; 3. Using accent-color can avoid complex custom styles and extra DOM structures, and maintain native accessibility; 4. It is generally supported by modern browsers, and old browsers need to be downgraded; 5. Set accent-col

InstallDartSassvianpmafterinstallingNode.jsusingnpminstall-gsass.2.CompileSCSStoCSSusingthecommandsassinput.scssoutput.css.3.Usesass--watchinput.scssoutput.csstoauto-compileonsave.4.Watchentirefolderswithsass--watchscss:css.5.Usepartialswith_prefixfo

To change the text color in CSS, you need to use the color attribute; 1. Use the color attribute to set the text foreground color, supporting color names (such as red), hexadecimal codes (such as #ff0000), RGB values (such as rgb(255,0,0)), HSL values (such as hsl(0,100%,50%)), and RGBA or HSLA with transparency (such as rgba(255,0,0,0.5)); 2. You can apply colors to any element containing text, such as h1 to h6 titles, paragraph p, link a (note the color settings of different states of a:link, a:visited, a:hover, a:active), buttons, div, span, etc.; 3. Most

CSStransitionsenablesmoothpropertychangeswithminimalcode,idealforhovereffectsandinteractivefeedback.1.Usethesyntaxtransition:propertydurationtiming-functiondelay;todefinetransitions,liketransition:background-color0.3sease0.1s;.2.Specifytransition-pro

UseautomatedtoolslikePurgeCSSorUnCSStoscanandremoveunusedCSS;2.IntegratepurgingintoyourbuildprocessviaWebpack,Vite,orTailwind’scontentconfiguration;3.AuditCSSusagewithChromeDevToolsCoveragetabbeforepurgingtoavoidremovingneededstyles;4.Safelistdynamic

The style placement method needs to be selected according to the scene. 1. Inline is suitable for temporary modification of single elements or dynamic JS control, such as the button color changes with operation; 2. Internal CSS is suitable for projects with few pages and simple structure, which is convenient for centralized management of styles, such as basic style settings of login pages; 3. Priority is given to reuse, maintenance and performance, and it is better to split external link CSS files for large projects.

Astackingcontextisaself-containedlayerinCSSthatcontrolsthez-orderofoverlappingelements,wherenestedcontextsrestrictz-indexinteractions;itiscreatedbypropertieslikez-indexonpositionedelements,opacity
