CSS :read-only 擬似クラス
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2020年7月.
:read-only は CSS の擬似クラスで、ユーザーが編集できない要素(特定の <input> 型や <textarea> など)を表します。HTML の readonly 属性が適用されない要素(<input type="radio">、<input type="checkbox">、他のすべてのフォーム以外の要素など)も、:read-only 擬似クラスによって選択されます。実際、:read-only は :read-write に一致しないすべての要素に一致するため、:not(:read-write) と同等となります。
試してみましょう
label,
input[type="submit"] {
display: block;
margin-top: 1em;
}
*:read-only {
font-weight: bold;
color: indigo;
}
<p>あなた自身について記入してください:</p>
<form>
<label for="email">メールアドレス:</label>
<input id="email" name="email" type="email" value="test@example.com" />
<label for="note">短い自己紹介:</label>
<textarea id="note" name="note">恥ずかしがらないで</textarea>
<label for="pic">写真:</label>
<input id="pic" name="pic" type="file" />
<input type="submit" value="フォームを送信" />
</form>
構文
:read-only {
/* ... */
}
例
>読み取り専用/読み書きコントロールによるフォーム情報の確認
読み取り専用のフォームコントロールの使用方法の一つは、ユーザーが以前のフォームに入力した情報 (例えば、配送方法の詳細など) をチェックして確認しながら、フォームの残りの部分と一緒に情報を送信することができるようにすることです。以下の例では、これを実現しています。
:read-only 擬似クラスは、入力欄をクリック可能なフィールドのように見せるスタイル付けをすべて削除するために使用されており、読み取り専用の段落のように見えます。一方、 :read-write 擬似クラスは、編集可能な <textarea> により良いスタイル付けを行うために使用されています。
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>この段落は編集可能です。読み書き可です。</p>
<p>この段落は編集できません。読み取り専用です。</p>
p {
font-size: 150%;
padding: 5px;
border-radius: 5px;
}
p:read-only {
background-color: red;
color: white;
}
p:read-write {
background-color: lime;
}
仕様書
| Specification |
|---|
| HTML> # selector-read-only> |
| Selectors Level 4> # read-only-pseudo> |
ブラウザーの互換性
関連情報
:read-write- HTML の
contenteditable属性