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;
}
Спецификации
Совместимость с браузерами
| Настольные | Мобильные | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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