LoginSignup
1
1

More than 3 years have passed since last update.

使ってはいけない `:read-only` 疑似クラス

Last updated at Posted at 2021-02-19

はじめに

煽りタイトルです。
実際は単純に汎用的なフォームコントロールのクラスをつくって使いまわしていたら失敗した話です。

何が言いたいかというとセレクタをいろんな要素に使い回す場合は :read-only より [readonly] にしたほうがいいのかもしれないということです。

やりたかったこと

以下のような汎用的なクラスをつくってinputやselect要素で使いまわしたかった。
(プロパティは適当です)

CSS
.control {
  background: #fff;
  border: solid 1px #999;
  border-radius: 4px;
}
.control:read-only {
  color: red;
}
HTML
<div>
  <input class="control" value="writable value" />
</div>
<div>
  <input class="control" value="readonly value" readonly />
</div>
<div>
  <select class="control">
    <option>selectable value</option>
  </select>
</div>

期待した表示

なにが起きたか

:read-only 疑似クラスは readonly 属性が利用できないselect要素など(divやspanなどもすべて)マッチするようで、以下のようになりました

実際の表示

最終的な実装

readonly 属性が指定されているときに表示が変わっていればいいので属性セレクタを使用することにしました。

.control {
  background: #fff;
  border: solid 1px #999;
  border-radius: 4px;
}
.control[readonly] {
  color: red;
}
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1