私は、JavaScriptを介してホストサイトにロードされたhtmlとスタイルで構成される動的な広告バナーを開発しました。ある特定のサイトでは、メインページのスタイルシートの特定のスタイルが、動的にロードしているhtmlに影響を与えています。
動的にロードされたhtmlに、htmlと一緒にロードしたcssのスタイルのみをレンダリングさせ、ホストページのスタイルを無視する手法はありますか?
アドバイスをいただければ幸いです。
私は、JavaScriptを介してホストサイトにロードされたhtmlとスタイルで構成される動的な広告バナーを開発しました。ある特定のサイトでは、メインページのスタイルシートの特定のスタイルが、動的にロードしているhtmlに影響を与えています。
動的にロードされたhtmlに、htmlと一緒にロードしたcssのスタイルのみをレンダリングさせ、ホストページのスタイルを無視する手法はありますか?
アドバイスをいただければ幸いです。
バナーをiframeに入れます。
CSSファイルをHTMLページに添付した場合、それに対する唯一の解決策は、!important
競合するすべてのCSSプロパティに使用することです-
.className{
color: red !important;
}
CSSに!importantを追加します。
p {色:#ff0000!重要; }
ええ、本当に簡単な方法があります。クラスをメインページのHTMLから分離しないのはなぜですか。競合が発生しないようにする場合は、一意のIDを付与します。
例
メインページにはcssクラスがあり.input
ます。動的にロードするページに.Dybamically_input
名前空間として何かを提供する!important
ため、これを指定します。また、確実に追加したいプロパティを使用することもできます。
CSSにスコープブロックを導入するための進化する標準がありますが、それはまだ十分にサポートされていないため、役に立ちません。!importantディレクティブを使用できますが、注意深く適用しないと、基になるドキュメントにも影響を与える可能性があります。
最善の解決策は、一意の名前のクラスを持つdiv内の追加バナーにすべてのHTMLを含めることでスコープを作成することです(一意の名前空間を使用して、一意性を保証しようとします。次に、そのクラスにのみスタイルを適用します、!importantを使用して、スタイルのカスケードの下位で変更される可能性のあるスタイルをオーバーライドする必要がある場合があります。
外部のcssファイルの代わりにインラインスタイル(スタイルを設定するすべてのバナー要素のスタイル属性)を使用します。これにより、競合が発生することはありません。
他の人が提案した他のオプションは、IFrameを使用することです。