2013-05-23 2 views
0

하나의 레이블 텍스트가 270도 회전 된 슬라이드 메뉴를 만듭니다. Explorers 10 + 9를 포함한 모든 최신 브라우저에서 잘 작동합니다. 하지만 IE8이 이전 IE8 & IE7에서도 작동하도록하고 싶습니다. 그래서 많은 답변에서 권장되는 필터 정의를 추가했으나 작동하지 않습니다. IE8 브라우저로 전환 한 IE 개발자 도구가있는 페이지를 테스트했습니다 (IE8 표준 모드).텍스트 회전 270 도가 IE8에서 작동하지 않습니다.

여기에 jsfiddle + 입니다.

.menu p.heading { 
    position:absolute; 
    right:-22px; 
    top:3em; 
    -webkit-transform:rotate(-90deg); 
    -moz-transform:rotate(-90deg); 
    -ms-transform:rotate(-90deg); 
    -o-transform:rotate(-90deg); 
    transform:rotate(-90deg); 
    -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; 
    filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); 
} 

필터에 따옴표를 추가/제거 시도 CSS는, XHTML하는 HTML5의 문서 타입을 변경,하지만 아무것도 작동하는 것 같다 없습니다. 누군가가 나에게 IE 8 & 7에 맞게 설정하는 방법에 대한 조언을 줄 수 있습니까?

또 하나의 부수적 인 질문 : 두 개의 IE8 관련 정의를 구분 된 태그 as shown here으로 구분할 수있는 이점이 있습니까?

<!--[if lte IE 8]> 
<style type="text/css"> 
.rotation { 
    -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; 
    filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); 
} 
</style> 
<![endif]--> 

어떤 힌트를 주셔서 감사합니다!

답변

2

로테이션이 IE8에서 작동하는 것 같습니다. 그러나 회전 된 항목은 잘못 배치되어 있으므로 처음으로 페이지를 볼 때 회전 된 텍스트가 화면 가장자리에서 벗어납니다. 마우스를 가져 가면 상자가 보이게됩니다.

IE8의 filter 스타일은 표준 CSS와는 다른 회전 지점을 가지고 있기 때문입니다. 왼쪽 상단 모서리를 회전 점으로 사용하지만 CSS는 기본값을 중심으로 사용합니다. 같은 지점을 사용하도록 둘 중 하나를 수정해야합니다. 그런 다음 올바르게 배치하면 모든 브라우저에서 동일하게 보입니다.

이것은 실제로 그렇게하기 쉽지 않습니다. IE에서는 복잡한 표준 행렬 필터를 사용해야합니다. 이제는 비교적 쉽게 rotation=3을 사용해야합니다. 따라서 제 추천이 될 것입니다. CSSSandpaper이라는 javascript polyfill을 사용하여 IE8 및 이전 버전에서 표준 CSS 순환을 인식하게하려면 filter을 내부적으로 사용하지만 다른 표준 CSS 변형과 함께 -sand-rotate(-90deg); 만 있으면됩니다.

이렇게하면 코드를 작업하기가 훨씬 쉬워지고 브라우저 전체에서 일관되게 작동합니다.

는 두 번째 질문에 대답하려면 - 당신이 회전을 할 filter를 사용하는 경우 예, 다음은 IE < = 8 특정 블록에서 filter 스타일을 넣어하는 것이 좋습니다 것, 그들이 IE9을 방해하기 때문이다.

IE9는 표준 CSS 회전을 지원하지만 필터와도 작동하므로 IE9에서는 상황이 두 가지로 다가오고 있으므로 완전히 잘못되었습니다. (당신은 그래픽 손상으로 끝나고, 그것은 예쁘지 않다).

그러나 위에서 언급 한대로 CSS 샌드 페이퍼를 사용하는 경우이 점은 사용자가 어떤 IE 버전인지 감지하고 IE9에서 실행되지 않으므로 관련이 없습니다. IE8 관련 스타일 시트가 필요 없습니다.

+0

설명을 위해 Spudley에게 매우 감사드립니다. CSSSandpaper 라이브러리는 문제를 해결하는 데 매우 유용합니다. 확실히 내 템플릿에서 사용합니다. Explorer 10의 개발자 도구에서 IE8 모드로 전환 한 페이지를 테스트했지만 텍스트가 회전되지 않았습니다.당신은 또한 저에게 말해주십시오 (필터가 무시 ​​된 것처럼 보입니다), IE8에 대한 페이지를 올바르게 테스트하는 방법? 고맙습니다. – Stano

+1

네, 그렇습니다 - IE10의 compat 모드는'filter'를하지 않습니다. 그것은 완전히 "호환"되지 않습니다. 테스트하기 위해 IE8의 실제 복사본을 사용해야한다. (이후 버전이 compat 모드를 사용하지 않도록 IE = edge와 함께'X-UA-Compatible '을 사용한다.) – Spudley

+0

완벽하고, 그냥 IE8로 내 오래된 PC의 페이지를 테스트하고 거기에 텍스트가 (예상대로) 회전 (또한 예언대로) displaced. 지금까지 나는 [IETester] (http://www.my-debugbar.com/wiki/IETester/HomePage)에서 내 페이지를 테스트하는 데 익숙했으며이 시간에는 IE10의 개발자 도구에서 다르게 렌더링 된 페이지가있을 때 혼란스러워했습니다. IETester. 이 브라우저 동작에 대한 심층적 인 견해가 없습니다. 글쎄,이 위대한 팁 주셔서 감사합니다, 그것을 고칠 CSSSandpaper를 사용합니다. 안부 인사 – Stano