:before
및 :after
되지 않습니다 필요한 대체 요소에 대한 작업을하고, CSS 사양은 그들을 위해 일하는 것이, 대체 요소의 개념이 다소 모호 방법을 지정하지 않습니다.
CSS 2.1 사양 은 대체 된 요소에 대해 작동 할 수 있음 을 명확하게 제시 하며 방법을 "완전히 정의"하지 않는다고 말합니다. 이것은 대체 된 요소가 CSS에 의해 제어되지 않는 자체 시각적 렌더링을 가질 것으로 예상되는 문제와 관련이있는 반면, 의사 요소는 요소의 콘텐츠에 무언가를 추가해야합니다. 사양은 이것이 향후 사양에서 "더 자세히"정의 될 것이라고 덧붙였지만 아직까지는 일어나지 않았습니다.
브라우저 공급 업체는 일부 요소에 대해 이러한 의사 요소를 전혀 구현하지 않음으로써 문제를 방지하기로 결정했습니다.
"대체 된 요소"가 무엇을 의미하는지 전혀 명확하지 않으며 그 의미가 다소 변경된 것으로 보입니다. 종종 빈 요소와 같은 의미로 해석됩니다.EMPTY
콘텐츠 선언 , 즉 콘텐츠를 가질 수없는 되지만 CSS 2.1 자체는 선택기가 있는 샘플 스타일 시트 를 보여줍니다 br:before
(브라우저는이를 무시 br
하고 자체 구현 방법). 점점 더 많은 요소가 적어도 부분적으로 CSS 렌더링의 범위로 이동했다고 주장 할 수 있습니다. 예를 들어, input
요소 (글꼴, 색상 등 포함)는 최신 브라우저에서 CSS로 대부분 제어 할 수 있습니다.
현재 브라우저 (Firefox, IE, Chrome)는 :after
:before
.NET 이외의 빈 요소에 대해 및 의사 요소hr
. 의 경우 hr
IE 및 Chrome은 생성 된 콘텐츠를 테두리가있는 상자 안에 배치합니다 hr
. 내용물은 상자를 더 크게 만듭니다. Firefox는 두 (!) 가상 요소의 내용을 hr
. 이 변형은 CSS 2.1에서 언급 된 "상호 작용"문제의 종류를 보여줍니다.
이러한 의사 요소는 HTML 정의가 내용을 허용하지 않기 때문에 빈 요소에 사용할 수 없다고 종종 주장됩니다. 이것은 카테고리 오류입니다. 마크 업 언어의 구문 규칙은 CSS에서 할 수있는 작업을 제한하지 않습니다.
결론에 :after
와 :before
현재 비어있는 요소에 사용할 수 없습니다 (가장자리를 제외하고 hr
)하지만,이 주로 구현에 의한이며 향후 변경 될 수 있습니다.
<before></before>
소스에서 " " 와 같은 것을 찾을 수 있다면 놀랄 것 입니다.