CSS 미디어 쿼리에 대한 IE8 지원


178

IE8은 다음 CSS 미디어 쿼리를 지원하지 않습니다.

@import url("desktop.css") screen and (min-width: 768px);

그렇지 않은 경우 대체 작성 방법은 무엇입니까? Firefox에서도 동일하게 작동합니다.

아래 코드에 문제가 있습니까?

@import url("desktop.css") screen; 
@import url("ipad.css") only screen and (device-width:768px);

미디어와 인라인 CSS를 시도하고 respond (.min) .js 응답을 사용하려는 사람들을 위해이 상황에서는 작동하지 않습니다. .css 파일에서 작동하는 것 같습니다
NoWomenNoCry

답변:


77

IE9 이전의 Internet Explorer 버전 은 미디어 쿼리를 지원하지 않습니다 .

IE8 사용자의 디자인을 저하시키는 방법을 찾고 있다면 IE의 조건부 주석이 도움이 될 수 있습니다. 이를 사용하여 이전 규칙을 덮어 쓰는 IE 8/7/6 특정 스타일 시트를 지정할 수 있습니다.

예를 들면 다음과 같습니다.

<link rel="stylesheet" type="text/css" media="all" href="style.css"/>
<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css" media="all" href="style-ie.css"/>
<![endif]-->

이것은 IE8에서 반응 형 디자인을 허용하지 않지만 JS 플러그인을 사용하는 것보다 더 간단하고 접근하기 쉬운 솔루션이 될 수 있습니다.


94
조건부 스타일 시트가 반응 형 디자인 문제를 어떻게 해결하는지 알 수 없습니다.
James Westgate

8
이 솔루션이 IE의 반응 형 디자인을 어떻게 해결하는지 이해하지 못합니까? 브라우저에 따라 다른 스타일 시트를로드하면 예를 들어 브라우저 크기에 따라 다른 스타일 속성을 사용하는 것과 아무 관련이 없습니다.
Klikerko

13
정답은 IE8 이 미디어 쿼리를 지원하지 않는다는 것 입니다. 이 답변은 일종의 말이지 만 언뜻보기에는 완전히 명확하지 않습니다. 어쨌든, 나는 그것이 지원을 받았다고 생각 했고이 대답은 내가 다르게 인식하는 데 도움이되었습니다.
Jason

54
이 답변이 반응 형 솔루션이 아니라는 것은 사실이지만, 그것은 "BUT"이라고 생각합니다. 사실 IE8은 iPad 또는 Android 태블릿에서 사용되지 않습니다. IE8은 주로 2003 년부터 2009 년까지 XP / Vista PC에서 주로 1024px 너비의 화면에서 사용할 수 있습니다. Windows Mobile은 IE6, Windows Pone은 IE9 +에 있습니다. 여기서 진정한 질문은 IE8에 반응하는 것이 실제로 유용한 지 스스로에게 묻는 것입니다.
Gregoire D.

16
@GregoireD. 네 그렇습니다. 확대 / 축소로 웹 페이지를 보는 사람들이 있기 때문에. 우리 회사에서는 800x600으로 4 배 확대 한 후 페이지를 형식화하여 적응성을 높였습니다. 400px 너비의 화면을 만듭니다. 미디어 쿼리는 선택한 브라우저에도 불구하고 실제로 유용합니다 (IE8 포함).
Arkana

341

css3-mediaqueries-js 는 아마도 당신이 찾고있는 것일 것입니다 :이 스크립트는 미디어 쿼리를 에뮬레이트합니다. 그러나 (스크립트 사이트에서) " @imported 스타일 시트 (성능상의 이유로 어쨌든 사용해서는 안 됨) 에서는 작동하지 않습니다 . 또한 <link>and <style>요소 의 media 속성을 듣지 않습니다 ".

같은 맥락에서 당신은 간단하게이 Respond.js 만 가능 min-width하고 max-width미디어 쿼리를.


7
왜 답변으로 표시되지 않습니까? 감사합니다. 그런데 오버 헤드로 인해 가져 오기 CSS 쿼리를 사용해서는 안됩니다.
RichW

완벽하고 정확하게 내가 찾던 것!
somdow

감사합니다!! 이 답변과 respond.js는 ie8의 미디어 쿼리에 대한 해결 방법을 시도하는 데 많은 시간을 절약했습니다.
Ingusmat

3
nevermind-> .js는 .css 파일 뒤에 포함되어야합니다 ... xD
kaljak

4
응답했지만 css3-mediaqueries는 작동하지 않았습니다. 응답이 자체 포함되어 있기 때문에 CSS3 미디어 쿼리는 사용자 에이전트 감지와 같은 일부 jQuery 함수에 의존 하며이 함수는 더 이상 사용되지 않고 제거되었습니다 (jQuery 문서 참조).
Anton Boritskiy

50

내가 찾은 최고의 솔루션은 Respond.js입니다. 특히 주요 관심사가 IE8에서 반응 형 디자인이 작동하는지 확인하는 경우입니다. min / gzipped 일 때 1kb로 매우 가벼우 며 IE8 클라이언트 만로드 할 수 있습니다.

<!--[if lt IE 9]>
<script src="respond.min.js"></script>
<![endif]-->

부트 스트랩을 사용하는 경우 권장되는 방법입니다. http://getbootstrap.com/getting-started/#support-ie8-ie9


14

IE8 (및 하위 버전) 및 3.5 이전의 Firefox는 미디어 쿼리를 지원하지 않습니다. Safari 3.2는 부분적으로 지원합니다.

JavaScript를 사용하여 이러한 브라우저에 미디어 쿼리 지원을 추가하는 몇 가지 해결 방법이 있습니다. 이것들을보십시오 :

미디어 쿼리 jQuery 플러그인 (최대 / 최소 너비 만 처리)

css3-mediaqueries-js – 지원되지 않는 브라우저에 미디어 쿼리 지원을 추가하기위한 라이브러리


방금 css3-mediaqueries.js를 내 페이지에 포함 시켰습니다. IE에서는 작동하지 않습니다. 여전히 미디어 쿼리 "@import url ("desktop.css ")뿐만 아니라 화면 및 장치 너비 : 768px); " 뿐만 아니라 "@import url ("desktop.css ")은 화면에 표시되지 않으며 (device-width : 768px);"
testndtv

스크립트를 포함한 추가 작업이 필요한지 확실하지 않습니다.
testndtv

가져온 CSS에서는 작동하지 않습니다. <link rel = "stylesheet"type = "text / css"media = "screen not not and (device-width : 768px)"href = "desktop.css"/>
Faraz Kelhini

오 알 겠어. 실제로는 페이지에서 아무 것도하지 않고 무언가를 찾고 있기 때문에 도움이되지 않을 수도 있습니다. CSS에서 외부 적으로 만 가능합니다.
testndtv

googletrunk css3 js 스크립트는 외부 스타일 (예 : 화면 및 ....)이 아니라 CSS 스타일 시트 내에서 사용되는 미디어 쿼리에서만 작동하도록 지정합니다. 즉, 스타일 시트를 하나로 통합하고 내부에서 외부에서 수행하려는 작업을 수행해야합니다. @media screen and (max-width : 980px) {
Capagris

11

css3mediaqueries.js 프로젝트 페이지에서 가져 왔습니다.

참고 : @ import'ed 스타일 시트 (성능 때문에 어쨌든 사용해서는 안 됨)에서는 작동하지 않습니다. 또한 <link><style>요소 의 미디어 속성을 듣지 않습니다 .


@ import'ed 스타일 시트에서 작동하지 않는다고 알려주는 +1! 내 WP 자식 테마에서 많은 시간을 절약하십시오.
Vinicius Garcia

8

css3-mediaqueries-js를 사용하는 쉬운 방법은 닫는 body 태그 앞에 다음을 포함시키는 것입니다.

<!-- css3-mediaqueries.js for IE less than 9 -->
<!--[if lt IE 9]>
<script 
   src="//css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js">
</script>
<![endif]-->

6

편집 된 답변 : IE는 화면을 이해하고 가져 오기 미디어로 인쇄합니다. import 문과 함께 제공된 다른 모든 CSS는 IE8이 import 문을 무시하도록합니다. 사파리 나 모질라와 같은 Geco 브라우저에는이 문제가 없었습니다.


내 IE가 호환 모드에 있지 않습니다. 또한 IE에 대한 다른 대안도 있습니다. 기본적으로 768px 화면 장치를 제외한 모든 것을 선택하고 싶습니다 ..
testndtv

또한 당신이 준 링크에서 논의한 것처럼, doctype을 <! DOCTYPE html PUBLIC "-// W3C // DTD XHTML 1.0 Transitional // EN" " w3.org/TR/xhtml1/DTD/xhtml1-transitional. dtd "> ... 여전히 작동하지 않습니다 ..
testndtv

1
내가 네게 옳다면 나는 순결하지 않다. JavaScript를 사용하여 화면 해상도를 감지 할 수 있습니까? CSS를 사용하면 다른 방법이 없습니다. 분을 무시하거나 무시하는 것과 관련된 오류가 없다는 것을 확신합니까? 팁은 개발자 툴바입니다. 그것으로 당신은 pagereloads없이 라이브를 테스트 할 수 있습니다
sra

쿼크 모드로 매우 빠르게 전환되고 있습니다. 확인 했습니까? 또한 원치 않는 결과가 발생할 수 있습니다. Quirkmode는 doctype을 덮어 씁니다. 또한 초소형 프로젝트에서 원하는 것을 테스트하여 관련 오류 / 결과가 아님을 확인하는 것이 좋습니다
sra

알았어. 여기에 내가 업데이트 한 방법이있다. 나는 common.css를 가지고 있고 그 안에 내가 말한다. ... @import url ( "desktop.css") 화면; @import url ( "ipad.css") 전용 화면 및 (device-width : 768px); 이 방법이 올바른지 확실하지 않지만 iPad뿐만 아니라 데스크탑 (IE / FF)에서도 작동합니다. 이 접근 방식에 문제가있을 수 있습니까?
testndtv

6

IE8 이하에서는 미디어 쿼리 가 전혀 지원되지 않습니다.


자바 스크립트 기반 해결 방법

IE8에 대한 지원을 추가하기 위해 여러 JS 솔루션 중 하나를 사용할 수 있습니다. 예를 들어 다음 코드를 사용하여 IE8에 대한 미디어 쿼리 지원을 추가하기 위해 응답 을 추가 할 수 있습니다.

<!--[if lt IE 9]>
<script 
   src="respond.min.js">
</script>
<![endif]-->

CSS Mediaqueries 는 같은 일을하는 또 다른 라이브러리입니다. 해당 라이브러리를 HTML에 추가하는 코드는 동일합니다.

<!--[if lt IE 9]>
<script 
   src="css3-mediaqueries.js">
</script>
<![endif]-->

대안

JS 기반 솔루션이 마음에 들지 않으면 IE <9에 맞게 스타일을 조정하는 IE <9 전용 스타일 시트를 추가하는 것도 고려해야합니다. 이를 위해 코드에 다음 HTML을 추가해야합니다.

<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css" media="all" href="style-ielt9.css"/>
<![endif]-->

노트 :

기술적으로는 CSS 해킹 을 사용하여 IE <9를 대상으로 하는 또 하나의 대안 입니다. IE <9 전용 스타일 시트와 동일한 영향을 미치지 만 별도의 스타일 시트는 필요하지 않습니다. 그러나이 옵션은 잘못된 CSS 코드를 생성하므로 권장하지 않습니다 (CSS 해킹 사용이 오늘날 일반적으로 눈에 띄는 몇 가지 이유 중 하나임).


5

Internet Explorer 8 이전에는 미디어 쿼리가 지원되지 않았습니다. 그러나 경우에 따라 조건부 주석을 사용하여 Internet Explorer 8 이하 만 대상으로 시도 할 수 있습니다. 적절한 CSS 파일 아키텍처를 사용해야합니다.



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.