CSS 스타일 시트에 대한 IE 제한 사항 및 솔루션
HTML 문서를 CSS와 연결하는 네 가지 일반적인 방법이 있습니다.
-
링크 태그 사용
<link rel="stylesheet" type="text/css" href="sheet.css" />
로그인 후 복사 스타일 요소 사용
<style type="text/css"> body{background:#fff;} h1{font-size:2em;} </style>
로그인 후 복사@import 지시문 사용
<style type="text/css"> @import url(sheet1.css); @import "sheet2.css"; </style>
로그인 후 복사사용 스타일 속성을 사용한 인라인 스타일(inline style)
<p style="color:#f00;">这是红色的字</p>
로그인 후 복사
실제 응용 프로그램에서는 스타일 속성을 사용한 인라인 스타일을 권장하지 않는다고 표준화했습니다. 이유는 매우 간단합니다. 글꼴 태그보다 훨씬 낫고 전체 문서의 모양을 중앙에서 제어하는 CSS의 장점을 약화시킵니다. 처음 세 가지 방법은 링크 태그와 스타일 태그를 사용하며 IE(IE6, IE7 및 IE8 베타1 포함)에서는 다음과 같은 제한 사항이 있습니다.
문서의 처음 31개 링크 또는 스타일 태그와 연결된 CSS만 사용할 수 있습니다. 적용된.
32일부터 태그와 연결된 CSS가 유효하지 않게 됩니다. IE의 공식 문서 HTML 페이지의 처음 30개 스타일 태그 이후의 모든 스타일 태그는 Internet Explorer에 적용되지 않습니다. 또한 .xsl을 사용하는 .xml 파일의 제한 사항을 포함하여 이 제한 사항을 언급합니다. 그런데 수량을 잘못 쓴 것 같습니다. IE에서 참고하세요:
예시 1: 34개의 스타일 태그가 동시에 적용됩니다
예시 2: 1개의 스타일 태그와 34개의 링크 태그가 동시에 적용됩니다
스타일 태그에는 처음 31개만 있습니다. times
@import< /code> 명령이 효과적으로 적용됩니다. <code>@import
指令有效应用。从第32个@import指令开始忽略。请看:
例3:在一个style标记中使用34次
@import
指令。一个css文件只有前31次@import指令有效应用。
从第31个@import指令开始忽略。请看:
例4:用link标记引入一个使用34次
@import
指令的css文件例5:用style标记引入一个使用34次
@import
指令的css文件例6:用link和style标记分别引入一个使用31次
@import
指令以上的css文件一个CSS文件的不能超过288kb?
这个消息来自Internet Explorer CSS File Size Limit。
@import指令下层叠限制不能超过4层
在IE下通过@import指令引入css文件时,第5层会失效。这个限制来自Cascade limit via @import rule。实际上,由于浏览器对多层嵌套的支持不完善,所以即使不得已使用了@import指令引入CSS文件,也不要超过2层。
IE对CSS的限制在绝大部分情况下是不会遇到的,即使遇到最佳的解决方案也应该是手动或者通过后端程序对CSS文件和响应的标记进行合并,最小化的http请求数是优化页面呈现的第一原则。
在IE中,可以通过document.styleSheets
对象(Firefox、Opera9和Safari3.1都支持)修改内联和嵌入样式的值。该对象仅在文档包含style或link元素时可用,其实用document.styleSheets.length
就可以看出IE下这个值最大是31。下面是利用Javascript来合并link
和style
标记来解决IE下的限制:
var fnMergeStyleSheet = function(){ if(!document.styleSheets){ return; } var aSheet = document.styleSheets, aStyle = document.getElementsByTagName('style'), aLink = document.getElementsByTagName('link'); if(aStyle.length + aLink.length < 32 || !aSheet[0].cssText){ //document.styleSheets.cssText 只有IE支持 return; } var aCssText = [],aCloneLink = []; //把style标签中的样式存入,然后删掉该标签,但保留第一个 //因为由getElementsByTagName方法返回值是nodeList,所以删除时循环用倒序 for(var i=aStyle.length-1;i>-1;--i){ var o = aStyle[i]; aCssText.push(o.innerHTML); if(i>0){ o.parentNode.removeChild(o); } } //在IE中只有在31之内的link标签才能通过其styleSheet.cssText获取样式 //无法的获取复制到一个数组aCloneLink中 for(var i=aLink.length-1;i>-1;--i){ var o = aLink[i]; if(o.getAttribute && o.getAttribute('rel')==='stylesheet'){ if(o.styleSheet){ aCssText.push(o.styleSheet.cssText); }else{ aCloneLink.push(o.cloneNode(true)); } if(i>0){ o.parentNode.removeChild(o); } } } var oHead = document.getElementsByTagName('head')[0]; //通过前面的删除,前31个link或者style标记最多只剩下2个 //通过重新增加link节点的方法激活其styleSheet属性,从而获取样式 for(var i = aCloneLink.length-1;i>-1;--i){ var o = aCloneLink[i]; oHead.appendChild(o); aCssText.push(o.styleSheet.cssText); oHead.removeChild(o); } //把所有的样式都复制给第一个标签 aSheet[0].cssText += aCssText.join(''); }
上面仅仅是一个简单的粗糙的解决方案,演示请看例1和例2,可以改进的地方还有:
没有考虑
media
这个属性,如果有多个media
应该分别合并,当然更没有考虑link
标记的rel="alternate stylesheet"
带来的影响。但我更建议通过@media
指令把相应的样式写在同一个文件中,至少可以减少HTTP连接数。没有解决@import指令31次限制的问题,其实可以提取其href值然后进行激活处理。但是实际应用在建议用
link
标记来替代@import指令,因为在IE中@import
指令相当与把link标记写在文档的底部,会导致在IE5/6页面加载时瞬间无样式问题,学名叫“Flash of Unstyled Content”(简称为FOUC)的bug,当然可以通过在文档头中放一个link或script元素可以避免这个bug。-
一般来讲页面之所有出现大量的
🎜32번째 @import 지시어부터 무시하세요. 다음을 참조하세요: 🎜🎜예 3: 스타일 태그에서link
或者style
@import
지시문을 34번 사용합니다. 🎜🎜🎜🎜🎜CSS 파일은 처음 31개의 @import 명령에만 유효합니다. 🎜🎜🎜31번째 @import 지시어부터 무시하세요. 다음을 참조하세요: 🎜🎜예제 4: 링크 태그를 사용하여@import
지시문을 34번 사용하는 CSS 파일을 소개합니다🎜🎜예 5: 스타일 태그를 사용하여 @import 34회 >Css 파일 명령 🎜🎜예 6: 링크 및 스타일 태그를 사용하여@import
명령을 31회 이상 사용하는 CSS 파일 소개 🎜🎜🎜🎜 🎜CSS 파일은 288kb를 초과할 수 없나요? 🎜🎜🎜이 소식은 Internet Explorer CSS 파일 크기 제한에 관한 것입니다. 🎜🎜🎜🎜🎜 @import 지시문의 계단식 제한은 4개 레이어를 초과할 수 없습니다.🎜🎜🎜IE에서 @import 지시문을 통해 CSS 파일을 도입하는 경우 다섯 번째 레이어는 유효하지 않습니다. 이 제한은 @import 규칙을 통한 계단식 제한에서 비롯됩니다. 실제로 다중 레벨 중첩에 대한 브라우저의 불완전한 지원으로 인해 @import 지시문을 사용하여 CSS 파일을 도입해야 하는 경우에도 2레벨을 초과하지 마십시오. 🎜🎜🎜🎜CSS에 대한 IE의 제한 사항은 대부분의 경우 발생하지 않습니다. 최상의 솔루션을 만나더라도 CSS 파일과 응답 태그를 수동으로 또는 백엔드 프로그램을 통해 병합해야 합니다. 최소 http 요청 수를 최대화하는 것입니다. 페이지 렌더링 최적화를 위한 첫 번째 원칙. 🎜🎜IE에서는document.styleSheets
객체를 통해 인라인 및 임베디드 스타일의 값을 수정할 수 있습니다(Firefox, Opera9 및 Safari3.1에서 지원됨). 이 개체는 문서에 스타일 또는 링크 요소가 포함된 경우에만 사용할 수 있습니다. 실제로document.styleSheets.length
를 사용하면 IE에서 최대값이 31임을 알 수 있습니다. 다음은 IE의 제한 사항을 해결하기 위해 Javascript를 사용하여link
및style
태그를 병합하는 것입니다. 🎜rrreee🎜위는 간단하고 대략적인 해결책입니다. 예 1 참조 예 2와 마찬가지로 개선할 수 있는 영역이 있습니다. 🎜🎜🎜🎜미디어
속성을 고려하지 않았습니다.미디어
가 여러 개인 경우 병합해야 합니다. 물론,link
의rel="alternate stylesheet"
태그의 영향입니다. 하지만@media
지시문을 통해 동일한 파일에 해당 스타일을 작성하는 것이 좋습니다. 이렇게 하면 최소한 HTTP 연결 수를 줄일 수 있습니다. 🎜🎜🎜🎜은 @import 명령의 31회 제한 문제를 해결하지 못합니다. 실제로 href 값을 추출한 다음 활성화할 수 있습니다. 그러나 실제 애플리케이션에서는 IE의@import
지시문이 링크 태그를 작성하는 것과 동일하므로 @import 지시문을 대체하기 위해link
태그를 사용하는 것이 좋습니다. IE5/6에서 문제를 일으키는 문서 하단 페이지가 로드될 때 스타일 문제가 없습니다. 학명은 "Flash of Unstyled Content"(FOUC라고도 함) 버그입니다. 물론 이 버그는 발생할 수 있습니다. 문서 헤더에 링크나 스크립트 요소를 배치하면 이를 방지할 수 있습니다. 🎜🎜🎜🎜일반적으로 페이지에 많은 수의링크
또는스타일
태그가 나타나면 그 중 대부분이 동일할 가능성이 높습니다. aCssText를 병합하기 전에 항목을 줄입니다. 🎜
DOM에 있는 기존 스타일 요소를 사용하지 않고 cssText 속성을 통해 직접 스타일 코드를 추가하는 경우, 새로운 스타일 요소를 만들어 추가할 경우 반드시 먼저 DOM에 새 스타일 요소를 추가해야 하며, 그런 다음 cssText 속성을 통해 스타일 코드를 추가합니다. 반대로 추가된 스타일 코드는 추가되기 전에 IE6의 스타일 파서에 의해 파싱된 것으로 보이므로 !important와 해킹이 모두 유효하지 않습니다. 예제 7을 참조하세요. 새로운 스타일 요소를 추가하여 새로운 스타일을 추가하는 것은 IE의 한계에 쉽게 도달할 수 있으므로 권장되지 않습니다.
위 내용은 CSS 스타일 시트에 대한 IE 제한 사항 및 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











부트 스트랩 버튼을 사용하는 방법? 부트 스트랩 CSS를 소개하여 버튼 요소를 만들고 부트 스트랩 버튼 클래스를 추가하여 버튼 텍스트를 추가하십시오.

Bootstrap에 이미지를 삽입하는 방법에는 여러 가지가 있습니다. HTML IMG 태그를 사용하여 이미지를 직접 삽입하십시오. 부트 스트랩 이미지 구성 요소를 사용하면 반응 형 이미지와 더 많은 스타일을 제공 할 수 있습니다. 이미지 크기를 설정하고 IMG-Fluid 클래스를 사용하여 이미지를 적응할 수 있도록하십시오. IMG 통과 클래스를 사용하여 테두리를 설정하십시오. 둥근 모서리를 설정하고 IMG 라운드 클래스를 사용하십시오. 그림자를 설정하고 그림자 클래스를 사용하십시오. CSS 스타일을 사용하여 이미지를 조정하고 배치하십시오. 배경 이미지를 사용하여 배경 이미지 CSS 속성을 사용하십시오.

부트 스트랩 프레임 워크를 설정하려면 다음 단계를 따라야합니다. 1. CDN을 통해 부트 스트랩 파일 참조; 2. 자신의 서버에서 파일을 다운로드하여 호스팅하십시오. 3. HTML에 부트 스트랩 파일을 포함; 4. 필요에 따라 Sass/Less를 컴파일하십시오. 5. 사용자 정의 파일을 가져옵니다 (선택 사항). 설정이 완료되면 Bootstrap의 그리드 시스템, 구성 요소 및 스타일을 사용하여 반응 형 웹 사이트 및 응용 프로그램을 만들 수 있습니다.

답 : 부트 스트랩의 날짜 선택기 구성 요소를 사용하여 페이지에서 날짜를 볼 수 있습니다. 단계 : 부트 스트랩 프레임 워크를 소개하십시오. HTML에서 날짜 선택기 입력 상자를 만듭니다. 부트 스트랩은 선택기에 스타일을 자동으로 추가합니다. JavaScript를 사용하여 선택한 날짜를 얻으십시오.

부트 스트랩의 날짜를 확인하려면 다음 단계를 따르십시오. 필요한 스크립트와 스타일을 소개하십시오. 날짜 선택기 구성 요소를 초기화합니다. 검증을 활성화하려면 데이터 BV 날짜 속성을 설정합니다. 검증 규칙 (예 : 날짜 형식, 오류 메시지 등) 구성; 부트 스트랩 검증 프레임 워크를 통합하고 양식이 제출 된 경우 날짜 입력을 자동으로 확인하십시오.

파일 업로드 기능은 Bootstrap을 통해 구현할 수 있습니다. 단계는 다음과 같습니다. 부트 스트랩 CSS 및 JavaScript 파일을 소개합니다. 파일 입력 필드를 만듭니다. 파일 업로드 버튼을 만듭니다. 파일 업로드를 처리합니다 (FormData를 사용하여 데이터를 수집 한 다음 서버로 전송); 사용자 정의 스타일 (선택 사항).

Bootstrap은 내비게이션 막대 설정을위한 간단한 안내서를 제공합니다. 내비게이션 바 컨테이너 추가 브랜드 아이덴티티 추가 내비게이션 링크 추가 (선택 사항) 스타일 조정 스타일 (선택 사항)
