CSS-справочникВ стандарте

CSS :read-only — как работает

CSS :read-only: принцип работы, корректный синтаксис, практический сценарий, ограничения, ошибки и актуальная совместимость.

Когда применять

В материале о «:read-only» основное внимание уделено области «псевдоклассы». Псевдокласс :read-only сопоставляет элемент с определённым состоянием или структурным условием. Проверяйте поведение «:read-only» в печатной версии длинного справочного материала, причём измеряйте компонент, а не только весь viewport.

Практическое правило для :read-only

Перед применением «:read-only» сформулируйте ожидаемое поведение, затем не полагайтесь только на hover и сохраняйте эквивалентное состояние клавиатурного фокуса. Для «:read-only» такое сравнение показывает реальную причину изменения.

Синтаксис :read-only

Для демонстрации «:read-only» используется короткий код с наблюдаемым результатом. Сохраните структуру примера, когда будете проверять другое значение.

css
.button:read-only {
  outline: 2px solid #2563eb;
  outline-offset: 3px;
}
Открыть в Playground

Как работает :read-only

Селектор пересчитывается браузером при изменении состояния или структуры DOM. Для «:read-only» проверьте две контрольные точки — момент загрузки ресурса в Network и результат при системной тёмной теме: так видно, на каком этапе появляется итоговое поведение этой темы.

Проверка в проекте

  • Не полагайтесь только на hover и сохраняйте эквивалентное состояние клавиатурного фокуса; результат относится непосредственно к «:read-only».
  • Убедиться, что решение не зависит от случайной высоты viewport при разборе «:read-only».
  • Проверьте «:read-only» в печатной версии длинного справочного материала через момент загрузки ресурса в Network и запишите наблюдаемое изменение.
Выбор конструкции

Используйте «:read-only», когда требуется выбрать элемент по состоянию, положению или отношению к другим узлам; подтвердите выбор предметной проверкой: не полагайтесь только на hover и сохраняйте эквивалентное состояние клавиатурного фокуса. Для «:read-only» более простой вариант предпочтителен, если он сохраняет тот же смысл и поведение.

Практика с :read-only

Соберите «:read-only» на контрольной странице и проверьте предметное условие: не полагайтесь только на hover и сохраняйте эквивалентное состояние клавиатурного фокуса. Затем для «:read-only» замените содержимое длинным и сузьте контейнер до 320 px.

псевдоклассы:read-only

Сценарий: в печатной версии длинного справочного материала.

Ошибки при работе с :read-only

01

Доступность

Состояние :read-only не должно быть единственным способом увидеть важное действие или информацию — это предметный риск для «:read-only».

02

Каскад

Непредсказуемое наследование значения из внешнего компонента при использовании «:read-only».

03

Поддержка

Использование физической стороны там, где нужен логический отступ; для «:read-only» проверьте это отдельно.

Поддержка :read-only

Для «:read-only» таблица собрана из закреплённой версии MDN Browser Compatibility Data. Указанная версия браузера показывает первое заявленное появление базовой поддержки «:read-only»; окончательное решение принимайте по аудитории конкретного проекта.

Chromeс версии 1Edgeс версии 13Firefoxс версии 78Safariс версии 4

Спецификация: источник 1, источник 2.

Вопросы о :read-only

Как понять, что «:read-only» выбрано правильно?

«:read-only» выбрано правильно, когда оно решает задачу «выбрать элемент по состоянию, положению или отношению к другим узлам», сохраняет результат в печатной версии длинного справочного материала и проходит предметную проверку: не полагайтесь только на hover и сохраняйте эквивалентное состояние клавиатурного фокуса.

Нужен ли запасной вариант для «:read-only»?

Запасной вариант для «:read-only» нужен, если целевой браузер или режим не обеспечивает выбранное поведение. Без улучшения «:read-only» должно сохранять смысл, содержимое и основное действие.

Спецификации и источники

Синтаксис и статус проверяются по HTML Living Standard, спецификациям CSS и MDN Browser Compatibility Data. Примеры и объяснения подготовлены для этого сервиса.