웹 프론트엔드 HTML 튜토리얼 遇到的浏览器兼容问题及应对方法_html/css_WEB-ITnose

遇到的浏览器兼容问题及应对方法_html/css_WEB-ITnose

Jun 24, 2016 am 11:15 AM

前言:

上周天的时候有个学长找我帮忙做三张页面,因为没有数据交换之类的,只是单纯的前端页面,想着好久没做东西, 看书都看烦了,所以就接了也当是练手。之前因为没有系统的看书,所以其实很多问题都考虑的不全面,属于知其然不知其所以然的状态,虽然现在也还有很多要学的东西,但是知道自己的不足总比不知道强吧?而且这也算是一种进步?总之,遇到各种问题,然后我发现问题主要分为两类,一:我自己知识点不够所以不知道怎么解决的,这种问题大多求问度娘或者问大神是可以搞定的;二:属于确实是现阶段技术存在漏洞的,不论是还没能实现的、实现了但存在歧义或冲突的皆在此列。而就我这次做的页面我遇到最大的问题就是浏览器兼容性的问题,有了解决方法的就在此和大家分享,希望能够抛砖引玉,我也能学到更多的知识,谢谢。

正文:

1.遇到问题:当前浏览器为ie7及以下版本

 解决思路:用一个div覆盖,让用户不能看到正常页面呈现的内容

 实现方法:将正常是显示内容的div的display属性设置为none,将覆盖div的display属性设置为block(PS:在其中可以加入浏览器下载链接,让用户尽快正常浏览页面)

2.遇到问题:ie8中不能实现圆角,因为ie8不能很好的支持css3

 解决思路:下载PIE使得ie8支持css3中的圆角

 实现方法:这里的实现方法就不细说了,下载然后“behavior: url(path/PIE.htc);”把路径更改了就能够访问了,说一下需要注意的几点问题:

      (1)这个引用一定要放在html文件里面,而且路径也是相对于引用的html文件而言的,放在css文件里面不会有效果

      (2)如果发现引用成功之后,需要圆角的对象消失了,不要方,去洗个澡出来就好了,亲测

        开玩笑的,我确实去洗了个澡但是并没有出现,所以代码出现BUG什么的,求神拜佛到底是没用啊(摊手),从头调了一遍,又去百度了一下,发现问题了,是因为z-index的缘故,但只        设置一个z-index没有效果,哦~原来它的position属性不能是static即默认值,ok,设置position为relative就ok啦,完美的圆角在ie8就实现啦~(在此我真诚的感谢写出PIE的工程师        们确实是因为你们的努力才让我如此轻松的实现了我想要的效果,康桑阿米达~)

3.遇到问题:依然是ie8,不能支持css3中的@media screen and (....)实现响应式布局

 解决思路:没办法,谁让它是磨人的小妖精呢?(耸肩)单独写一个js文件获取屏幕宽度,然后再分别添加对应样式

 实现方法:“”放在html中,然后在引入的js文件中实现就ok了。说一个期间遇到的痛苦的事情给大家乐一乐,      我搞了半天,发现莫名其妙就是不行,去网上找了各个大神的代码来,一一对照就是不行!怎么能不行呢,这是多么伤自尊的事情啊。然后发现,居然是因为在"ie9"和“>”之间多了一个空

      (手动再见)。不过调出BUG之后那种成就感还是有的哈,就是知道是因为这个原因,有种“让我想先杀自己100遍好了”的感觉。

      js代码贴在下面,其实原理很简单。主要是其中有innerWidth和clientWidth的一些小区别,如果有疑问的话网上有很多大神的详细解析可以搜来看看。

/*用于兼容ie8实现不同宽度窗口的响应式布局*/function getWidthHeight(){    var wWidth,wHeight;    //获取窗口宽度    if(window.innerWidth){        wWidth = window.innerWidth;    }else if(document.body && document.body.clientWidth){        wWidth = document.body.clientWidth;    }    //获取窗口高度    if(window.innerHeight){        wHeight = window.innerHeight;    }else if(document.body && document.body.clientHeight){        wHeight = document.body.clientHeight;    }    //通过深入Document内部对body进行检测,获取窗口大小    if(window.documentElement && window.documentElement.clientWidth && window.documentElement.clientHeight){        wWidth = window.documentElement.clientWidth;        wHeight = window.documentElement.clientHeight;    }    return {"wWidth":wWidth,"wHeight":wHeight};}$(document).ready(function(){    var wWidth = getWidthHeight().wWidth;    if(wWidth <= 900){        $("body").css("font-size","5px");    }else if(wWidth > 900 && wWidth < 1200){        $("body").css("font-size","8px");    }else if(wWidth > 1200){        $("body").css("font-size","10px");    }});
로그인 후 복사

4.遇到问题:在ie11之前的版本,如果遇到的浏览器兼容问题及应对方法_html/css_WEB-ITnose标签中,则会出现奇怪的蓝色边框

 实现方法:给遇到的浏览器兼容问题及应对方法_html/css_WEB-ITnose加一个“border:0;”绝对立竿见影

5.遇到问题:因为是前台首页,所以写了图片滚动,ie10以下图片莫名出现多余空隙

 实现方法:给遇到的浏览器兼容问题及应对方法_html/css_WEB-ITnose加一句“display:block;”效果卓越

6.遇到问题:竖向显示的文字用了“writing-mode:tb-rl;”但是在去朋友的电脑上调时发现居然在我心爱的FF上没效果,不可能啊???然后发现是因为FF4及以下版本没有实现这个属性,这个属性最初是      由ie想出来的(老实说,我当时有点意外呢,毕竟ie在我心中是个孤僻的天才,属于自己搞点小发明但是都属于破坏向的,所以居然这么好用的属性是被ie想出来的,而且FF居然要到了后来才      实现,不得不说对于我是挺意外的)

 解决思路:没法,有问题就得想办法解决,那就只能一句一句的用ul li嵌套,然后向右浮动,设置定宽来实现了(老实说在用过writing-mode后这个方法很傻而且效果不好)

 实现方法:思路说了,那就直接上代码。

//html部分<br />
로그인 후 복사
//这里的<br>是为了让标点也能够重起一行<br /><ul>        <li>天气真好<br>,天气真好<br>。</li>        <li>天气真好<br>。</li>        <li>天气真好<br>,天气真好<br>。</li>        <li>天气真好<br>?天气真好<br>;</li>        <li>天气真好<br>?</li></ul><br />
로그인 후 복사

//css部分<br />ul{    width: 6em;//em是一个相对单位,比px更好,1em = font-size的大小(如果没有设置font-size则由继承值决定)    overflow: hidden;//保证布局不会崩掉    list-style: none;//把默认样式去除}ul li{    float: right;//实现从右向左布局    width: 1em;//定宽保证只显示一个字    margin-left: 0.2em;//保证每个li包含的内容之间有一定的间隔,能够看清楚    word-break:break-word;//告诉浏览器每个字后自动换行}
로그인 후 복사

以上就是我调兼容性遇到的问题啦,以下就是我之前说的那两类问题,即我能力有限所以遇到的问题,还有就是现存的没有办法解决的问题

一:这个问题归根结底就两字:浮动!(必须任性给它加粗加底线)不论是莫名其妙的这个div就跑到后面去啦;哎,你这个img跟着上面的导航的布局跑什么跑;喂喂,这个p标签怎么这么不负责任呢?和你一起的img都乖乖在下面呆着,你跑到上面这个div里面的p标签旁边是要搞什么,搞基嘛?好吧,我承认这个锅说到底还是要自己背,因为浮动确实很强大,但是用不好会真的有很奇怪的结果出现。所以啊,好好看书吧,在这里骂这些标签或者浏览器感觉它们也挺无辜的。

二:(1)因为要异步加载文件进来,所以用到了JQuery的load方法,但是在谷歌浏览器上面是禁止的,没有办法调但是换到服务器上就好了,同样的还有360也是这样的

  (2)谷歌中不能设置font-size小于12px,这是谷歌的BUG存在挺久的了,虽然不知道为何要一直留着,大概觉得这样很酷?在网上搜到一个解决办法“-webkit-text-adjust:none;”但是我测试没  有成功,谷歌直接禁了,说是没有这个东西。

 

后话:

最后,有一点我个人的小感受,实践确实会学到很多知识,而且没有看书那么枯燥,但是这些知识会很散漫,所以看书这样系统的学习依然是必须的,所以之后会努力结合好两者,希望能有更多的进步吧。还有还有对于ie的一点小小感悟:因为ie很个性,浏览器实现里面特别爱特立独行,所以我之前特别讨厌ie,觉得大概是一群仗着自己很6就不把别人放眼里的天才家伙们,但是现在发现ie其实确实就我个人而言是背锅小天使,它本身对于前端的实现很有想法,很多细致的地方做得很棒,而且对于前端技术的发展也很有前瞻性,所以之前之所以会不住的骂它也是因为自己的无知吧,毕竟作为天才总是有一些不同于常人的脾气才能彰显它作为天才这个事实吧。我不会再毫无理由的骂它了,不过还是真心希望它能够在未来的某天,不要如此折磨我们可爱的前端程序猿了:-)

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

& lt; Progress & Gt의 목적은 무엇입니까? 요소? & lt; Progress & Gt의 목적은 무엇입니까? 요소? Mar 21, 2025 pm 12:34 PM

이 기사는 HTML & lt; Progress & Gt에 대해 설명합니다. 요소, 그 목적, 스타일 및 & lt; meter & gt의 차이; 요소. 주요 초점은 & lt; progress & gt; 작업 완료 및 & lt; meter & gt; Stati의 경우

& lt; datalist & gt의 목적은 무엇입니까? 요소? & lt; datalist & gt의 목적은 무엇입니까? 요소? Mar 21, 2025 pm 12:33 PM

이 기사는 HTML & LT; Datalist & GT에 대해 논의합니다. 자동 완성 제안을 제공하고, 사용자 경험을 향상시키고, 오류를 줄임으로써 양식을 향상시키는 요소. 문자 수 : 159

& lt; meter & gt의 목적은 무엇입니까? 요소? & lt; meter & gt의 목적은 무엇입니까? 요소? Mar 21, 2025 pm 12:35 PM

이 기사는 HTML & lt; meter & gt에 대해 설명합니다. 범위 내에 스칼라 또는 분수 값을 표시하는 데 사용되는 요소 및 웹 개발의 일반적인 응용 프로그램. & lt; meter & gt; & lt; Progress & Gt; 그리고 Ex

HTML5의 크로스 브라우저 호환성에 대한 모범 사례는 무엇입니까? HTML5의 크로스 브라우저 호환성에 대한 모범 사례는 무엇입니까? Mar 17, 2025 pm 12:20 PM

기사는 HTML5 크로스 브라우저 호환성을 보장하기위한 모범 사례에 대해 논의하고 기능 감지, 점진적 향상 및 테스트 방법에 중점을 둡니다.

뷰포트 메타 태그는 무엇입니까? 반응 형 디자인에 중요한 이유는 무엇입니까? 뷰포트 메타 태그는 무엇입니까? 반응 형 디자인에 중요한 이유는 무엇입니까? Mar 20, 2025 pm 05:56 PM

이 기사는 모바일 장치의 반응 형 웹 디자인에 필수적인 Viewport Meta Tag에 대해 설명합니다. 적절한 사용이 최적의 컨텐츠 스케일링 및 사용자 상호 작용을 보장하는 방법을 설명하는 반면, 오용은 설계 및 접근성 문제로 이어질 수 있습니다.

html5 & lt; time & gt; 의미 적으로 날짜와 시간을 나타내는 요소? html5 & lt; time & gt; 의미 적으로 날짜와 시간을 나타내는 요소? Mar 12, 2025 pm 04:05 PM

이 기사는 html5 & lt; time & gt; 시맨틱 날짜/시간 표현 요소. 인간이 읽을 수있는 텍스트와 함께 기계 가독성 (ISO 8601 형식)에 대한 DateTime 속성의 중요성을 강조하여 Accessibilit를 향상시킵니다.

HTML5 양식 유효성 검사 속성을 사용하여 사용자 입력을 유효성있게하려면 어떻게합니까? HTML5 양식 유효성 검사 속성을 사용하여 사용자 입력을 유효성있게하려면 어떻게합니까? Mar 17, 2025 pm 12:27 PM

이 기사에서는 브라우저에서 직접 사용자 입력을 검증하기 위해 필요한, Pattern, Min, Max 및 Length 한계와 같은 HTML5 양식 검증 속성을 사용하는 것에 대해 설명합니다.

& lt; iframe & gt; 꼬리표? 보안을 사용할 때 보안 고려 사항은 무엇입니까? & lt; iframe & gt; 꼬리표? 보안을 사용할 때 보안 고려 사항은 무엇입니까? Mar 20, 2025 pm 06:05 PM

이 기사는 & lt; iframe & gt; 외부 컨텐츠를 웹 페이지, 공통 용도, 보안 위험 및 객체 태그 및 API와 같은 대안을 포함시키는 태그의 목적.

See all articles