CSS 表示プロパティをデフォルト値にリセットする 質問する

CSS 表示プロパティをデフォルト値にリセットする 質問する

表示プロパティをデフォルト値で上書きすることは可能ですか? たとえば、あるスタイルで none に設定し、別のスタイルでそれをデフォルト値で上書きしたい場合などです。

それとも、その要素のデフォルトを調べてそれに設定するしか方法がないのでしょうか? 要素が通常ブロックなのか、インラインなのか、それとも他のものなのかを知らなくても済むようにしたいのですが...

ベストアンサー1

ブラウザのデフォルトのスタイルはユーザーエージェントスタイルシートで定義されており、そのソースは次の通りです。ここ残念ながら、カスケードと継承レベル 3 仕様スタイルプロパティをブラウザのデフォルトにリセットする方法は提案されていないようです。ただし、このためのキーワードを再導入する予定があります。カスケードと継承レベル 4— ワーキンググループはまだこのキーワードの名前を決めていません(リンクには現在 とありますrevertが、最終版ではありません)。 のブラウザサポートに関する情報はrevertホームページ

レベル3の仕様では、initialキーワード、プロパティをその初期値デフォルト値にリセットしますCSSで定義されているブラウザの定義どおりではないの初期値displayは です。inlineこれは指定されますここキーワードinitialはブラウザのデフォルトではなく、その値を参照します。仕様自体は、all財産:

たとえば、作成者がall: initial要素に を指定すると、カスケードの作成者、ユーザー、またはユーザー エージェント レベルにルールが指定されていないかのように、すべての継承がブロックされ、すべてのプロパティがリセットされます。

これは、外部ページのスタイルを継承したくないページに含まれる「ウィジェット」のルート要素に役立ちます。ただし、その要素に適用された「デフォルト」スタイル (たとえば、display: blockなどのブロック要素の UA スタイル シートからのもの<div>) もすべて破棄されることに注意してください。

したがって、現時点で純粋な CSS を使用する唯一の方法は、ブラウザのデフォルト値を調べて、それを手動で設定することだと思います。

div.foo { display: inline-block; }
div.foo.bar { display: block; }

(上記の代替案としては がありますdiv.foo:not(.bar) { display: inline-block; }が、オーバーライドではなく元のセレクターの変更が必要になります。)

おすすめ記事