响应式网页IE兼容问题,简单思路

本文阅读 4 分钟
广告

IE兼容问题一直是入门的前端开发者最无可奈何的地方(只会兼容IE的除外)。而我也是上班了几个月才能真正的还是深入研究这个问题,不过倒也没有遇到太多的麻烦,其实个人认为要想网页的SEO优化好,面向访问者范围大,还是使用电脑手机分端比较好,响应式说得好听点,一个页面加载不同设备的界面,说不好听的,每个分辨率都无法做太复杂的设计,要兼顾的东西太多,代码最终会变得异常庞大。
我这篇文章主要讲的是布局兼容问题,不提什么圆角啊,半透明啊,内外边距之类的。

思路一,分辨率大于1200px不使用@media申明

一般来说都会这样写:

@media all and (min-width: 1201px) {
    div{width:500px;}
}
@media all and (max-width: 1200px) {
    div{width:100%;}
}

但是如果要IE直接识别你在分辨率大于1200px的情况,可以直接这样写:

div{width:500px;}
@media all and (max-width: 1200px) {
    div{width:100%;}
}

我已经十分精简的了,其实就相当于,当你定义了除分辨率大于1200px之外的所有情况,那么大于1200px分辨率的@media申明就可以直接不写了,而IE浏览器的老版本正好都不支持@media申明,也就是说他会正常的解析大于1200px的情况。相对的,谷歌等一般浏览器都会识别@media申明,也就是说IE浏览器会变为非响应式,直接是PC布局,而其它浏览器的响应式不受影响。
这种做法的好处是代码量少,加载快,缺点是IE会因为不识别@media而不会响应式,只会变为pc布局。

思路二,不同浏览器加载不同css

这个思路简化一下,就是IE访问则额外加载一个css来保持兼容,代码大概是这样:

<!--[if gte IE 8]>  <link rel="stylesheet" type="text/css" href="ie8.css"/> <![endif]-->

数字8随意改就好,代表不同的IE版本,可以直接添加多条,ie8.css里面就负责写在IE下错位后帮助回归正常的css样式。
这种做法的好处是变化灵活,局限性小,缺点是IE依旧不会是响应式,而且代码量很大。

思路三,js实现对屏幕分辨率的判断

这是一种很复杂,但是对于响应式而言最优的解决办法,但因为十分耗资源我不怎么推荐,因为IE下做响应式没有半点卵用,它又没手机版,所以以下代码就是演示js不同分辨率加载不同css,浏览器一般都会识别js,而不会出现类似@media申明的情况。

<link href="" rel="stylesheet" type="text/css" id="css" />  //id等于css的空路径样式
<script type="text/javascript"> 
window.onload=function(){ 
    var w=window.screen.width;//获取屏幕分辨率大小
    var c;
    if(1200>w>=1000){ //分辨率小于1200大于等于1000
        c="c2.css";
    } else if(999>w>=768){  //分辨率小于999大于等于768
        c="c1.css";
    } else if(767>w){  //分辨率小于767
        c="c0.css";
    }
    document.getElementById("css").href=c;  //将文件路径写入到css样式引入标签
} 
</script> 

这种做法的好处就是IE在不同分辨率下也可以变为不同的布局,基本和响应式差不多,缺点很明显,首先是太麻烦,其次不能实时响应,每次都需要刷新。
其实我觉得思路三并没有什么卵用,但值得记录。

本文来自投稿,不代表本站立场,如若转载,请注明出处:https://www.ruletree.club/archives/725/
苏苜: 那条时光流转的小巷曾来过
« 上一篇 07-08
牧昇:我多想再见你
下一篇 » 07-11
广告

发表评论

成为第一个评论的人

作者信息

热门文章

标签TAG

热评文章