任务13-浏览器兼容

1.如何调试 IE 浏览器?

  1. IE浏览器7+自带的开发者工具,IE6可以采用border的方法或是下载virtural IE6进行辅助开发
  2. 采用模拟器的方式去模拟不同版本下的IE浏览器,如IEtester或chrome的付费插件Test IE
  3. 通过安装虚拟机的方式,安装不同版本的IE的运行环境去达到调试IE浏览器的目的

2. 什么是CSS hack?在 CSS 和 HTML里如何写 hack?在 CSS 中 ie6、ie7的 hack 方式?

  • 为了解决不同浏览器或是浏览器不同版本的网页解析方式不一的问题,开发者撰写相应的css code而达到兼容目的,这整个过程叫做css hack
  • css hack大致有三种方法:css属性前缀法、IE条件注释法和选择器前缀法
    css 属性前缀法:
.box{
color:red; /* for all browsers */
_color:black; /*  for ie6 */
*color:green;  /* for ie6~7 */
color:pink\9;  /*  for ie6~10 */
}

选择器前缀法:

*body{
/* only for ie6 */
}
*+p{
/*  for ie7 */
}
@media screen\9{
}
div{
/*   for ie6~7 */
}

ie cc:

<!--[if IE]>
这段文字只在IE浏览器显示
<![endif]-->
<!--[if IE 6]>
这段文字只在IE6显示
<![endif]-->
<!--[if gte IE 6]>
这段文字只在IE6以上(包括)版本显示
<![endif]-->
<!--[if lt IE 6]>
这段文字只在IE6以下(不包括)版本显示
<![endif]-->
<!--[if !IE]>
这段文字只在非IE浏览器显示
<![endif]-->
  • ie6/7的css hack
    • ie6
属性前缀法:
.box{
_color:black; /*  for ie6 */
}
选择器前缀法:
*body{
margin:0;
}
条件注释法:
<head>
<!--[if IE 6]>
<body class="ie6">
<![endif]-->
</head>
- ie7
选择器前缀法:
*+body{
margin:0;
}
条件注释法:
<head>
<!--[if IE 7]>
<body class="ie7">
<![endif]-->
</head>
- ie6~7
  属性前缀法:
.box{
*color:black; /*  for ie6~7 */
}
选择器前缀法:
@media body\9{
margin:0;
}
条件注释法:
<head>
<!--[if IE lte 7]>
<body class="ie6 ie7">
<![endif]-->
</head>

3. 列举几种浏览器兼容问题

  • 不同浏览器的标签默认的margin和padding不一,解决方案是*{margin:0;padding:0;}
  • 块级元素使用float以及存在左右margin时,IE6显示的margin比设定的大,解决方案是在添加float样式的标签内加入display:inline;
  • 图片默认间距:有些浏览器在多个img标签放一起时出现默认间距,解决方案是使用float属性或者并排
    原理:所有具有display:inline-block特性的元素,都有一个特点,那就是代码换行会被解析成空白,没有为什么,这就是浏览器的渲染机制,基于这一点,代码如果清除换行可以解决,但是不希望所有的代码都挤在一起,那么你就可以设置浮动来解决,目的无非就是让块属性元素在同排内显示
  • 透明度的问题:
selector{
filter:alpha(opacity=50); /* for IE*/
-moz-opacity:0.5;  /*for old versions of the Mozilla browsers*/
-khtml-opacity: 0.5;  /* for old versions of Safari*/
opacity: 0.5;
}
  • min-width或max-width:ie6不支持最大或最小宽高
/* 最小宽度 */
.min_width{ 
min-width:300px; _width:expression(parseInt(this.clientWidth) < 300 ? "300px" : this.clientWidth);
}
/* 最大宽度 */
.max_width{ 
max-width:600px; _width:expression(parseInt(this.clientWidth) > 600 ? "600px" : this.clientWidth);
}

4. 针对兼容、多浏览器覆盖有什么看法?渐进增强和优雅降级是什么意思?

  • 兼容多浏览器的看法:
    • 分析需求,是否有兼容的必要性。针对特定浏览器的用户
      包括页面的用户、参与设计的人员、用户的浏览器类型使用状况等
    • 兼容程度,对于高级浏览器页面的内容展示要求要高,对于低级浏览器可以在不影响正常页面展示前提下有所降低
    • 总的原则是,基于成本与效益间的权衡考虑
  • 渐进增强和优雅降级的观点比较
    渐进增强和优雅降级都是出于为不同浏览器提供兼容方案的目的,只是在实际开发时的思路不同。
    • 渐进增强是基于低级浏览器进行开发,在满足其内容、样式和交互的需求后,针对更加高级的浏览器实现设计、交互等的强化。
    • 优雅降级是基于高级浏览器进行开发,在完成高级浏览器的各项要求后,针对低级浏览器无法支持高版本功能的问题,实现功能、设计等模块的逐步退化,并在退化过程中能求保证网页的基本功能和信息的实现。

5. reset.css和normalize.css分别是做什么的?为什么推荐使nomalize.css?

首先,由于不同的浏览器或是浏览器的不同版本在支持和渲染页面时出现的差异,导致开发者需要进行浏览器的兼容。针对这一问题,网络的大牛们想方设法出不同的解决方案,reset.css和normalize.css这两种不同思路的解决兼容性问题的方案应运而生。

  • reset.css是早期的解决不同浏览器默认样式不一的问题的方案,主要思路是在css文档的初始部分重置不同元素的样式,使得不同的浏览器在初始样式上统一标准。但是这一方法的缺陷是过于暴力,把所有元素同一对待,一旦要使用如ul标签的前缀时,又得重新设置,浪费资源。
    此时,一种新的解决这一问题的思路诞生——normalize.css。
  • normalize.css在保留有用的浏览器默认样式的基础上,为不同浏览器提供通用样式的规范,即给定通用的样式,针对不同浏览器出现的兼容性问题分门别类的提供优化方案。
  • 由此,我们可知reset.css就像倚天屠龙记中的七伤拳——欲伤人,先伤己,reset.css就是欲统一样式,先要把自己默认样式破坏个遍。
    而normalize.css就如同武当的太极拳——能够在统一样式标准的前提下,保留浏览器的默认样式。
    综上所述,目前normalize.css是解决浏览器兼容的最新也是目前来看最好的方案!

6. IE盒模型和标准盒模型有什么区别? 怎样使 IE7、8使用标准盒模型?box-sizing:border-box有什么作用?

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

推荐阅读更多精彩内容

  • 一、问答部分 1. 如何调试 IE 浏览器 IE7及以上版本有调试台,可以按F12启动。Paste_Image.p...
    _hello__world_阅读 459评论 0 1
  • 一、问答部分: 1. 如何调试 IE 浏览器? 如果是IE7版本以上可以使用自带的开发者工具,按F12,即可打开:...
    小木子2016阅读 527评论 0 0
  • 1.如何调试 IE 浏览器 IE8以上有开发者工具(高版本的IE开发者工具兼容模式可以往下选择兼容不同版本),F1...
    饥人谷_kule阅读 417评论 0 0
  • 1.如何调试IE浏览器? 对于高版本的IE浏览器(IE7以上)可以使用IE自带的开发者工具,如下图: 使用一些集成...
    饥人谷_任磊阅读 361评论 0 1
  • 1 . 如何调试 IE 浏览器 使用高版本的IE浏览器控制台。 如果某个元素不见了,可以使用如下方法:a.给该元素...
    osborne阅读 378评论 0 1