浏览器兼容

2017-05-10  本文已影响0人  Ligod

1.什么是css hack

由于不同浏览器或者相同浏览器不同版本对css的解析不完全一样,因此导致页面效果不一样,这时我们需要针对不同浏览器去写不同的css,让它能在不同浏览器得到我们需要的效果,这就是css hack。

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

1.考虑要不要做

2.做到什么程度
要做兼容的话要达到什么程度,让哪些浏览器兼容,IE浏览器做到哪个版本。

3.如何做

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

1.条件注释
是html源码中被IE有条件解释的语句;可用来向IE提供和隐藏代码。

  <!--[if IE 6]>
  <p>You are using Internet Explorer 6.</p>
  <![endif]-->  /* IE6中执行 */
  <!--[if !IE]><!-->
  <script>alert(1);</script>
  <!--<![endif]-->   /* 非IE执行 */
  <!--[if IE 8]>
  <link href="ie8only.css" rel="stylesheet">
  <![endif]-->   /* IE8中执行 */
  只在IE下生效
  <!--[if IE]>
  这段文字只在IE浏览器显示
  <![endif]-->
  只在IE6下生效
  <!--[if IE 6]>
  这段文字只在IE6浏览器显示
  <![endif]-->
  只在IE6以上版本生效
  <!--[if gte IE 6]>
 这段文字只在IE6以上(包括)版本IE浏览器显示
 <![endif]-->
 只在IE8上不生效
 <!--[if ! IE 8]>
 这段文字在非IE8浏览器显示
 <![endif]-->
 非IE浏览器生效
 <!--[if !IE]>
 这段文字只在非IE浏览器显示
 <![endif]-->

条件注释结合js

<!--[if lt IE 9]>
<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]-->
Paste_Image.png

2.属性前缀法
IE6能识别下划线""和星号" * ",IE7能识别星号" * ",但不能识别下划线"",IE6~IE10都认识"\9",但firefox前述三个都不能认识

.box{
color: red;
_color: blue; /*ie6*/
*color: pink; /*ie67*/
color: yellow\9;  /*ie/edge 6-8*/
}

2.1 浏览器私有前缀添加

-webkit-border-radius: 50%;//chrome
-o-border-radius: 50%;//opera
-moz-border-radius: 50%;//FixFore
-ms-border-radius: 50%;//IE edge

3.选择器前缀法

*html *前缀只对IE6生效
*+html *+前缀只对IE7生效
@media screen\9{...} 只对IE6/7生效
@media \0screen {body { background: red; }} 只对IE8有效
@media \0screen\,screen\9{body { background: blue; }} 只对IE6/7/8有效

4.使用兼容工具
html5shiv.js:在IE6~8上模拟html5标签
respond.js:在IE6~8上模拟CSS3 Media Queries
css reset normalize.css样式重置
modernizr库

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

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

http://caniuse.com
<a href="http://browserhacks.com">查询hack写法</a>

上一篇 下一篇

猜你喜欢

热点阅读