CSSの:read-onlyで編集不可の要素にスタイルを適用する方法をわかりやすく解説

スポンサーリンク

:read-onlyは、フォーム要素が読み取り専用(編集不可)の場合に、その要素に対して適用されるスタイルを指定する擬似クラスです。フォーム内で値を変更できないフィールドに、視覚的な区別をつけたい場合に便利です。

スポンサーリンク

:read-onlyの値とその効果の一覧

  • :read-only: フォーム要素が読み取り専用のときに適用されるスタイルを指定します。

注意点と関連情報

:read-onlyは、inputtextareaなどのフォーム要素に適用されます。
読み取り専用の属性(readonly)が設定されている要素のみ対象となり、スタイルが適用されます。
disabled属性を持つ要素には適用されないため、disabledreadonlyの違いに注意してください。

:read-onlyが効かない理由として考えられること

対象の要素がフォーム要素でない

:read-onlyは、主にフォーム要素(<input><textarea>など)の読み取り専用状態に適用されます。これら以外の要素には適用されません。
対策:対象の要素がフォーム要素であり、かつreadonly属性が正しく設定されていることを確認します。フォーム以外の要素には、この擬似クラスは適用されないため、必要に応じて適切なクラスやスタイルで制御します。

readonly属性が設定されていない

:read-onlyは、readonly属性が設定された要素に対してのみ適用されます。readonly属性がないフォーム要素には、この擬似クラスは機能しません。
対策:対象のフォーム要素にreadonly属性が正しく設定されているか確認します。例: <input type="text" readonly>のように指定します。

表示例

CSS:read-only

この例では、readonly属性が付いた入力フィールドに対して、背景色を淡い灰色にし、ボーダーの色を薄いグレーに変更します。また、テキストの色も変更して、読み取り専用であることが視覚的に分かるようにしています。

HTMLコード

<div class="css-sample-container">
    <input type="text" class="css-sample-input" value="編集可能">
    <input type="text" class="css-sample-input css-sample-read-only" value="読み取り専用" readonly>
</div>

CSSコード

.css-sample-read-only:read-only {
    background-color: #f0f0f0;
    border-color: #999;
    color: #555;
}

表示結果

まとめ

  • :read-onlyは、読み取り専用のフォーム要素に対してスタイルを指定できる。
  • フォーム要素にreadonly属性がある場合にのみ適用される。
  • disabledとは異なり、読み取り専用ではあるが要素はアクティブで、選択が可能である。