CSS :read-only — как работает
CSS :read-only: принцип работы, корректный синтаксис, практический сценарий, ограничения, ошибки и актуальная совместимость.
Когда применять
В материале о «:read-only» основное внимание уделено области «псевдоклассы». Псевдокласс :read-only сопоставляет элемент с определённым состоянием или структурным условием. Проверяйте поведение «:read-only» в печатной версии длинного справочного материала, причём измеряйте компонент, а не только весь viewport.
Перед применением «:read-only» сформулируйте ожидаемое поведение, затем не полагайтесь только на hover и сохраняйте эквивалентное состояние клавиатурного фокуса. Для «:read-only» такое сравнение показывает реальную причину изменения.
Синтаксис :read-only
Для демонстрации «:read-only» используется короткий код с наблюдаемым результатом. Сохраните структуру примера, когда будете проверять другое значение.
.button:read-only {
outline: 2px solid #2563eb;
outline-offset: 3px;
}Как работает :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 не должно быть единственным способом увидеть важное действие или информацию — это предметный риск для «:read-only».
Каскад
Непредсказуемое наследование значения из внешнего компонента при использовании «:read-only».
Поддержка
Использование физической стороны там, где нужен логический отступ; для «:read-only» проверьте это отдельно.
Поддержка :read-only
Для «:read-only» таблица собрана из закреплённой версии MDN Browser Compatibility Data. Указанная версия браузера показывает первое заявленное появление базовой поддержки «:read-only»; окончательное решение принимайте по аудитории конкретного проекта.
Спецификация: источник 1, источник 2.
Вопросы о :read-only
Как понять, что «:read-only» выбрано правильно?
«:read-only» выбрано правильно, когда оно решает задачу «выбрать элемент по состоянию, положению или отношению к другим узлам», сохраняет результат в печатной версии длинного справочного материала и проходит предметную проверку: не полагайтесь только на hover и сохраняйте эквивалентное состояние клавиатурного фокуса.
Нужен ли запасной вариант для «:read-only»?
Запасной вариант для «:read-only» нужен, если целевой браузер или режим не обеспечивает выбранное поведение. Без улучшения «:read-only» должно сохранять смысл, содержимое и основное действие.
Спецификации и источники
Синтаксис и статус проверяются по HTML Living Standard, спецификациям CSS и MDN Browser Compatibility Data. Примеры и объяснения подготовлены для этого сервиса.