Spec-Zone.ru › CSS

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

Базовая поддержка Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и во многих версиях браузеров. Она доступна во всех браузерах с июля 2020 года.

:read-only — CSS-псевдокласс, который выбирает элементы (например, определённые типы <input> и <textarea>), которые пользователь не может редактировать. Псевдокласс :read-only также выбирает элементы, на которые не влияет атрибут HTML readonly (например, <input type="radio">, <input type="checkbox"> и все остальные элементы, не относящиеся к формам). Фактически, :read-only соответствует всему, чему не соответствует :read-write, поэтому он эквивалентен :not(:read-write).

Попробуйте

label,
input[type="submit"] {
  display: block;
  margin-top: 1em;
}

*:read-only {
  font-weight: bold;
  color: indigo;
}
<p>Please fill your details:</p>

<form>
  <label for="email">Email Address:</label>
  <input id="email" name="email" type="email" value="test@example.com" />

  <label for="note">Short note about yourself:</label>
  <textarea id="note" name="note">Don't be shy</textarea>

  <label for="pic">Your picture:</label>
  <input id="pic" name="pic" type="file" />

  <input type="submit" value="Submit form" />
</form>

Синтаксис

:read-only {
  /* ... */
}

Примеры

Проверка данных формы с помощью элементов управления только для чтения и доступных для редактирования

Элементы управления формой, доступные только для чтения, позволяют пользователю проверить и подтвердить сведения, которые он мог ввести в предыдущую форму (например, данные доставки), и при этом отправить их вместе с остальными данными формы. Именно это мы и сделаем в примере ниже.

Псевдокласс :read-only используется, чтобы убрать стилизацию, из-за которой поля ввода выглядят как кликабельные, и сделать их похожими на абзацы только для чтения. Псевдокласс :read-write, в свою очередь, используется для более привлекательного оформления доступных для редактирования элементов <textarea>.

<form>
  <fieldset>
    <legend>Check shipping details</legend>
    <div>
      <label for="name">Name: </label>
      <input id="name" name="name" type="text" value="Mr Soft" readonly />
    </div>
    <div>
      <label for="address">Address: </label>
      <textarea id="address" name="address" readonly>
23 Elastic Way,
Viscous,
Bright Ridge,
CA
</textarea>
    </div>
    <div>
      <label for="postal-code">Zip/postal code: </label>
      <input
        id="postal-code"
        name="postal-code"
        type="text"
        value="94708"
        readonly />
    </div>
  </fieldset>

  <fieldset>
    <legend>Final instructions</legend>
    <div>
      <label for="sms-confirm">Send confirmation by SMS?</label>
      <input id="sms-confirm" name="sms-confirm" type="checkbox" />
    </div>
    <div>
      <label for="instructions">Any special instructions?</label>
      <textarea id="instructions" name="instructions"></textarea>
    </div>
  </fieldset>

  <div><button type="submit">Amend details and submit</button></div>
</form>
body {
  font-family: "Josefin Sans", sans-serif;
  margin: 20px auto;
  max-width: 460px;
}

fieldset {
  padding: 10px 30px 0;
  margin-bottom: 20px;
}

legend {
  color: white;
  background: black;
  padding: 5px 10px;
}

fieldset > div {
  margin-bottom: 20px;
  display: flex;
  justify-content: space-between;
}

button,
label,
input[type="text"],
textarea {
  display: block;
  font-family: inherit;
  font-size: 100%;
  margin: 0;
  box-sizing: border-box;
  padding: 5px;
  height: 30px;
}

input[type="text"],
textarea {
  width: 50%;
}

textarea {
  height: 110px;
  resize: none;
}

label {
  width: 40%;
}

input:hover,
input:focus,
textarea:hover,
textarea:focus {
  background-color: #eeeeee;
}

button {
  width: 60%;
  margin: 20px auto;
}
input:read-only,
textarea:read-only {
  border: 0;
  box-shadow: none;
  background-color: #dddddd;
}

textarea:read-write {
  outline: 1px dashed red;
  outline-offset: 2px;
  border-radius: 5px;
}

Стилизация элементов, не относящихся к формам, доступных только для чтения

Этот селектор выбирает не только элементы <input>/<textarea> — он выбирает любой элемент, который пользователь не может редактировать.

<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;
}

Спецификации

Спецификация
HTML
# selector-read-only
Selectors Level 4
# read-only-pseudo

Совместимость с браузерами

Настольные Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android WebView на iOS
read-only
1
13
78
1.5
9
4
18
79
4
10.1
3.2
1.0
4.4
3.2

См. также

  • :read-write
  • Атрибут HTML contenteditable

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors/:read-only

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API