IDにピリオドを含むCSSセレクター


96

HTML仕様では、IDにピリオド(。)を使用できます。

<img id="some.id" />

ただし、CSS IDセレクタールールを使用して正しく一致しません。

#some.id { color: #f00; }

IDセレクタのCSS仕様では、このケースについては触れられていません。タグ名とクラスセレクターの組み合わせを使用していると思いますか?たとえば、CSSルールは、のようなクラス名を持つa.classNameすべてのアンカータグ(<a>)に適用されます。className<a class="className"></a>

ピリオドを含むIDでHTML要素を参照する外部CSSファイルルールを作成することは可能ですか?

CSS仕様ではCSSの「識別子」にピリオドが有効な文字として含まれていないと規定されているため、私はそうは思いません。これは、HTML仕様とCSS仕様の間の根本的な不一致ですか?別のタイプのCSS選択を使用する唯一の選択肢はありますか?これを確認または否定するより賢い人はいますか?

(単純化するために、HTMLのid属性からピリオドを削除しますが、これはシステム生成のIDであるため、この場合は変更することができません。)


これは、HTMLとCSSの間の根本的なミスマッチであると言えます。ただし、これらは2つの異なる言語であるため、一致することは想定されていません。HTML識別子はHTML識別子であり、CSS識別子はCSS識別子です。また、CSSはHTMLだけでなく、他の言語もスタイル設定できます(当然ながら、CSSは当初、HTML用に作成されていました)。
BoltClock

3
また、#some.idIDとクラスセレクタの組み合わせを使用しています。
BoltClock

IDは、スタイルフックとして持つ唯一の属性ですか?私はそれが少し話題から外れていることを知っていますが、なぜimgまたはクラス(利用可能な場合)の代わりにIDを使用するのか疑問に思っています。
Jayx 2014

@Jayx RE「img(タグ)またはクラスの代わりにIDを使用する理由」理由や状況はさまざまです。ただし、この場合、ページ上のすべての画像ではなく、特定の要素にスタイルを設定する必要がありました。HTMLを変更できる場合はクラスを使用できましたが、この場合は、制御できないシステムによって生成されたため、変更できませんでした。
Jon Adams

回答:


194

クラシック。質問を書いてすべての仕様を調べた直後、私はそれをもう少し読み、エスケープ文字があることを発見しました。私はこれを必要としていませんでしたが、CSS仕様では、ほとんどの言語のようにバックスラッシュ(\)エスケープできます。あなたは何を知っていますか?

したがって、私の例では、次のルールが一致します。

#some\.id { color: #f00; }


8
良い研究の仕事。このようなQ&Aはもっとあるはずです。「私の代わりに自分のコードを書く」のではありません。
Pavlo 2012

3
素晴らしい研究。私が取り組んでいる大規模なエンタープライズアプリケーションでこれに遭遇しました。私は完全に困惑し、それを見たことがない。ピリオドを含むIDを作成するポイントは何ですか?
Anthony

1
@Anthony:HTML id属性にピリオドを入れる特別な理由はありません。私は時々作者がただ望んでいると思いますか?おそらく、場合によっては、サーバー側コードの識別子でピリオドを使用してフォームを処理する可能性のある、基礎となる実装システムから流出する可能性がありますか?私はそうするすべての人が独自の理由を持っていると確信しています。しかし、それらを含めるHTML / CSSの理由はありません。
Jon Adams

1
IDにドットを使用しているため、OpenLayersで問題が発生しました。例:「OpenLayers.Control.Attribution_7」。私はそれがjavascriptの変数名をid自体と同じ値にすることができる内部コードに役立つと思います。
ホフマン

3
新しい質問を追加して自分で回答を書くことを検討していましたが、ここでコメントすることにしました。Stylusプリプロセッサを使用している場合、たとえば#some\\.id特殊文字をエスケープするために、2つのバックスラッシュを使用する必要があります。最初のバックスラッシュはStylusによって消費され、残りのバックスラッシュはコンパイルされたCSSに残ります。これにより、この回答で説明されている望ましい結果が得られます。
markrian

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.