IE8及低版本浏览器不支持CSS3 media queries的解决方法

问题:IE8及其以下低版本IE浏览器在缩小窗口时,UI没有按照相应的要求显示窗口缩小时对应的布局;其他浏览器正常。

定位过程:

其实开始拿到问题时是无从下手,不知所以然,根本就没听说还有media这个CSS属性,就更不知道它的功能了。但是对于解决UI问题,有自己的一套思路,就是首先要思考为什么会错误以及为什么没有错误两个方面,然后针对这两个方面的疑问把html或js或css文件简化再简化,修改再修改,查看UI变化,从而缩小问题范围,最后找出问题根源。

如此我就想为什么其他浏览器界面布局没有问题呢?因此不断的部分删减CSS文件代码,通过IE8以外的浏览器查看页面布局,如此反复终于突然看到IE8以外的浏览器也出现上面的问题了,哈哈,达到目的了,根源就在这里面,再精确定位该部分,发现原来是@media screen and (max-width: 900px) ...在起作用,什么东西啊,没见过,百度吧,或者直接W3C,弄明白它是干啥的就知道前面的为什么了。

问题根源:

在项目的CSS文件中采用了media这东东来根据视窗的大小自动调整布局,但是,但是IE8及以下版本浏览器不支持CSS3 media queries,也就是@media screen and (max-width: 900px) 里面的css代码没有执行,

@media screen and (max-width: 900px) {   ... }

这如何是好啊,网上倒是有不少人提出解决方法,最简单的方法就是:

IE8和之前的浏览器不支持CSS3 media queries,你可以在页面中添加css3-mediaqueries.js来解决这个问题。

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

原来如此,还挺简单嘛,结果大失所望啊,项目中怎么试怎么就不行呢,还望试过可行的同仁点拨点拨啊,没办法只能采用另一种稍微复杂些的方法,也是从网上学来,这里要考虑两个问题,一是只有IE8及其低版本才做此处理,二是只有浏览器缩小到某一个大小范围后才做此处理。方法如下:

原理:采用jquery,其实不懂,会用就行,然后在html中根据需要来改变对应的CSS文件

解决方法:

在所以页面的共用js文件后面添加如下代码:

/*Adjust the layout in IE8 and lower than IE8 when the browser is narrow*/
function processLowerIENavigate()
{
   var isIE = document.all ? 1 : 0;
   if (isIE == 1)
   {
       if(navigator.userAgent.indexOf("MSIE7.0") > 0 || navigator.userAgent.indexOf("MSIE 8.0") > 0)
       {
    //  var doc=document;
           var link=document.createElement("link");
           link.setAttribute("rel", "stylesheet");
           link.setAttribute("type", "text/css");
           link.setAttribute("id", "size-stylesheet");
           link.setAttribute("href", "");

           var heads = document.getElementsByTagName("head");
           if(heads.length)
               heads[0].appendChild(link);
           else
               document.documentElement.appendChild(link);

           document.write("<script type=‘text/javascript‘ src=‘jquery.min.js‘></script>");
           document.write("<script type=‘text/javascript‘ src=‘media_screen.js‘></script>");

       }
   }
}
var lowerIE8 = processLowerIENavigate();

media_screen.js文件内容如下,直接从网上copy:

function adjustStyle(width) {
    width = parseInt(width);
    if (width < 902) {
//alert("<900");
//alert(width);
        $("#size-stylesheet").attr("href", "navigateLowerIE8.css");
    } else {
      // alert(">900");
  //alert(width);
       $("#size-stylesheet").attr("href", "");
    }
}

$(function() {
    adjustStyle($(this).width());
    $(window).resize(function() {
        adjustStyle($(this).width());
    });
});

文件就是IE8其低版本浏览器在缩小时的页面布局了。OK,一切都确实搞定。

时间: 2024-10-21 09:41:54

IE8及低版本浏览器不支持CSS3 media queries的解决方法的相关文章

让IE低版本浏览器也支持placeholder属性

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head>     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />     <title>让IE低版本浏览器也支持placeholder属性</title>    

IE8以下不支持css3 media query的解决办法

针对IE8以下不支持css3的media query,可以使用response.js解决 下载地址:https://github.com/scottjehl/Respond/ 这里有一篇关于其实现原理的文章:http://caibaojian.com/respondjs.html 引用时的注意点: 不可将媒介查询代码写在html内部,因为response是通过ajax分析link引入的css文件,故html里面的样式将被忽略. 引入文件需在css引入之后 <!--[if lte IE 8]>

针对ie8等低版本浏览器document.getElementsByName方法不生效解决方法

function getByName(Name){ var i = document.getElementsByName(Name); if(i>0){ return i; }else{ var aele = document.getElementsByTagName('*'); var arr = []; for (var i = 0;i<aele.length;i++){ if(aele[i].getAttribute("name")==Name){ arr.push(

CSS3 Media Queries 实现网页自适应

文章转载自:爱思资源网http://www.aseoe.com/show-10-261-1.html 导语 接下来会展示如何运用 HTML5 和 CSS3 来设计一个自适应网页.当今银屏分辨率从 320px (iPhone) 到 2560px (大屏显示器) 或者更大.人们也不再仅仅用台式机来浏览网页,现在有手机,平板电脑等等.所以现在屏幕分辨率的范围很大,从 320px (iPhone) 到 2560px (大型显示器),甚至更大.用户也不只是使用台式电脑访问web站点了,他使用手机.笔记本电

HTML5实践 -- 使用CSS3 Media Queries实现响应式设计

转载请注明原创地址:http://www.cnblogs.com/softlover/archive/2012/11/21/2781388.html 现在屏幕分辨率的范围很大,从 320px (iPhone) 到 2560px (大型显示器),甚至更大.用户也不只是使用台式电脑访问web站点了,他使用手机.笔记本电脑.平板电脑.所以传统的设置网站宽度为固定值,已经不能满足需要了.web设计需要适应这种新要求,页面布局需要能够根据访问设备的不同分辨率自动进行调整.本教程将会向你介绍,如何使用htm

&lt;转&gt;CSS3 Media Queries 实现响应式设计

在 CSS2 中,你可以为不同的媒介设备(如屏幕.打印机)指定专用的样式表,而现在借助 CSS3 的 Media Queries 特性,可以更为有效的实现这个功能.你可以为媒介类型添加某些条件,检测设备并采用不同的样式表. 例如,你可以把用于大屏幕上显示的样式和用于移动设备的专用样式放在一个样式文档中,这样,在不改变文档内容的情况下,不同的设备可以呈现不同的界面外观.阅读这篇文章学习 CSS3 Media Queries 的基本功能和国外使用 CSS3 的 Media Queries 特性的优秀

让IE支持CSS3 Media Query实现响应式Web设计

如今的屏幕分辨率,小至320px(iPhone),大到2560px甚至更高(大显示器),变化范围极大.除了使用传统的台式机,用户会越来越多的通过手机.上网本.iPad一类的平板设备来浏览页面.这种情况下,固定宽度的设计方案将会显得越发不合理.页面需要有更好的适应性,其布局结构要做到根据不同的设备及屏幕分辨率进行响应调整.接下来,我们将了解一下怎样通过html5和css3 Media Queries(媒介查询)相关技术来实现跨设备跨浏览器的响应式web设计方案.我们需要在页面中调用css3-med

H5/CSS3 media queries 兼容IE

在html页面中我们经常看到 <!--[if lt IE 9]>    //判断当前浏览器的版本是否小于IE 9 <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js">

jQuery封装placeholder效果,让低版本浏览器支持该效果

页面中的输入框默认的提示文字一般使用placeholder属性就可以了,即: <input type="text" name="username" placeholder="请输入用户名" value="" id="username"/> 最多加点样式控制下默认文字的颜色 input::-webkit-input-placeholder{color:#AAAAAA;} 但是在低版本的浏览器却不支