0

重複の可能性:
CSS ファイルのすべてのプロパティに !important を設定するためのショートカットはありますか?

私には独特の問題があります。css では、既に宣言されているすべての要素をオーバーライドしますが、すべてのスタイルで他の言及されたスタイルシートをオーバーライドし!important たいとしましょう。まあ、通常、次のように html ファイルにオーバーライドを 2 番目に配置します。

<link rel="stylesheet" type="text/css" href="mystyle.css">
<link rel="stylesheet" type="text/css" href="override.css">

しかし、何らかの理由でこれが機能していません。具体的には、基本的な css スタイルを追加するクラスを追加しています。このような:

<div class="no-border-right float-left no-margin-top"></div>

そして私のCSSで:

.no-border-right {
    border-right: 0px solid transparent;
}

.float-left {
    float: left;
}

.no-margin-top {
    margin-top: 0;
}

しかし、それはまだオーバーライドされていません。すべての要素に追加するだけ!importantですが、問題は、14 GB ライブラリを既に構成していることです。(私は退屈しているときにのみこれに取り組んでいます... hehe :P) それで!important、すべての要素にどのように追加するのか疑問に思っていました。お気に入り:

* {
    ...!important;
}

多分それでさえない...何かアイデアはありますか?

4

5 に答える 5

1
sed -i 's/;$/ !important;/' override.css other.css css.css files.css

物理的に追加するだけです。!importantなぜ本当に素晴らしいアイデアではないのかについては、他の回答を読んでください。

于 2012-11-14T00:09:44.893 に答える
1

おそらく、あなたの新しいセレクターは、mystyle.css にあるものよりも十分な優先度を持っていませんか?

CSS/トレーニング/セレクターの優先度

CSS: セレクターの優先度 / 特異性を理解する

!important はこれらの計算をオーバーライドしますが、標準的な方法を優先して、可能であれば避けるべきハックです。

于 2012-11-14T00:10:10.703 に答える
0

それは悪い考えです... 以下にリンクした記事を読んでください。

それにもかかわらず、答えはまだノーです。CSS 内でこれを行う方法はありません。ただし、CSS ファイルを (HTML に) 含める順序により、override.css が mystyle.css よりも優先されます。CSS ファイル内のすべての宣言に重要を追加することは、あからさまな誤用です。使用するのが適切な場合と使用すべきでない場合の詳細については、Chris Coyier によるこの記事をお読みください。

于 2012-11-14T00:07:58.010 に答える
0

前述のスタイルまたは実装されたスタイルをオーバーライドする場合は、階層の上位にあるセレクターを使用します。具体的になるたびに、階層の上位にある CSS スタイルが上書きされます。

例えば:

HTML:
   <div class="container">
    <div class="old-style stale vintage">
      <div class="new-style override-old-style">
        <div class="no-border-right float-left no-margin-top">
        </div>
       </div>
    </div>   
   </div>

 CSS:
  .no-border-right{border-right: 0px solid transparent;}

  .new-style .float-left{float: left;}

  .old-style .no-margin-top{margin-top: 0;}

.new-style .float-left は .no-border-right をオーバーライドする必要があります。.old-style .no-margin-top は、両方のスタイルをオーバーライドする必要があります。.no-border-right .float left など、同じレベルのスタイルを使用しようとすると、同じレベルのスタイルがキャンセルされます。スタイル シート内を下に移動するにつれて、スタイルの詳細な説明が必要になります。新しいセレクターを使用して、オーバーライドしたい新しいスタイルを追加します。同じサイトで作業している開発者チームが使用するスタイルシートで !important を使用することで、この方法を学びました。それはきれいではありません。

クラスよりも具体的にする必要があり、特定の要素を変更する場合は、ID を使用してください。私は、ほとんどの Web 開発者がそれを見下していることを知っています。しかし、注意して取り扱い、散発的に使用すれば、それらは十分に活用できます。彼らに夢中にならないでください。パーソナライゼーションやモーダルなどで使用するのに適しています。繰り返しますが、取り扱いには注意してください。

何よりも、!important を最後の手段としてオーバーライドしてください。非常ボタンとして想像してみてください。差し迫った緊急事態が発生した場合にのみ使用してください。

于 2012-11-14T02:14:40.970 に答える
0

ファイル内のすべての要素に重要な要素を追加する簡単な方法はありません。そうは言っても、それ!importantは本当に悪い考えであり、CSS でスタイルをオーバーライドする本来の機能が損なわれるため、最後の手段としてのみ使用する必要があります。スタイルが前のファイルのスタイルを上書きしない理由は、CSS セレクターの特異性を理解する必要があるためです。最初のファイルのスタイルがより具体的である可能性があります。

の内容を見せてくださいmystyle.css

于 2012-11-14T00:07:01.697 に答える