ホームページ  >  記事  >  ウェブフロントエンド  >  CSS のスタイル オーバーライド ルールの詳細な紹介

CSS のスタイル オーバーライド ルールの詳細な紹介

黄舟
黄舟オリジナル
2017-07-22 10:36:04988ブラウズ

CSSの正式名称が「Cascading Style Sheet」であることは誰もが知っていますが、「カスケード」という言葉の意味を知らない人も多いと推測されます。実際、「カスケード」とは、要素に複数のスタイルが適用され、同じ名前のスタイル属性が存在する場合、ブラウザはそれらから属性値を選択する必要があります。このプロセスは「カスケード」と呼ばれます。スタイル オーバーレイ (この名前の方が一般的です) は特定のルールに従います。私は以前からこのルールを漠然と理解していましたが、最近になって「CSS: The Missing Manual」を読んで初めて明確になりました。以下は私の勉強メモの一部です。

まず、多くの状況で要素に複数のスタイルが適用されることを明確にする必要があります。スタイル適用範囲のルールも、さまざまな状況に応じて決定する必要があります。具体的なルールは次のとおりです。 。

ルール 1: 継承によりスタイルの競合が発生した場合、最も近い祖先が優先されます。

CSS の継承メカニズムにより、要素はそれを含む祖先要素からスタイルを継承できます。次の状況を考えてみましょう:

<html>
<head>
<title>rule
 1</title>
<style>
body
 {color:black;}
p
 {color:blue;}
</style>
</head>
<body>
    <p>welcome
 to <strong>gaodayue的网络日志</strong></p>
</body>
</html>


strong はそれぞれ body と p から color 属性を継承しますが、p は継承ツリー上にあるためです。はstrongに近いため、strongのテキストはpの青色を継承することになります。

规则二:继承的样式和直接指定的样式冲突时,直接指定的样式获胜。

在上面的例子中,假如还指定了strong元素的样式,如:

strong
 {color:red;}

那么根据规则二,strong中的文字最终显示为红色。

规则三:直接指定的样式发生冲突时,样式权值高者获胜。

样式的权值取决于样式的选择器,权值定义如下表。

CSSセレクター ウェイト
タグセレクター 1
クラスセレクター 10
IDセレクター 100
インラインスタイル 1000
疑似要素 (:first-child など) 1
疑似クラス (:link など) 10

可以看到,内联样式的权值>>ID选择器>>类选择器>>标签选择器,除此以外,后代选择器的权值为每项权值之和,比如”#nav .current a”的权值为100 + 10 + 1 = 111。

规则四:样式权值相同时,后者获胜。

考虑下面这种情况

<pclass="byline">Written
 by <aclass="email"href="mailto:jean@cosmofarmer.
 com">Jean
 Graine de Pomme</a></p>
.byline
 a {color:red;}
p
 .email {color:blue;}

“.byline a”与”p .email”都直接指定了上面的a元素,且权值都为11,根据规则四,最终显示蓝色。

由于样式表可以是外部的,也可以是内部的,规则四提醒我们要注意外部样式表引入的顺序(及2cdf5bf648cf2f33323966d7f58a7f3f元素的顺序),以及外部样式表与内部样式表的出现位置。一般来说,内部样式表出现在所有外部样式表的引入之后,一般是在9c3bca370b5104690d9ef395f2c5f8d1之前。

规则五:!important的样式属性不被覆盖。

!important可以看做是万不得已的时候,打破上述四个规则的”金手指”。如果你一定要采用某个样式属性,而不让它被覆盖的,可以在属性值后加上!important,以规则四的例子为例,”.byline a {color:red !important;}”可以强行使链接显示红色。大多数情况下都可以通过其他方式来控制样式的覆盖,不能滥用!important。

以上がCSS のスタイル オーバーライド ルールの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。