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

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

最近在解决UI问题时碰到以下浏览器不兼容性问题(本人属于UI业余操作者,很多想法就很业余了):

问题: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());
    });
});
navigateLowerIE8.css文件就是IE8其低版本浏览器在缩小时的页面布局了。OK,一切都确实搞定。


参考:http://www.cnblogs.com/softlover/archive/2012/11/21/2781388.html

js 使用js的CreateElement方法创建元素、样式表动态引入 .动态创建link方式 我们可以使用link的方式.如下代码所示. function addCssByLink(url){ var doc=document; var link=doc.createElement("link"); link.setAttribute("rel", "stylesheet"); link.setAttribute("type", "tex 阅读详情

相关推荐

FPGA实战:基于Verilog状态机的会议发言限时器设计

在数字逻辑设计中,FPGA以其并行处理和硬件时序确定性成为嵌入式系统开发的优选方案。Verilog作为硬件描述语言,能够精确描述底层电路行为,而状态机则是实现复杂控制逻辑的核心方法。按键消抖、时钟分频、数码管动态扫描等经典模块,共同构成了从概念到落地的完整技术链路。该类技术广泛应用于工业控制、交通信号、赛事计时等对实时性要求严格的场景。在会议管理中,超时提醒往往依赖人工干预,效率低且易尴尬。通过FPGA实现硬件级限时器,利用并行逻辑同时驱动计时、显示与声光提醒,可确保微秒级响应,摆脱软件调度延迟。本文从需求

weixin_34268169的博客 463

jquery media插件 在线显示pdf (兼容ie 各个版本 ,火狐,谷歌)

jquery media插件

让@media screen兼容ie8/ie7/ie6

Respond.js让不支持css3 Media Query的浏览器包括IE6-IE8等其他浏览器支持媒介查询,亲测可用。(注意:需要大家放到服务器上再使用,不能跨域使用,放到虚拟空间中也可以进行测试,本地测试ie6-8无效果)

php 向html追加元素,如何动态生成html元素以及为元素追加属性的方法介绍(附代码)...

本篇文章给大家分享的是关于如何动态生成html元素以及为元素追加属性的方法介绍(附代码),内容很不错,有需要的朋友可以参考一下,希望可以帮助到大家。动态生成HTML元素的方法有三种:第一种:document.createElement()创建元素,再用appendChild( )方法将元素添加到指定节点var link = document.createElement('a');link.setA...

weixin_36154762的博客 854

css中@media写法在ie 、firefox、Opera、Chrome、Safari 浏览器中的支持

@media only screen and (min-width: 1024px)最小宽度1024 Safari 版本5.1。7(7534.57.2)支持chrome 版本26.0.1410.64 m 支持opera 版本12.15 支持fireFox版本21.0 支持IE10 版本10.0.92000.16580 支持 @media only screen and (max-width: 1024px)最大宽度 同上都支持 @media only screen and(min-width:800p...

u011927449的博客 1473

css3低版本浏览器兼容性问题

css3低版本浏览器兼容性问题 什么是浏览器兼容性问题? 浏览器内核不同,对同一段代码会有不同的解析,就会造成页面效果不统一的情况,进而造成浏览器兼容性问题。 各个浏览器内核: 浏览器类型     内核               JS引擎 IE                 Trident &nb

weixin_43939708的博客 1979

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

针对IE8以下不支持css3media query,可以使用response.js解决 下载地址:https://github.com/scottjehl/Respond/ 这里有一篇关于其实现原理的文章:http://caibaojian.com/respondjs.html 引用时的注意点:   不可将媒介查询代码写在html内部,因为response是通过ajax分析link...

weixin_30588907的博客 97

Respond.js:让IE 6-8焕发新生的CSS3 Media Queries极速兼容方案

你是否仍在为企业内网中大量存在的IE 6-8浏览器无法支持响应式设计而头疼?当现代浏览器早已普及CSS3 Media Queries(媒体查询)特性时,这些老旧浏览器却无法识别`min-width`和`max-width`规则,导致网页在不同设备上显示错乱。Respond.js作为一款轻量级的Polyfill(兼容性补丁),以仅3KB的体积(minified版本)和高效的性能,为这些"古董"浏览器...

gitblog_00546的博客 598

CSS之Responsive设计和CSS3 Media Queries的结合

css

tian361zyc的博客 558

cssmedia的用法

css2中允许我们使用media的属性,例如使用screen和print,我也写过一篇关于使用CSS media的print来定义打印网页的样式的文章,关于css2中的media文章,推荐下w3c的。今天来说说CSS3Media QueriesCSS3中不仅仅可以使用screen和print,而且支持多媒体多分辨率的样式表。我们先来看下CSS3 Media Queries的演示实例:css3m

火火的专栏 2596

css3 media query orientation,Css3Media Query方法总结

最近几年,大屏幕手机和ipad等移动设备的流行,使你的网页兼容移动设备已成为一种流行!移动设备的屏幕大小是五花八门,各式各样!要想很好的兼容移动设备,Css3media技术是功不可没。我的博客,应用了CSS3media技术,使其在手机等移动设备上面也可以查看。当然,只凭css3media技术,做好手机网站是远远不够的,手机网站注意事项和总结,后面会陆续出一些文章,欢迎持续关注!好了,废话少说...

weixin_33295463的博客 222

CSS3(四)Media Queries 与Responsive 设计

随着科学技术不断的向前发展,网页的浏览终端越来越多样化,用户可以通过:宽屏电视、台式电脑、笔记本电脑、平板电脑和智能手机来访问你的网站。尽管你无法保证一个网站在不同屏幕尺寸和不同设备上看起来完全一模一样,但至少要让你的Web页面能适配用户的终端,让他更好的呈现在你的用户面前。首先我们要了解常见的媒体类型: Screen、All和Print为最常见的三种媒体类型。 Screen——电脑显示器 A

qq_25178609的博客 594

CSS media queries 媒体查询

最近在做一些页面打印时的特殊处理接触到了media queries,想系统学习一下,在MOZILLA DEVELOPER NETWORK看到一篇文章讲的很不错,结合自己的使用总结一下。 CSS2/mediaCSS2中可以使用media属性可以使特定style只在指定媒体类型下其作用,比如页面有些部分需要在打印的时候隐藏或者变大,这时候可以使用media使某些style只在打印的时...

172

css3 media媒体查询器用法总结

准备工作1:设置Meta标签首先我们在使用Media的时候需要先设置下面这段代码,来兼容移动设备的展示效果: <name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> 这段代码的几个参数解释:width = d...

dengying1570的博客 95

浏览器兼容性问题解决方案 · 总结

浏览器兼容性问题解决方案 · 总结普及:浏览器的兼容性问题,往往是个别浏览器(没错,就是那个与众不同的浏览器)对于一些标准的定义不一致导致的。俗话说:没有IE就没有伤害。贴士:内容都是自己总结的,不免会出现错误或者bug,欢迎更正和补充,本帖也会不断更新。Normalize.css不同浏览器的默认样式存在差异,可以使用 Normalize.css 抹平这些差异。当然,你也可以定制属于自己业务的 re

逆夏的博客 4万+

Respond.js – 让不懂爱的 IE6-8 支持 CSS3 Media Query

  Respond.js 是一个快速、轻量的 polyfill,用于为 IE6-8 以及其它不支持CSS3 Media Queries浏览器提供媒体查询的min-width 和 max-wid...

qq_29069777的博客 130

media queries常用介绍及兼容性问题解决

媒体查询media queries,响应式布局的利器。 本文分两块内容: 一,常用介绍 二,如何解决IE不支持的问题一、常用介绍 如果有能力看官网(强烈推荐)的话,下面的介绍(常用的部分)可以不用看了,地址 :https://www.w3.org/TR/css3-mediaqueries 1,常用的两种引入 a, 通过link media =“type and (attribut

simonyuan100的博客 985

IE8兼容css3媒体查询

不支持CSS3 Media Queryes特性的浏览器能够支持响应性设计,尤其是小于等于8ie浏览器解决方法是Respond.js插件。 Respond.js缺陷 1.脚本仅仅对min-width 和 max-width media queries 以及所有的media types(screen,print,等等)不支持浏览器提供支持,引用Respond.js脚本,放到所有css文件之...

少油少盐不要辣 522
上一篇: WIN7升级IE9或IE10后打开网页即出现白屏(空白)的处理方法
下一篇: CSS计数器在display为none时无法正确使用的解决方法
wuruixn
博客等级 码龄18年 112粉丝 42原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值