2009-04-08 7 views
5

私のHTMLページには、 "main"というIDのdivがあります。同じID( "main")のdivを含む別のHTMLページをHTMLページに含めています。私は自分のHTMLページのid( "main")に名前空間を追加する必要があります。CSSで名前空間を使用する方法は?

私は別のサイトのヘッダー、フッターを含め、自分のサイトのコンテンツをそのHTMLページに含めます。他のサイトが自分のサイトと同じIDを使用している場合は、ここで競合が発生しています。

このHTMLページには、2つのCSSファイルが含まれています。両方のクラスが同じスタイルを持つ同じクラスを含んでいる場合は、問題があります。

私のcssファイルをコードに適用し、もう1つを残りのコードに適用する必要があります。 私の問題を解決できるのはどのボディですか?

答えて

1

これまでネイティブCSSネームスペース機能はなく、HTMLを編集する権限(または欲望/能力)があれば、これまで同意しています。それが最良のアプローチです。

このプロセスを自動化する方法の1つは、引っ張っているHTMLを解析し、既存のIDまたはクラスを変更したバージョンに置き換えるスクリプト(PERL、PHP、.NETなど)を書くことです。

すなわち<tag id="theID" class="theClass anotherClass">も同様に変更する必要があるだろうJavascriptのコードがある場合、それはトリッキーになるだろうが、あなたは、いくつかの創造的な正規表現でこれを達成することができ<tag id="NAMESPACEtheID" class="NAMESPACEtheClass NAMESPACEanotherClass">

になります。

パフォーマンスが向上する限り、これはファイルのサイズによっては大ヒットになります。結果をキャッシュしたり、元のファイルを書き直したいと思うかもしれません。

あなたがそのルートに行くことを決めたら、そのアイデアは実際にはちょっと興味をそそられ、私のツールボックスに場所を持つことができます。

0

2番目のdivのIDに2番目のdivの名前を使用します。たとえば、2番目のページがsignup.htmlと指定されている場合は、main_signup

2

divを含む要素については、互いに離れています。もしあれば、あなたのCSS宣言の前に接頭辞を付けて、両方のdivに一意のスタイルを指定することができます。

例:人が述べたように

#main 
{Style} 
.container #main 
{Another style} 

、あなたがHTMLを管理している場合、要素またはそれらのそれぞれに固有のIDの両方のために別のクラスを指定することが賢明だろう。

+0

あなたは私にそれを打つ。回答の自動更新機能は素晴らしいです。 – IEnumerator

+0

HTML文書に同じIDを持つのは間違いですね。 – Sergey

+0

技術的にはそうではありませんが、ジョンは要素が何を呼び出すかを制限しているようです。 – Sam152

4

2つのこと:

  • あなたはクラスではなく、IDを必要とするように聞こえます。
  • スタイル間のページ単位の違いを適用する場合は、埋め込みスタイルシートを使用します。

この場合、同じIDを使用すると、間違いなくbroken windowsとなる場合があります。状況を支配している場合は、後でさらに混乱を招く代わりに、HTMLを更新する必要があります。

+1

ページごとの違いを得るために埋め込みスタイルシートは必要ありません! bodyタグにIDを入力するだけです。 – AmbroseChapel

+0

私の好みではないので、CSSファイルが乱雑になる可能性があります。私たちは先日仕事でこのディスカッションをしました。それはただそれに分解されるかもしれない:好み。ここでは、それを主張する人々の束です:http://www.webmasterworld.com/css/3115364.htm私は両側を参照して、それはあなたのすべてのルールを1つの場所に持っていることはいいです。 – cgp

2

重複するIDを持つページは無効です。 IDとクラスを組み合わせて別々の要素をターゲットにしても、すべてのブラウザで動作することは保証されません。

有効なページを作成するには、エレメントに一意のIDが必要です。

1

つまり、CSSに名前空間などはありません。

関連する問題