2013-07-16 2 views
3

this question에 대한 답변보기 나는 CSS 규칙을 쓰기 :접두사가 붙은 여러 선택기에 CSS 규칙을 하나 작성할 수 있습니까?

::-webkit-input-placeholder,:-moz-placeholder,::-moz-placeholder,:-ms-input-placeholder { 
    color: #999; 
} 

그래서 파이어 폭스 요소 (-moz-자리와 -moz-자리를) 인식 할 수 없습니다. 왜? 하나의 CSS 규칙에이 모든 의사 요소를 쓸 수 있습니까?

+0

이렇게 많은 코드를 작성해야한다면 [LESS] (http://lesscss.org)와 같은 CSS 전처리기를 사용하는 것이 좋습니다 (CSS의 "수퍼 세트" 모든 CSS는 또한 덜 유효하므로 쉽게 사용할 수 있습니다.) –

+0

@RobW LESS가 Sass의'@ content' 지시문과 비슷한 것을 제외하고는 LESS가 합리적으로 이것을 추상적으로 할 수 없습니다 (http://stackoverflow.com/a/17181946/1652962 참조). – cimmanon

답변

4

짧은 대답 : 아니오. 이 동작은 W3C 사양 (see 4.1)과 일치합니다. 즉, 선택기 목록에 유효하지 않은 선택기가 하나 이상있는 경우 전체 선택기 목록이 유효하지 않은 것으로 간주되므로 브라우저 별 선택기를 그룹화 할 수 없습니다.

경고 : 모든 선택기가 유효 선택기이기 때문에 동등성이 예제의 사실이다. 이러한 셀렉터 중 하나만이 인 경우 전체 셀렉터 목록이 유효하지 않습니다. 이 경우 은 세 개의 모든 제목 요소에 대한 규칙을 무효화하는 반면, 전자의 경우에는 세 개의 개별 제목 규칙 중 하나만 무효화됩니다 ( ).

1

Firefox에 따르면 선택기에 오류가 있습니다. 인식 할 수없는 의사 클래스. 따라서 규칙은 정의에 따라 전체적으로 무시됩니다.

웹킷 및 IE 용 Ditto

그래서 다른 문제에 대한 답을 나타내므로 해결 방법은 여러 규칙에 걸쳐이를 나누는 것입니다.

::-webkit-input-placeholder { 
    color: #999; 
} 
:-moz-placeholder,::-moz-placeholder { 
    color: #999; 
} 
:-ms-input-placeholder { 
    color: #999; 
} 

파이어 폭스가 두 규칙을 모두 인식하므로 동일한 규칙에 두 가지 -moz를 둘 수 있습니다. (그들은 또한 너무 규칙에 둘 다 가지고, 동일한 것을 의미하는 것은 중복이지만, 그것은 중요하지 않습니다, 그래서 그것은 작동합니다.)

Fiddle

편집 : 의견을 같이 단일 콜론 버전의 Mozilla 선택기가 작동하지 않으며 이중 콜론 버전 만 작동합니다. (최신 버전 즉, 여기에 이전 버전이 없음). 그러나 싱글 콜론 버전은 오류로 간주되지 않습니다. 그렇지 않으면이 CSS가 작동하지 않습니다.

+0

대답은 "아니오"입니다. 맞습니까? – Cherry

+1

마지막 단락이 올바르지 않습니다. 의사 클래스가 최신 버전의 Firefox에서 가상 요소로 전환되었으므로 모든 버전이 동시에 두 가지를 지원하지는 않습니다. 사실, 나는 어떤 버전이라도 양쪽 모두를 지원한다고 생각하지 않는다. 따라서 불행하게도이 규칙을 분리해야합니다. – BoltClock

+0

제목의 질문에 대한 대답은 예입니다. 하나의 규칙에 여러 개의 의사 요소를 넣을 수 있습니다. 실제로 작동하지 않는다는 사실은 선택자 중 일부가 인식 할 수 없기 때문입니다. 의사 요소가 아니기 때문이 아닙니다! –

관련 문제