2012-04-09 3 views
9

이전에는 IE9에서 SVG 이미지가 "자르지"않은 (overflow: hidden) 다른 모든 지원 브라우저에서 "틀린 사람"에 대한 질문에 대답했습니다. 대답은 here입니다.기본적으로 포함 된 외부 SVG 내용을 <svg>에 표시해야합니까?

svg:not(:root) { overflow: hidden; } 

내가 확인하거나 다른 가리켜 나의 독창적 인 연구를 거부하는 사람을 찾고 있어요 : 다시 HTML5 상용구를 검토하는 동안

오늘, 나는 그들이 코드의이 비트와 함께 그들에게 "[correct] overflow not being hidden in IE9"을 주장 것으로 나타났습니다 HTML5 또는 SVG 사양에 유의하십시오. 나는 아무것도 찾을 수 없지만 나는 뭔가를 놓치고 있지 않다는 것을 확실히하고 싶다.

내가 찾을 수있는 최선의 방법은 규칙 7 here을 적용하려고하지만, 이는 img 태그 또는 직접로드 할 때와 같이 SVG 문서에만 적용되어야한다는 것입니다.

+0

제목 감사합니다 @Phrogz. 질문을 요약하는 방법에 문제가있었습니다. –

+0

@casperOne 사양에 대한 설명을 진짜 질문이 아닌 질문하는 방법은 무엇입니까? 문구가 가난하다는 것을 알 수 있지만 라벨을 붙인 카테고리에 어울리는지는 알 수 없습니다. 너무 현지화 되었습니까? –

+0

다른 사람이 옳았는지 잘못되었는지를 분명히하기를 원합니다. 다시 열 수는 있지만 나중에는 "비 구성 적"으로 다시 닫습니다. – casperOne

답변

4

SVG 사양이 말을 가지고 http://www.w3.org/TR/SVG/styling.html#UAStyleSheet

가 파이어 폭스와 크롬은 더 할 것과 비슷한 것 같은데?

+0

니스 하나, 내 대답 당) 크롬과 FF 모두 약간 수정 된 동일한 버전을 사용합니다. (아마도 이것에 관한 정오표가있을 것입니다.) 따라서 이것은 IE가이 UA 시트를 갖고 있지 않다는 것을 의미합니다. 그러나 오버플로가 보이는 이유가 크롬/FF에 오버플로 경로가 나타나지 않는 이유를 완전히 명확히하지는 못합니다. 아마 별개의 질문 일 겁니다. 그러나 SVG의 '경계'에 대한 기대는 무엇입니까? 경계가 언제 명시적인 '높이'와 '너비'를 초과 할 것인가? – Phrogz

+0

[이 토론] (http://lists.w3.org/Archives/Public/public-svg-wg/2008JulSep/0344.html)이 적합합니다. – Phrogz

+0

지적 해 주셔서 고마워요. 아마도 SVG 네임 스페이스 요소에 대한 기본 필수 스타일 시트의 충돌이 위의 규칙 7 + http://www.w3.org/TR/SVG/styling.html#Scope와 충돌하는 것 같습니다. –

4

귀하가 지정한 근거 (구체적으로는 다섯 번째 및 일곱 번째 글 머리 기호 the spec)를 사용하여 원래 답변이 나에게 들리는 것으로 보입니다.

IE가 정확하고 Webkit과 Firefox가 맞지 않을 것 같습니다. 그러나 일곱 번째 글 머리 기호 인 것으로 의심됩니다. 당신은 크롬에서 this test case을로드하고 SVG를 검사하는 개발자 도구를 사용하는 경우

, 당신은 볼 수 있습니다 :

(user agent stylesheet)

svg:not(:root), symbol, image, marker, pattern, foreignObject { 
    overflow: hidden; 
} 

는 "연락처보기 사용자 에이전트 CSS를 사용하는 경우 Firebug에서 Firefox에서이 규칙을 볼 수 있습니다 :

svg.css (line 49) <System>

svg:not(:root), symbol, image, marker, pattern, foreignObject { 
    overflow: hidden; 
} 

마지막으로, svg { overflow:hidden } 다음 IE 시각적으로 다른 브라우저를 일치 추가 할 수있는 테스트 케이스를 편집하는 경우.

따라서 세 브라우저 모두 사양에 따라 작동하지만 Chrome/Safari/FF는 모두 대부분의 사용자가 기대하는 것과 밀접하게 일치하는 UA 규칙을 가지고있는 것으로 보입니다.

만약 내가 충분히 잘 떠날 수 있다면,이 부분에서 나는이 대답을 멈출 것이다.

그러나 edit the test case to add svg { overflow:visible } 인 경우 Chrome과 Firefox 모두 오버플로 된 콘텐츠를 제대로 표시하지 못합니다. 이 답변의 나머지 부분과 함께이 데이터 포인트를 해결하는 방법을 모르겠습니다. :/

+1

의견 (답변 없음) : Chrome 및 Firefox의 동작이 없으면 ''전체 내용의 경계 상자를 찾고 SVG의 전체 내용을 4px 단위로 렌더링해야합니다. 이것은 내가 SVG에서 원하는 것과는 정반대입니다. SVG 내용의 범위를 정의하는 스펙이 있어야한다고 생각합니다. IE9가이 스펙을 놓치거나 잘못 해석했다고 생각합니다 (찾을 수 없음). – Phrogz

+0

자세한 답변을 보내 주셔서 감사합니다. (또한 의견) 대부분의 사람들, 특히 바이너리 이미지와 이미지 태그에 익숙한 사람들은 SVG 이미지가 기본적으로 오버플로되는 것을 기대하지 않는다는 것에 동의합니다. @ Robert의 링크는 ** 구현해야하는 기본 UA와 규칙 7 (SVG 문서 키워드) + http://www.w3.org/TR/SVG/styling을 비교할 때 빛에 대한 판결에서 흥미로운 충돌을 가져옵니다. .html # Scope –

+0

위의 토론 링크와 UA 스타일 시트 링크를 모두 합친 후에 IE9가 오류가있는 곳을 봅니다. 규칙 7은 별도의 규칙으로 적용되는 것이 아니라 뷰포트의 기본 스타일이'overflow : hidden'이라는 UA에 대한 경고로서'overflow'의 모든 규칙과 함께 적용됩니다. –