IE兼容

  • 如何调试 IE 浏览器
    • 如何在IE浏览器内调试代码
      1. IE8及以上可以使用开发者工具


        console
      2. 在低版本的IE浏览器中可以用border: 1px solid;为调试元素加边框来起到调试的目的
    • 如何测试在IE浏览器中的兼容性
      1. 使用IE Tester模拟IE的环境,可以从IE5到IE11,缺点是不够准确,而且也不能调试JS


        IE TESTER
      2. 使用虚拟机,在虚拟机中安装旧版操作系统和浏览器
        • 自己安装虚拟机


          Vitual Box
        • 对低版本IE有兼容需求的公司会架设远程的虚拟机供员工进行调试
        • 利用高版本IE的文本模式,例如IE8就可以选择IE8的标准模式或者IE7的标准模式


          IE8文本模式
  • 什么是CSS hack?在 CSS 和 HTML里如何写 hack?在 CSS 中 ie6、ie7的 hack 方式?
    • 因为早期不同浏览器的渲染标准不一致,导致同样的CSS语句在不同的浏览器当中有不同的表现,为了解决这些历史遗留下来的问题,就利用浏览器的BUG去解决这些问题,这就叫做CSS hack
    • CSS hack 分类
      1. Property/Value Hacks
        在CSS的属性值前面加入只有低版本的浏览器才认识的符号,例如
      .selector {
          *property: value;
      }
      

      在属性前面加星号在一般浏览器当中不被认可,但是在IE7及以下的版本会认为这是合法的语句,会得到执行


      Property/Value hack
      1. IE CC(Conditional comments)
        在HTML中可以把对低版本IE写的样式添加在IE的条件注释当中,例如
      <!--[if IE]>
          <link rel="stylesheet" href="#">
      <![endif]-->
      

      这样的注释只有在IE中才被认可,在其他浏览器中会被当成一般注释


      IE CC
    • 在IE6、7的hack方式
      1. Prooerty/Vaule hack
        IE<=7
    .selector { !property: value; }
    .selector { $property: value; }
    .selector { &property: value; }
    .selector { *property: value; }
    .selector { )property: value; }
    .selector { =property: value; }
    .selector { %property: value; }
    .selector { +property: value; }
    .selector { @property: value; }
    .selector { ,property: value; }
    .selector { .property: value; }
    .selector { /property: value; }
    .selector { `property: value; }
    .selector { ]property: value; }
    .selector { #property: value; }
    .selector { ~property: value; }
    .selector { ?property: value; }
    .selector { :property: value; }
    .selector { |property: value; }
    
    .selector { property: value !ie; }
    
    IE6-8
    .selector { property: value\9; }
    .selector { property/*\**/: value\9; }
    
      2. Conditional Comments
    
    其中lt、lte、gt、gte分别表示less than、less than equal、greter than、greater than equal
    IE<=7
    <!--[if lte IE 7]>
        <link rel="stylesheet" href="#">
    <![endif]-->
    
    IE6
    <!--[if IE 6]>
        <link rel="stylesheet" href="#">
    <![endif]-->
    
    IE7
    <!--[if lte IE 7]>
        <link rel="stylesheet" href="#">
    <![endif]-->
    
  • 列举几种浏览器兼容问题
    1. opacity属性在IE8只有部分支持,即可以用filter属性达到同样的效果
      can i use

      在chrome下的表现
      chrome

      在IE11中文档模式下看到的IE8
      IE8表现

      通过查询知道在IE8,可以使用
            -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";

IE8透明

2. display: inline-block;在IE6、7没有效果
can i use

在chrome的表现
chrome

在IE7的表现
IE7

在IE6、7中只有默认行内元素才可以有display: inline-block;的效果,可以用以下代码解决

            *display: inline;
            zoom: 1;

实现后的效果


实现display: inline-block;
  • 针对兼容、多浏览器覆盖有什么看法?渐进增强和优雅降级是什么意思?

    • 对于浏览器的兼容,首先要做好调研,判断自己的产品到底有没必要对浏览器进行兼容,而且兼容到哪些程度。例如,我的产品受众大部分是年轻人,那么年轻人中可能使用的浏览器版本比较新,那么我就不需要对IE早期的版本进行兼容。判断的方法有多种,可以根据使用百分比判断,例如淘宝,当一个浏览器版本使用人数不足3%的时候,就不进行兼容。还有如果我需要兼容,那么我要兼容到哪个程度,例如兼容需求的等级有A级(意味着对PSD百分百实现,例如Chrome/FF/IE9),B级(功能实现,页面表现差别不大,例如IE8),C级(只要求能实现基本的功能,例如IE7)
    • 渐进增强和优雅降级
      • 逐渐增强的意思是在低版本的浏览器可以实现基本的功能的基础上构建网页,然后在高版本的浏览器实现新的特性来增加更好的用户体验。逐渐增强的思想是内容为主,一个网站的本质是其要所表现的内容
      • 优雅降级的意思是为高版本的浏览器实现新的特性的原则上,在低版本的浏览器牺牲一些用户体验来实现基本的功能。优雅降级的思想是用户体验为主,虽然回退方案可以保证兼容各浏览器,但是并不能保证在低端浏览器的使用体验,只是看起来在各个浏览器的表现一样了

    参考:
    优雅降级和逐渐增强的区别
    怎样可以很好地保证网页的浏览器兼容性?

  • reset.cssnormalize.css分别是做什么的?为什么推荐使用nomalize.css?

    • 两种方法都是为了使页面在不同的浏览器下的表现一致
      • reset.css是将所有的浏览器自带样式重置掉,用一切归零的方法来实现页面在不同浏览器的表现一致
      • normalize.css的方式不是一棒子打死,而是保留用的默认样式,去掉不需要的样式
    • normalize.css的优点
      <blockquote>1. Normalize.css 保护了有价值的默认值
      Reset通过为几乎所有的元素施加默认样式,强行使得元素有相同的视觉效果。相比之下,Normalize.css保持了许多默认的浏览器样式。这就意味着你不用再为所有公共的排版元素重新设置样式。当一个元素在不同的浏览器中有不同的默认值时,Normalize.css会力求让这些样式保持一致并尽可能与现代标准相符。</blockquote>
      <blockquote>2. Normalize.css 修复了浏览器的bug
      它修复了常见的桌面端和移动端浏览器的bug。这往往超出了Reset所能做到的范畴。关于这一点,Normalize.css修复的问题包含了HTML5元素的显示设置、预格式化文字的font-size问题、在IE9中SVG的溢出、许多出现在各浏览器和操作系统中的与表单相关的bug。</blockquote>
      <blockquote>3. Normalize.css 不会让你的调试工具变的杂乱
      使用Reset最让人困扰的地方莫过于在浏览器调试工具中大段大段的继承链,如下图所示。在Normalize.css中就不会有这样的问题,因为在我们的准则中对多选择器的使用时非常谨慎的,我们仅会有目的地对目标元素设置样式。</blockquote>
      <blockquote>4. Normalize.css 是模块化的
      这个项目已经被拆分为多个相关却又独立的部分,这使得你能够很容易也很清楚地知道哪些元素被设置了特定的值。因此这能让你自己选择性地移除掉某些永远不会用到部分(比如表单的一般化)。</blockquote>
      <blockquote>5. Normalize.css 拥有详细的文档
      Normalize.css的代码基于详细而全面的跨浏览器研究与测试。这个文件中拥有详细的代码说明并在Github Wiki中有进一步的说明。这意味着你可以找到每一行代码具体完成了什么工作、为什么要写这句代码、浏览器之间的差异,并且你可以更容易地进行自己的测试。</blockquote>

    参考:
    Normalize.css和Reset CSS的区别
    来,让我们谈一谈 Normalize.css

  • IE盒模型和标准盒模型有什么区别? 怎样使IE678使用标准盒模型?box-sizing:border-box有什么作用?

    • IE盒模型的width=border+padding+content,标准盒模型的width=content;


      盒模型
    • 在html的头部加入DOCTYPE就可以使用IE678的标准模式,标准模式所使用的和模型就是W3C的标准盒模型
    • box-sizing属性是用来改变默认的盒模型宽高的计算方式,可用来模拟那些非正确支持标准盒模型的浏览器的表现,这个属性的值有两个
      <blockquote>content-box|border-box</blockquote>
      • content-box,默认的值,作用就是使用W3C标准的盒模型,width=content
      • border-box,这个属性可以是宽高的计算方式变成width=border+padding+content,也就是IE在怪异模式下使用的盒模型
         div {
            width: 200px;
            height: 200px;
            background-color: red;
            padding: 50px;
            border: 50px solid green;
            box-sizing: border-box;
         }
border-box

操作

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,874评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,102评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,676评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,911评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,937评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,935评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,860评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,660评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,113评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,363评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,506评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,238评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,861评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,486评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,674评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,513评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,426评论 2 352

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,747评论 1 92
  • 一、如何调试 IE 浏览器? 在IE7以上的版本中可以通过按快捷键F12调出开发人员调试框,如下图IE7以上调试工...
    dengpan阅读 548评论 0 2
  • 1. 网页乱码的问题是如何产生的? 因为一份文档保存在计算机的时候不是以我们看到的样子,而是用计算机理解的样子去保...
    老虎爱吃母鸡阅读 1,667评论 0 2
  • 一、CSS1.根据不同浏览器默认设置不同,页面可初始化样式,调整成一致 2.IE8及以下不支持CSS3 3.IE6...
    李好Ario阅读 344评论 0 0
  • .Index_bottom { } /*通用*/ @media screen and (min-width:0) ...
    独与毒阅读 402评论 0 2