CSS :disabled 疑似クラスと[disabled]属性セレクタのどちらを使うべきか、意見の相違は?
質問
無効化された入力にスタイルを設定しようとしています。私は使用することができます。
.myInput[disabled] { }
または
.myInput:disabled { }
属性セレクタは現代のCSS3の方法で、今後進むべき道なのでしょうか?以前は擬似クラスを使っていたのですが、古い方法でサポートされないのか、どちらも同等で一番好きなものを使えばいいのか、情報が見つかりません。
古いブラウザをサポートする必要はないので (イントラネットのアプリケーションです)、そうしています。
- 属性はより新しく、より優れています。
- 擬似クラスはまだ行くべき道です
- 好きなほうを選ぶ
- 技術的な理由でどちらか一方を使う
どのように解決するのですか?
<ブロッククオート属性セレクタは、現代のCSS3の方法であり、今後進むべき道なのか?
<ブロッククオート- 属性はより新しく、より良い
いいえ、実は属性セレクタは
CSS2
の頃からあり、また
disabled
属性自体は
HTML 4
. 私の知る限りでは
:disabled
擬似クラスが導入されたのは
セレクタ 3
で導入され、擬似クラスはより新しいものになりました。
- どちらかを使う技術的な理由がある。
はい、ある程度は。
属性セレクタでは、スタイリングしているドキュメントが
disabled
属性が使用されているという知識に依存しています。理論的には、HTML でないものをスタイリングする場合、無効化されたフィールドは
disabled
属性を用いて表現されないかもしれません。例えば、それは
enabled="false"
のようなものです。HTML の将来のエディションでは、有効/無効の状態を表すために異なる属性を使用する新しい要素が導入される可能性があり、それらの要素は
それらの要素は [disabled]
属性セレクタにはマッチしないでしょう。
は
:disabled
擬似クラスは、セレクタを作業中のドキュメントから切り離します。仕様では、単に無効になっている要素を対象とし、要素が有効か無効か、あるいはそのどちらでもないかは
の代わりにドキュメント言語によって定義されます。
:
何が有効な状態、無効な状態、そしてユーザーインターフェースの要素を構成するかは、言語に依存しています。典型的な文書では、ほとんどの要素は
:enabled
でもなく:disabled
.
つまり、擬似クラスを使用すると、UAはスタイリングしている文書に基づいてどの要素にマッチするかを自動的に判断するので、どのようにマッチするかを指示する必要がありません。逆に、属性セレクタは
disabled
属性を持つあらゆる要素にマッチし、その要素が実際に有効か無効かをサポートしているかどうかに関係なく、例えば
div
. このような非標準的な動作に依存する多くの最新のフレームワークを使用している場合、属性セレクタを使用する方がよいでしょう。
DOMの観点では、私は
disabled
プロパティを設定すると、その HTML 要素の
disabled
属性も変更されます。つまり、どちらのセレクタでも DOM 操作に違いはありません。ブラウザ依存なのかどうかは分かりませんが
はここでいじくる
で、すべての主要なブラウザの最新バージョンでそれを実証しています。
// The following statement removes the disabled attribute from the first input
document.querySelector('input:first-child').disabled = false;
ほとんどの場合、HTMLをスタイリングすることになるでしょうから、このどれもがあなたにとって何の違いもないかもしれませんが、もしブラウザの互換性が問題でなければ、私は
:enabled
と
:disabled
以上
:not([disabled])
と
[disabled]
というのは、擬似クラスは属性セレクタにはないセマンティクスを持っているからです。私はそのような純粋主義者なのです。
関連
-
[CSSチュートリアル】シングルセレクトの折りたたみメニュー機能を実現するCSS
-
[CSSチュートリアル】CSSカウンターを使った数字の並びの美化方法
-
[CSSチュートリアル】空間均等性の問題を解決する2つの方法
-
[css3]CSS3は本当にSCSSに取って代わるのだろうか?
-
[解決済み] 最初の要素にクラスを指定するCSSセレクタ
-
[解決済み] 特定のクラスや属性を持たない要素を選択するCSSセレクタは書けますか?
-
[解決済み】チェックしたラジオボタンのラベルをCSSセレクタで指定する方法
-
[解決済み】CSSセレクタでクラスとIDを結合する方法は?
-
[解決済み] Css擬似クラス input:not(disabled)not:[type="submit"]:focus。
-
[解決済み] :後 vs. ::後
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
cssで背景色の半透明化を実現する2つの方法
-
[CSSチュートリアル】CSSのトリッキーなグラデーションで高度な背景光アニメーションの感覚を実現
-
[CSSチュートリアル】CSSスコープ(スタイル分割)の使い方まとめ
-
[css3]ピュアCSS3でdivのinとoutの効果を順番に実現する
-
[css3] scss変数の値を実行時に変更するcss3 var()の使用方法を説明します。
-
[CSSチュートリアル】タイトルを上部に配置するスティッキーレイアウトを実現するためのCSS
-
[CSSチュートリアル】子要素のmargin-topが親要素の移動を引き起こす問題解決
-
[CSSチュートリアル】空間均等性の問題を解決する2つの方法
-
[CSSチュートリアル】CSSでマウスの位置をマッピングし、マウスの動きでページ要素を制御する効果を実現する(コード例)
-
[CSSチュートリアル]モバイルにおけるviewportの具体的な使い方