プロが教える店舗&オフィスのセキュリティ対策術

CSSは後から記述したものが優先されますが、上書きではなく、無効化することは不可能なのでしょうか?

CakePHPというフレームワークを使って開発をしているのですが、フレームワーク標準のCSSファイルを直接修正せずに、上書き用のCSSファイルにて必要な箇所だけオーバーライドしているのですが、上書きはできても、無効化(定義がなかったことに)する方法がわかりません。

以下、無効化したい箇所の例です。

table tr:nth-child(2n) td {
background: #f5f5f5; /* これを無効化したい */
}

div.view {
float:right;
width:76%; /* これを無効化したい */
border-left:1px solid #666;
padding:10px 2%;
}

フレームワークのCSSファイルを直接編集し、定義を消す、もしくはコメントアウトする以外に、この定義を適用させない方法がありますでしょうか?

A 回答 (2件)

>CSSは後から記述したものが優先されますが、



 違います。カスケーディングのルールに従います。カスケーディングスタイルシートのもっとも根幹部分です。

 すべてのスタイルをソートします。
 重要度でソートされます。
  ユーザーの重要宣言>著者の重要宣言>著者の宣言>ユーザーの宣言>デフォルトの宣言
 詳細度が高いものから優先されます。
 出所による宣言
 最後に出現順位

 よって詳細度を高くするか重要宣言で初期値を指定すれば良いです。

body div table tr:nth-child(2n) td {/* 詳細度0015 */
background: transparent none no-repeat 0% 0% 値 scroll ;/* 初期値 */
}
とか
table tr:nth-child(2n) td {/* 詳細度0014 */
background: transparent none no-repeat 0% 0% 値 scroll important! ;/* 初期値 */
}

6.4 カスケード処理(The cascade) ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2 … )
    • good
    • 1
この回答へのお礼

ありがとうございました。

カスケーディングのルールは理解していたのですが、
「無効化」という発想にとらわれていて、
「初期化」すればよいことに気が付きませんでした。

非常に助かりました。

お礼日時:2012/02/29 17:27

補足です。


順番が問題になるのは、重要度・出所・詳細度が同じ指定が登場したときで、そのときにのみ、後で書かれたもので上書きされます。
 スタイルシートの最後なんて大変なので、最初に書いて置いたら良いです。
 そのとき、それぞれのプロパティには[初期値(Initial)]がありますから、その値を指定すると初期化されます。
'background-color'
 Value: <color> | transparent | inherit
 Initial: transparent
・・・・・・ transparentが初期値です。
★'background-color' ( http://www.w3.org/TR/CSS2/colors.html#propdef-ba … )
 他のプロパティについても、同様に、Full property table ( http://www.w3.org/TR/CSS2/propidx.html )からプロパティを選択すると良いでしょう。
(注意)継承されるプロパティについては、既存のCSSに指定がなくても描かなければならない場合があります。継承れるかされないかは、常識の範囲内ですが必要ならそれぞれのプロパティのInherited:項目をチェックしてください。

上書き用のスタイルシートを用意するときも、詳細度や重要度を上げれば、同様です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!