최근에 웹사이트를 만들었는데 늘 부트스트랩이 참 좋다고 생각했는데 이번에는 크롬, 파이어폭스, 사파리, 오페라, 360 브라우저(속도모드), 소고우 브라우저 등에서 문제가 없네요. 그런데 IE8과 IE11에서 해당 스타일이 표시되지 않는 것을 발견하고 여러 바이두를 검색해본 결과, 한 네티즌의 게시물의 도움으로 최종적으로 문제를 해결했습니다. 해결 방법은 다음과 같습니다.
먼저 HTML 페이지 시작 부분에 DOCTYPE 선언이 있는지 확인해야 합니다. DOCTYPE은 HTML 문서를 구문 분석하는 데 사용할 HTML 또는 XHTML 사양을 브라우저에 알려주며 특히 다음에 영향을 미칩니다.
속성 및 속성 표시를 위한 제약 규칙
이는 브라우저의 렌더링 모드에 영향을 미칩니다. 다양한 렌더링 모드는 브라우저의 CSS 코드 분석 및 JavaScript 스크립트에도 영향을 미칩니다
DOCTYPE은 매우 중요합니다. 현재 모범 사례는 HTML 문서의 첫 번째 줄에
을 입력하는 것입니다.
<!DOCTYPE html>
마스터님의 글에는 부트스트랩을 검색하는 여러 가지 이유가 정리되어 있습니다. 우선 Bootstrap3는 모바일 기기를 먼저 원칙으로 개발되었기 때문에 그 이유는 다음과 같습니다.
1. 원격 주소가 제대로 호출되지 않습니다
즉, IE9 이하라면 특수 j 2개가 호출됩니다
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> <!--[if lt IE 9]> <script src="http://apps.bdimg.com/libs/html5shiv/3.7/html5shiv.min.js"></script> <script src="http://apps.bdimg.com/libs/respond.js/1.4.2/respond.min.js"></script> <![endif]-->
근데 테스트해본 결과 위의 js 파일만 사용하는 것은 불가능하다는 것을 알았습니다.
2. 호출 방식이 올바르지 않습니다
respon.min.js, response.js 또는 css 파일을 참조하기 위해 file:// 또는 @import 양식을 사용하지 마세요.
3. 브라우저의 내용을 표시합니다(메타 태그를 사용하여 브라우저의 렌더링 방법을 조정합니다)
부트스트랩은 IE 호환 모드를 지원하지 않습니다. IE 브라우저가 최신 렌더링 모드를 실행할 수 있도록 다음 태그가 페이지에 추가됩니다
IE=edge는 IE의 최신 커널이 강제로 사용됨을 의미합니다. chrome=1은 IE6/7/8 및 기타 버전용 브라우저 플러그인 Google Chrome Frame이 설치된 경우(사용자의 브라우저가 여전히 IE의 메뉴와 인터페이스는 다르지만 사용자가 웹을 탐색할 때 실제로는 Chrome 브라우저 커널이 사용됩니다.) 그런 다음 렌더링에는 Chrome 커널이 사용됩니다. 이 메타 태그에 대한 자세한 설명은 StackOverflow의 우수한 답변을 참조하세요. 태그에 대한 영어 전문 설명은
를 참조하세요.
http://stackoverflow.com/questions/6771258/whats-the-difference-if-meta-http-equiv-x-ua- Compatible-content-ie-edge-e
문장을 추가했어요
그럼 됐어요
커널이 메타 태그를 제어합니다. 현재 국내 주류 브라우저는 듀얼 코어이기 때문에 브라우저에 페이지 렌더링에 사용할 커널을 알려주기 위해 메타 태그가 추가됩니다
4.IE8은 컨테이너의 여러 속성을 지원하지 않습니다
IE8은 min-width, max-width, min-height 또는 max-height가 포함된 box-sizing: border-box 사용을 완전히 지원하지 않습니다. 따라서 부트스트랩 v3.0.1의 컨테이너 클래스는 더 이상 Use max가 아닙니다. -너비.
5. JS, CSS 도입 순서에 따른 문제
CSS를 먼저 인용하고 그 다음에 js를 인용해야 합니다
<link rel="stylesheet" type="text/css" href="bootstrap.min.css" media="screen"/> <script type="text/javascript" src="js/respond.min.js"></script>
6. DOCTYPE 앞뒤에 빈 줄이 있습니다
여기에 공백이 있으면 작동하지 않으므로 공백을 제거해야 합니다
7. bootstrap.css를 수동으로 수정할 수도 있습니다
bootstrap2.1.1을 사용하는 경우 navbar-inner{ filter:none}을 수정하면 문제를 해결할 수 있습니다. 버전 3.0을 사용하는 경우에는 이 코드를 더 이상 사용할 수 없습니다. 자세한 내용은
링크를 참조하세요.
http://stackoverflow.com/questions/12460190/bootstrap-navbar-does-not-show-in-ie8
8. 쿼크 모드(호환 모드)를 사용하세요
웹페이지를 정의할 때 이전 브라우저와 호환되는 모드가 쿼크 모드이고, 해당 "표준 모드"가 표준 모드입니다. 구체적으로 이전과 같이 을 작성하세요.
http://www.w3.org/TR/html4/strict.dtd">
테스트해봤는데 작동하지 않습니다
드디어 IE11에서 테스트를 통과했는데, IE8에서 테스트를 해보니 자리표시자가 지원되지 않는 문제를 발견했습니다
다음은 IE 지원 자리 표시자 문제를 해결하는 방법입니다
이 글에 인용된 jquery는 1.11.1이고 테스트를 통과했습니다. 첫 번째 인용문은 jquery
입니다.
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
다른 jquery 버전을 사용할 수도 있습니다
그런 다음
를 소개하세요.
jquery.placeholder.js 파일 다운로드 주소https://github.com/mathiasbynens/jquery-placeholder
그런 다음 파일에 코드를 추가하세요.
<script type="text/javascript"> $(function () { // Invoke the plugin $('input, textarea').placeholder(); }); </script>
위의 IE6, 7, 8, 9, 10, 11, chrome, firefox, safari, Opera, 360 브라우저(속도 모드), Sogou 브라우저 테스트를 통과했으며 IE5.5만 실행 가능하지 않은 것 같습니다. 간단히 말해서 문제입니다. 이쯤 되면 사악한 IE6 - 그냥 간장이라고 부르면 된다