ホームページ > ウェブフロントエンド > CSSチュートリアル > CSS テキスト装飾の継承を効果的にオーバーライドするにはどうすればよいですか?

CSS テキスト装飾の継承を効果的にオーバーライドするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-17 16:03:13
オリジナル
876 人が閲覧しました

How Can I Effectively Override CSS Text Decoration Inheritance?

CSS テキスト装飾の継承を理解する

CSS では、テキスト装飾をオーバーライドするのが難しい場合があります。テキスト装飾スタイルを持つ親要素が適用されると、その装飾がすべての子要素に継承されます。これにより、特定の要素の装飾を制御しようとするときに混乱が生じる可能性があります。

テキスト装飾をオーバーライドする場合

次の CSS が使用されている例を考えてみましょう。

ul > li {
    text-decoration: none;
}
ul > li.u {
    text-decoration: underline;
}
ul > li > ul > li {
    text-decoration: none;
}
ul > li > ul > li.u {
    text-decoration: underline;
}
ログイン後にコピー

そして HTML は次のとおりです

<ul>
  <li>Should not be underlined</li>
  <li class="u">Should be underlined
    <ul>
      <li>Should not be underlined</li>
      <li class="u">Should be underlined</li>
    </ul>
  </li>
</ul>
ログイン後にコピー

ここで、期待される動作は、入れ子になったリスト項目には装飾が適用されず、u クラスを持つ親項目には下線が付けられることです。ただし、結果はすべてのリスト項目に下線が付いていることを示しています。

説明

この動作の理由は、CSS テキスト装飾の性質にあります。他のフォント プロパティとは異なり、text-decoration はすべてのネストされた要素を含む要素全体に適用されます。これは、親コンテナで定義された装飾が、独自のテキスト装飾スタイルに関係なく、その子に再帰的に適用されることを意味します。

この動作は CSS21 仕様に文書化されています。

Text decorations on inline boxes are drawn across the entire element, going across any descendant elements without paying any attention to their presence. The 'text-decoration' property on descendant elements cannot have any effect on the decoration of the element.
ログイン後にコピー

結論

CSS でテキスト装飾をオーバーライドするには、この継承動作を理解する必要があります。特定の要素が親から装飾を継承しないようにするには、ネストの各レベルに対して text-decoration: none を定義する必要があります。

以上がCSS テキスト装飾の継承を効果的にオーバーライドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート