ID에 마침표가있는 CSS 선택기


97

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의 근본적인 불일치라고 말할 수 있습니다. 그러나 두 언어가 서로 다르기 때문에 일치 할 것으로 예상되지 않습니다. HTML 식별자는 HTML 식별자이고 CSS 식별자는 CSS 식별자입니다. 또한 CSS는 HTML뿐만 아니라 다른 언어에도 스타일을 지정할 수 있습니다 (당연히 CSS는 처음에는 HTML 용으로 만들어졌습니다).
BoltClock

3
또한 #some.idID와 클래스 선택기의 조합을 사용하고 있습니다.
BoltClock

ID가 스타일 후크로 보유한 유일한 속성입니까? 주제에서 약간 벗어난 것을 알고 있지만 img 또는 클래스 (사용 가능한 경우) 대신 ID를 사용하려는 이유가 궁금합니다.
Jayx 2014-08-06

@Jayx RE "img (태그) 또는 클래스 대신 ID를 사용하는 이유는 무엇입니까?" 많은 이유와 상황에 따라 다릅니다. 그러나이 경우 페이지의 모든 이미지가 아닌 특정 요소에 스타일을 적용해야했습니다. HTML을 수정할 수 있다면 클래스를 사용할 수 있었지만이 경우에는 우리가 제어 할 수없는 시스템에서 생성되었으므로 수정할 수 없습니다.
Jon Adams

답변:


194

권위 있는. 질문을 작성하는 모든 사양을 파헤친 직후, 나는 그것을 좀 더 읽어 보니 이스케이프 문자가 있다는 것을 알았습니다. 전에는 필요하지 않았지만 CSS 사양은 대부분의 언어처럼 백 슬래시 (\) 이스케이프를 허용 합니다. 당신은 무엇을 알 수 있습니까?

따라서 내 예에서는 다음 규칙이 일치합니다.

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


8
좋은 연구 직업입니다. "나 대신 내 코드 작성"과 같은 질문과 답변이 더 많이 있어야합니다.
Pavlo 2012 년

3
좋은 연구. 나는 작업중 인 대기업 응용 프로그램에서 이것을 만났습니다. 나는 완전히 당황했고 전에는 본 적이 없었습니다. 마침표가있는 이드를 만드는 요점은 ??
Anthony

1
@Anthony : HTML id 속성에 마침표를 넣는 특별한 이유가 없습니다. 가끔 작가들이 원할 것 같아요? 어떤 경우에는 양식 처리를 위해 서버 측 코드의 식별자에 마침표를 사용할 수있는 기본 구현 시스템에서 유출 될 수 있습니까? 나는 모든 사람들이 각자의 이유를 가지고 있다고 확신합니다. 그러나 그것들을 포함 할 HTML / CSS 이유는 없습니다.
Jon Adams

1
감사합니다. OpenLayers는 ID에 점을 사용하기 때문에 문제가있었습니다. 예 : "OpenLayers.Control.Attribution_7". javascript 변수 이름이 id 자체와 동일한 값을 가질 수있는 내부 코드에 도움이된다고 생각합니다.
Hoffmann

3
나는 새로운 질문을 추가하고 내 답변을 쓰는 ​​것을 고려하고 있었지만 여기에 댓글을 달기로 결정했습니다. Stylus 전처리기를 사용하는 경우 두 개의 백 슬래시를 사용해야합니다 (예 : #some\\.id특수 문자 이스케이프). 첫 번째 백 슬래시는 Stylus에서 사용되며 컴파일 된 CSS에 남은 백 슬래시는이 답변에 설명 된 원하는 결과를 얻습니다.
markrian

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.