2

答えを見つけようとしましたが、何もありません...

divタグ内の他の Web サイトに読み込まれる小さなアプリケーションがあります。これdivには、-> "myAppHere" のような特定の ID があります。

現在、すべての html は this 内にありますdivが、私の要素が各サイト独自の css ルールの影響を受けていることがわかります。

css他のすべてのサイトルールをキャンセルする方法はありますか?

何かのようなもの:

#myAppHere *{
    padding: 0;
    margin: 0;
    etc....
}

上記のサンプル コードがうまく動作しないためです。

4

3 に答える 3

3

単純に追加することはできません:

 #myAppHere * {
             ...
 }

一般的なルールは、より具体的なルールによって上書きされます。アプリがその div にどのようにロードされるか (内部フレーム、プレーン HTML など) を言わなかったので、解決策を見つけるのは困難です。

あなたができること (要素に余分な HTML が追加されていると仮定して#myAppHere) は、各要素に設定されている CSS スタイルを (Firebug などを使用して) チェックし、より具体的なオンルールを CSS ファイルに書き込むことです。

于 2013-01-13T08:50:54.817 に答える
2

それはあなたがそこに持っている恐ろしい要件です。

次のように、css ルールに !important を追加してみてください。

#myAppHere *{
    padding: 0 !important;
    margin: 0 !important;
    etc....
}

ただし、これでも、次のような場合のように、ルールで !important を持つスタイル属性を持つ一部の要素はオーバーライドされません。

<div id="myAppHere">
    <div style="margin: 20px !important;">Hello</div>
</div>

javascript を使用して他の Web サイトのソースにアクセスし、すべてのスタイルとクラスの属性を取り除くことができる場合があります...おそらくそれが確実な唯一の方法です。JavaScript で jquery を使用している場合は、次のようになります。

$("#myAppHere *").removeAttr("style");
$("#myAppHere *").removeAttr("class");

ただし、これらのクラス属性を削除する場合は注意が必要です。これは、自分でスタイルを設定したい場合、使用するクラスがなくなることを意味するためです。ただし、後で JavaScript を追加して新しいクラスを追加することもできます。

于 2013-01-13T07:08:27.303 に答える
1

要素内に完全な HTML ドキュメントを挿入するdivと、結果に無効なマークアップが含まれ、事態が深刻に混乱します。特に、内部ドキュメントにstyle要素がある場合、実際にはページ全体に適用されると見なされます。

解決策は、それをやめることです (そして、まず、そのようなことを合法的に行うことができるかどうかを検討してください。通常は、著作権侵害になります)。技術的には、埋め込まれているドキュメントのコンテンツの多くを削除または書き換える必要があります (たとえば、それらの CSS コードを処理したり、そこからリンクしたりする簡単な方法はありません)、またはiframe要素 (またはframe要素object)を使用する必要があります。ページを「自律的」として埋め込む (そのため、独立したサブウィンドウに表示されます)。

于 2013-01-13T08:55:46.840 に答える