8

1つのプロジェクトでは、定義されたスタイルシートを使用する必要があります。私はそれを編集することはできません、私はそれが来たときにそれを取る必要があります。

ただし、このWebサイトには適切でないスタイルがいくつかあります(マージンなど)。

私も、これらのプロパティのいくつかをオーバーライドする独自のCSSファイルを作成しました。

一例として、私がこれを持っている場合:

<div id="main-content" class="container">My test text</div>

そして、cssファイル内の次のcss命令:

div.container{margin:5px}
div#main-content{margin-left:235px; ...}

MY cssで、div#main-contentにこのマージンがないが、デフォルト値であることを定義したいと思います。

どうすればいいですか?グローバルスタイルの場合(すべて5pxのマージンが必要だmargin-left:0pxと言って、前のdivに適用したいので、やりたくありません。これらのデータは変更される可能性があります。div.container

4

4 に答える 4

4

別の値に明示的に設定せずにプロパティ値宣言を削除する純粋なCSSの方法はありません。

したがって、次のような状況が発生した場合:

 <div id="divA" class="class3 class1"></div>
 <div id="divB" class="class3 class2"></div>

 .class1{margin:2px;}
 .class2{margin:3px;}
 .class3{margin:10px;}

...そして、divAのマージンが2px、divBのマージンが5pxになるように、class3の効果をキャンセルしたい場合、純粋なCSSの唯一の手段は、各ケースを明示的に参照することです。オーバーライドするスタイルシートのIEでは、次のことを再度アサートする必要があります。

 .class1{margin:2px;}
 .class2{margin:3px;}

...など、多くのクラス/セレクターコンテキストが影響を受ける可能性があります。これはおそらく非現実的です。

JavaScriptに飛び込むつもりなら、実際に要素からクラス名を削除することができます。

これを行う方法の簡単なJavaScriptの例については、「JavaScriptを使用して要素からCSSクラスを削除する(jQueryなし) 」を参照してください。

より単純なコードが必要で、JavaScriptライブラリを使用する場合は、jQueryを使用すると次のように1行でこれを実行できます。

$('divA').removeClass('class3');
于 2012-08-06T11:33:10.780 に答える
3

.no-left-marginのような別のcssクラスを追加することができます

<div id="main-content" class="container no-left-margin">My test text</div>

そしてあなたのCSSに追加します

.no-left-margin{
 margin-left: 0px !important;
}
于 2012-08-06T11:19:14.787 に答える
1

ねえ今これに慣れている

.container#main-content{margin-left:xxxx; ...}
于 2012-08-06T11:18:21.270 に答える
1

スタイルシートが元のスタイルシートの後にある限り、cssで同じセレクターを使用でき、それが上書きされます。

そして、ただ置く

div.container{margin:5px}
div#main-content{margin-left:auto;}
于 2012-08-06T11:18:28.543 に答える