1

既存のアプリケーションをExt3.xから4に更新している最中ですが、ExtのスコープリセットCSSオプションを有効にして、Extがアプリケーション全体にCSSリセットを適用しないようにしましたが、別のアプリケーションに遭遇しています。問題。私のアプリケーションは、ハードコードされた、extで生成されていないHTMLおよびCSSスタイルを多数使用しており、その多くはExtコンポーネント(パネル、タブパネルなど)に含まれています。明らかに、このhtmlはextコンポーネントの要素を含む子孫であるため、 CSSリセットスタイル。その結果、Ext以外のhtmlのカスタムスタイルを完全に強化します。

具体的には、問題を引き起こしている2つのCSSルールがあります。

.x-border-box .x-reset, .x-border-box .x-reset * {box-sizing: border-box;-moz-box sizing: border-box;-ms-box-sizing: border-box;-webkit-box-sizing: border-box;}[/php]

このプロパティはそれほど問題ではありませんでした。ボックスのサイズを「content-box」に戻す独自のリセットラッパークラスを作成し、そのクラスをカスタムhtmlの最上位のラッパー要素に適用するだけでした。そのルールは次のとおりです。

.my-reset, .my-reset *, .x-reset .my-reset *, .x-border-box .x-reset .my-reset * {    box-sizing: content-box;    -moz-box-sizing: content-box;    -ms-box-sizing: content-box;    -webkit-box-sizing: content-box;}

ただし、他のCSSルールは、否定するのがそれほど簡単ではないものです。

.x-reset html, .x-reset body, .x-reset div, .x-reset dl, .x-reset dt, .x-reset dd, .x-reset ul, .x-reset ol, .x-reset li, .x-reset h1, .x-reset h2, .x-reset h3, .x-reset h4, .x-reset h5, .x-reset h6, .x-reset pre, .x-reset code, .x-reset form, .x-reset fieldset, .x-reset legend, .x-reset input, .x-reset textarea, .x-reset p, .x-reset blockquote, .x-reset th, .x-reset td {margin: 0;padding: 0;}

このルールが非常に面倒な理由は、カスタムHTMLのすべての異なる要素が同じマージンとパディングを持たないため、ボックスサイズ設定の場合と同じようにこれらのスタイルをオーバーライドすることはできません。そして、このルールが私のカスタムCSSスタイルの大部分よりも優先される理由は、それ自体がCSSクラスよりも高い特異性を持っているためです。つまり、「。x-reset div」セレクターのマージン/パディングスタイルは、「。my-cool-class {padding:5px; margin:5px;}」for''のようなルールのスタイルをオーバーライドします。

これを克服するために、当然、カスタムcssを更新して、ターゲットとする要素のタイプ( "div.my-cool-class")をクラスセレクターの前に付けるか、ルールの前に.x-を付けることで、ルールの特異性を高めることができます。 reset( ".x-reset .my-cool-class")、ただし、これらのオプションのいずれかでは、ファイルサイズの追加やモジュール性の制限は言うまでもなく、既存の大量のカスタムcssを手動で更新する必要があります。 CSSクラス。

それで、Extの設定を介して、またはおそらく私が単に見落としている他のCSSソリューションを介して、この問題をエレガントにそしてうまくいけばあまりオーバーヘッドなしで解決できる方法はありますか?

4

1 に答える 1

5

extjs cssから特異性を削除することができます。そうすれば、後で含めるとcssが「勝ち」ます。

したがって、変換します。

.x-reset html, .x-reset body, .x-reset div, 
.x-reset dl, .x-reset dt, .x-reset dd, 
.x-reset ul, .x-reset ol, .x-reset li, 
.x-reset h1, .x-reset h2, .x-reset h3, 
.x-reset h4, .x-reset h5, .x-reset h6, 
.x-reset pre, .x-reset code, .x-reset form, 
.x-reset fieldset, .x-reset legend, .x-reset input, 
.x-reset textarea, .x-reset p, .x-reset blockquote, 
.x-reset th, .x-reset td {
  margin: 0;
  padding: 0;
}

に:

html,  body,  div, 
dl,  dt,  dd, 
ul,  ol,  li, 
h1,  h2,  h3, 
h4,  h5,  h6, 
pre,  code,  form, 
fieldset,  legend,  input, 
textarea,  p,  blockquote, 
th,  td {
 margin: 0;
 padding: 0;

}

その後、CSSが適用されます

.myPadding{
  padding: 10px
}
于 2011-11-16T22:39:16.717 に答える