任务12 -浏览器的兼容性

1.什么是 CSS hack

不同厂商的浏览器,例如Internet explorer、Safari、Mozilla Firefox、Chrome等,或者同一厂商的浏览器的不同版本,如IE6和7,对css的解析和认识会完全不一样,因此会导致生成和预想相差很大的页面效果,此时我们需针对不同的浏览器写不同的css,让它在不同的浏览器中展现预想的效果
css hack大致有三种表现形式:

名称 别称 举例
属性前缀法 内部hack ie6能识别下划线和星号,ie7可以识别星号但不能识别下划线,ie6~ie10都识别“\9”,firefox前述三个都不识别
选择器前缀法 选择器hack
ie条件注释法 html条件注释hack 针对所有ie:<!--[if IE]>IE浏览器显示的内容<![endif]-->。针对ie6及以下的版本:<!--[if lt IE6>只在IE6-显示的内容<![endit]-->。这类hack不仅对 css生效,对写在判断语句里面的所有代码都会生效

2.谈一谈浏览器兼容的思路

  • 如何做
    产品角度:受众群,受众群浏览器比例,优先效果还是优先基本功能
    让哪些浏览器支持哪些效果
    渐进增强(progressive enhancement):针对低版本浏览器进行构建页面,保证最基本的功能,然后在针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验
    优雅降级(graceful degradation):一开始就构建完整的功能,然后在针对低版本浏览器进行兼容
  • 解决方案
    根据兼容需要选择技术框架、库
    根据需要选择兼容工具(html5shiv.js respond.js、css reset、 normalize.css、modernizr)
    条件注释、css hack、js能力检查做修补

3.列举5种以上浏览器兼容的写法

  • 例1
<!--[if IE 6]> (在ie6里的被识别的标签)
    <p>You are using Internet Explorer 6.</p>
 <![endif]-->
<!--[if !IE]><!--> 
    <script>alert(1);</script> (在chrome里被识别的只有这一句)
<!--<![endif]-->
 <!--[if IE 8]>(在ie8里的被识别的标签)
     <link href="ie8only.css" rel="stylesheet"> 
<![endif]-->
  • 例2
.box{
  color: red;
  _color: blue; /*ie6*/
  *color: pink; /*ie67*/
  color: yellow\9;  /*ie/edge 6-8*/
}
  • 例3
.clearfix:after{
  content: '';
  display: block;
  clear: both;
}
.clearfix{
  *zoom: 1; /* 仅对ie67有效 */
}
  • 例4
.target{
  display: inline-block;
  *display: inline;/* 仅对ie67有效 */
  *zoom: 1;/* 仅对ie67有效 */
}
  • 例5
<!--[if lt IE 9]>/* 仅对ie9以下有效 */
    <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
  <![endif]-->

4.以下工具/名词是做什么的

  • 条件注释:conditional comment,是用于html源码中被ie有条件解释的语句,条件注释可被用来像ie提供及隐藏代码,ie10以上不再支持条件注释

  • IE Hack:使用特殊的符号或者方式写出只有IE浏览器可以解析的代码,有CSS属性前缀法、选择器前缀法以及IE条件注释法

  • js 能力检测:使用JS的语法检测浏览器支持的属性,以便展示效果

  • html5shiv.js:用于解决IE9以下版本浏览器对HTML5新增标签不识别,并导致CSS不起作用的问题。

  • respond.js:响应式媒体查询,可以在ie6、ie7上模拟出自己无法识css的属性,可以模拟css3的媒体查询

  • css reset:去除浏览器的默认样式

  • normalize.css:是一个很小的CSS文件,但它在默认的HTML元素样式上提供了跨浏览器的高度一致性。相比于传统的CSS reset,normalize.css是一种现代的、为HTML5准备的优质替代方案。normalize.css保护浏览器有用的默认样式,而不是完全去掉他们,为大部分html元素提供一般化的样式,修复浏览器自身的bug并保证浏览器的一致性

  • Modernizr:处理兼容问题,Modernizr是一个 JavaScript 库,用于检测用户浏览器的 HTML5 与 CSS3 特性。

  • postCSS:用标准写法写css最后添加一个命令自动添加可以被老版本的浏览器接受的写法

5.一般在哪个网站查询属性兼容性?

canius.com查询css属性兼容
browserhacks查hack写法

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

推荐阅读更多精彩内容

  • 一、问答部分 1. 如何调试 IE 浏览器 IE7及以上版本有调试台,可以按F12启动。Paste_Image.p...
    _hello__world_阅读 457评论 0 1
  • 什么是 CSS hack? CSS hank由于不同厂商的浏览器,比如IE,Safari,Chrome等,或者同一...
    饥人谷_tonya阅读 641评论 0 0
  • 什么是 CSS hack CSS hack是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什...
    怎么昵称阅读 383评论 0 1
  • 1、什么是 CSS hack 由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozi...
    fatearcher阅读 316评论 0 0
  • 今天我来讲两个故事。一个是前鼻韵母的故事,它们有an,en,in,un,ün。 安(an)静的森林里有一只叫恩恩(...
    张轩赫阅读 166评论 1 5