[css] 의사 요소에 대해 단일 또는 이중 콜론 표기법을 사용해야합니까?

IE7 및 IE8은 의사 요소 (예 : ::after또는 ::first-letter)에 대해 이중 콜론 표기법을 지원하지 않으며 최신 브라우저 :after는 이전 버전과의 호환성을 위해 단일 콜론 표기법 (예 :)을 지원하므로 단일 콜론 표기법 만 사용해야하며 IE8의 시장 점유율이 무시할 수있는 수준으로 떨어집니다. 돌아가서 내 코드 기반에서 찾거나 교체합니까? 또는 다음을 모두 포함해야합니다.

.foo:after,
.foo::after { /*styles*/ }

내가 IE8 사용자를 걱정한다면 double을 단독으로 사용하는 것은 어리석은 것처럼 보입니다.



답변

마십시오 하지 쉼표와 함께 모두를 사용합니다. CSS 2.1 호환 (CSS3 지원 불가) 사용자 에이전트는 전체 규칙을 무시합니다.

사용자 에이전트가 선택자를 구문 분석 할 수없는 경우 (즉, 유효한 CSS 2.1이 아님), 선택자와 다음 선언 블록 (있는 경우)도 무시해야합니다.

CSS 2.1은 선택기의 쉼표 (,)에 특별한 의미를 부여합니다. 그러나 쉼표가 향후 CSS 업데이트에서 다른 의미를 얻을 수 있는지 여부는 알 수 없으므로 나머지 선택자가 CSS 2.1에서 합리적으로 보일지라도 선택자에 오류가 있으면 전체 문을 무시해야합니다.

http://www.w3.org/TR/CSS2/syndata.html#rule-sets

그러나 사용할 수 있습니다

.foo:after { /*styles*/ }
.foo::after { /*styles*/ }

반면에 이것은 필요한 것보다 더 장황합니다. 지금은 단일 콜론 표기법을 고수 할 수 있습니다.


답변

에서 CSS3 선택기 REC :

이 :: 표기법은 의사 클래스와 의사 요소를 구별하기 위해 현재 문서에 도입되었습니다.
기존 스타일 시트와의 호환성을 위해 사용자 에이전트는 CSS 레벨 1 및 2에 도입 된 의사 요소 (즉, : first-line, : first-letter, : before 및 : after)에 대해 이전의 단일 콜론 표기법도 허용해야합니다 .
이 사양에 도입 된 새로운 의사 요소 에는 이러한 호환성이 허용되지 않습니다 .

UA는 이전 버전과 호환되어야하므로 CSS2.1에 이미 존재하는 의사 요소에 대해 단일 콜론 표기법 만 사용하는 것이 안전합니다.


답변

하나의 “안전한”콜론 사용을 고려하는 것과 관련하여 @mddw 및 @FelipeAls에 절대적으로 동의하지 않습니다.

이 “사용되지 않는데도 사용할 것”이라는 사고 방식이 브라우저 기반 기술의 발전과 발전 속도가 느린 이유입니다.

예, 이전 표준과의 호환성을 유지하고 싶습니다. 현실을 직시하자, 그것은 우리가받은 손이다. 그러나 이것은 더 이상 사용되지 않는 표준을 위해 현재 표준을 무시함으로써 개발에 게으르다는 핑계가 있음을 의미하지는 않습니다.

아웃 목표는 가능한 한 많은 레거시 표준을 지원하면서 현재 표준을 준수하는 것이어야합니다.

유사 요소 :가 CSS2와 ::CSS3 에서 사용 되는 경우 둘 중 하나를 사용해서는 안됩니다. 우리는 둘 다 사용해야합니다 .

원래 질문에 완전히 답하기 위해 다음은 버전 2에 대한 레거시 지원을 유지하면서 CSS의 최신 구현 (버전 3)을 지원하는 가장 적절한 방법입니다.

.foo:after {
  /* styles */
}
.foo::after {
  /* same styles as above. */
}


답변

그러나 새로운 자바 스크립트와 CSS 모두에 폴리 필 을 사용하는 것이 점점 더 인기를 얻고 있으므로 필요한 경우 새로운 이중 콜론 ( ::) 구문을 계속 사용하고 이전 브라우저에 대해서는 폴리 필을 유지하는 것이 좋습니다.


답변

브라우저 통계에 따르면 IE 8.0의 가치는 지난 1 년 동안 미국에서 1 % 미만으로 떨어졌습니다.

http://gs.statcounter.com/browser-version-partially-combined-market-share/desktop/united-states-of-america/#monthly-201512-201612

2015 년 12 월 IE 8.0은 시장 점유율 2.92 %차지 했습니다. 2016 년 12 월 IE 8.0 의 시장 점유율 은 .77 % 였습니다.

이러한 감소 속도에서는 이전 버전의 IE 지원을 중단하고 의사 요소에 :: 사용을 시작하는 것이 최악의 생각은 아닙니다.


답변

두 표기법을 모두 포함하는 것이 확실히 더 안전하지만 오랫동안 단일 표기법을 삭제하는 브라우저를 볼 수 없으므로 단일 표기법 만 괜찮을 것입니다 (유효한 CSS2입니다).

개인적으로 저는 대부분 습관에 의해 단일 콜론 표기법 만 사용합니다.


답변