cssHack

不同的浏览器,比如Internet Explorer 6,Internet Explorer 7,Mozilla Firefox等,对CSS的解析认识不一样,因此会导致生成的页面效果不一样,

得不到我们所需要的页面效果。这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。

这个针对不同的浏览器写不同的CSS code的过程,就叫CSS hack,也叫写CSS hack。

如:

CSS hack用来解决有些css属性在不同浏览器中显示的效果不一样的问题,如margin属性在ie6中显示的距离会比其他浏览器中显示的距离宽2倍

也就是说margin-left:20px;在ie6中距左侧对象的实际显示距离是40px,而在非ie6中显示的距左侧对象的距离是设置的值20px;

所以要想设置一个对象距离左侧对象的距离在所有浏览器中都显示是20px的宽度的样式应为:

.className{margin-left:20px;_margin-left:20px;}

1.\9:所有IE浏览器都支持;

2._和-:仅ie6支持;

3.*:IE6 IE7 支持;

4.\0: IE8 IE9 ,Opera部分支持;

5.\9\0: IE8部分支持,IE9支持;

6.\0\9: IE8,IE9支持;

实例一:区分IE和非IE浏览器

  #tip{
width:100px;
height:100px;
background:blue;/*非ie浏览器显示为蓝色*/
background:red\9;/*IE6 7 8 9 中显示为红色*/
}

实例二:区分IE6,IE7,IE8,FF

  #tip1{
background:blue;/*firefox背景为蓝色,所有浏览器都支持*/
background:red\9;/*IE[6,9]可以覆盖上面的样式*/
*background:black;/*IE[6,7]可以覆盖上面的样式*/
_background:orange;/*仅仅IE6可以覆盖上面的样式*/
/*
总结:
IE 系列的浏览器都可读取 \9
IE6 IE7中可读取*
IE6 中仅仅可以识别 _(-)
*/
}

实例三:区分IE6 IE7 firefox(方法一)

  #tip2{
background:blue;/*firefox 背景为蓝色*/
*background:black;/*仅仅ie7中*/
background:orange;/*仅仅ie6*/
}

实例四:区分IE6 IE7 firefox(方法二)

  #tip3{
background:blue;
*background:green!important; /*ie7中的颜色*/
*background:orange;/*仅仅ie6*/
}

 实例五:区别IE6和firefox

  #tip4{
background:black;/*火狐*/
_background:red;/*ie6*/
}

IE浏览器下的hack总结:

  #tip5{
background:blue\9;/*ie8 9*/
*background:blue;/*ie7*/
_background:blue;/*ie6*/
}

从上面看出无法区分ie 8 和 9;不过解决方法是有的;

:root div{
/*:root这个伪类,只有ie9能够支持,
但是部分其他浏览器可以使用
所以不建议使用
*/
background:pink;
}

其他浏览器的hack

@-moz-document url-prefix(){.element{color:red}};(firefox)

webkit和opera

  /*当媒体查询时*/
@media all and (min-width:960px){
.ele{}
}
/*webkit中的写法
-webkit-min-device-pixel
指的是:设备像素密度测试
*/
@media screen and (-webkit-min-device-pixel-raio:2/3 ){
.ele{}
}
/*opera中的写法*/
@media all and (-webkit-min-device-pixel-ratio:2/3),not all and (-webkit-device-pixel-ratio:2/3)
{
.ele{}
}

接着大总结

.element{
color:#000; /*w3c标准*/
[;color:#f00;]; /*Webkit(chrome和safari)*/
color:#666\9; /*IE8*/
*color:#999; /*IE7*/
_color:#333; /*IE6*/
}
:root .element{color:#0f0\9;} /*IE9*/
@media all and (-webkit-min-device-pixel-ratio:10000), not all and (
-webkit-min-device-pixel-ratio:0) { .element{color:#336699;}} /*opera*/
@-moz-document url-prefix(){ .element{color:#f1f1f1;}} /*Firefox*/

这里顺便在提一下其他的hack技巧;

cssHack的更多相关文章

  1. csshack技术

    我最近想好好整理下csshack技术,但是结果很沮丧,下面我将我最初写的笔记和大家分享下. 我在单位整理的研究笔记: 不同的浏览器对某些CSS代码解析会存在一定的差异,因此就会导致不同浏览器下给用户展 ...

  2. 浏览器兼容之条件注释,cssHack

    对于形形色色的浏览器,随之而来的就是一些兼容问题,大多应该都是IE下的兼容问题,因为任何浏览器下出现渲染不一致都极有可能是我们自己的结构或样式不符合W3C的某些要求,或者说违背了浏览器的某些规则而先造 ...

  3. 浏览器兼容处理(HTML条件注释、CSSHack和JS识别)

    前面的话 本文中所有IEx+代表包含x及x以上:IEx-代表包含x及x以下,仅个人习惯.例:IE7+代表IE7.IE8…… 本文中所有例子全部经过测试,欢迎交流. HTML识别 条件注释法(IE10+ ...

  4. 针对主流浏览器的CSS-HACK写法及IE常用条件注释

    一.通用区分方式: IE6.IE7能识别*,标准浏览器(如FF)不能识别*:IE6能识别*,但不能识别 !important:IE7能识别*,也能识别 !important:IE8能识别\0,不能识别 ...

  5. CSSHack 兼容性

    史上最全的CSS hack方式一览    CSS hack技巧大全    Can i use CSS hack CSS hack 由于不同厂商的流览器或某浏览器的不同版本(如IE6-IE11,Fire ...

  6. IE11兼容性问题修改

    最近测试给了我一大堆BUG,一瞅发现全是IE11的.吐槽一下这个浏览器真的比较特立独行.很多默认的样式跟别的浏览器不同,而且最明显的一点应该是padding左右内边距往往比别的浏览器大了一倍.但是当需 ...

  7. 遭遇input与button按钮背景图失效不显示的解决办法

    笔者从事网页前端代码页面工程师已有多年,作为一个网页重构人员常常会遇到一些莫名其妙的DIV+CSS(正确的说法是XHTML+CSS)在 IE.FireFox火狐. 谷歌浏览器CHROME.苹果浏览器S ...

  8. IE9下css hack写法

    ie9一出css hack也该更新,以前一直没关注,今天在内部参考群mxclion分享了IE9的css hack,拿出来也分享一下: select { background-color:red\0; ...

  9. HTML兼容问题——HACK技术

    有话先说:本文的目的主要是向大家描述一下我们在遇见IE8版本一下以及Firefox兼容的问题. 针对不同的浏览器写不同的CSS的过程,这就叫CSS hack,也叫写CSS hack,相信您会对一些比较 ...

随机推荐

  1. WebRTC手记之框架与接口

    转载请注明出处:http://www.cnblogs.com/fangkm/p/4370492.html 上一篇文章简单地介绍了下WebRTC的协议流程,这一篇就开始介绍框架与接口. 一提到框架,本能 ...

  2. iOS开发中常见的问题

      1.重复调用2次loadView和viewDidLoad 最好不要在UIViewController的loadView方法中改变状态栏的可视性(比如状态栏由显示变为隐藏.或者由隐藏变为显示),因为 ...

  3. MyLinerLayout--推荐

    苹果系统的自动布局需要在布局的过程中建立各种各样的依赖,虽然后续使用masonry还算比较便捷. 有一天朋友推荐给我的这个,看了一下demo和这个库的作者的博客,了解到这个库并不是基于苹果的自动布局作 ...

  4. hdu 猜数字

    这题的意思是找到最大的n使得m次之内的猜测可以猜到1~n之间的任何值.这里是二分思想的逆过程,1~h个数最多猜测log2(n+1)次(n为奇数),故 n=2^m-1; #include"io ...

  5. [排错] Status error 2850

    前几天重新搭建了APAC的Netbackup, 终于可以备份成功了, 但是今天在做还原的时候遇到了些小问题,记录下来. 1. 在CNHZSRV04BPO上执行还原的时候报下面的错误. 2. 经过检查发 ...

  6. $_ 与 $PSItem

    PowerShell 3.0 中的$PSItem 此文章于2012年11月4日发表在PowershellPowershell小技巧并加以Powershell 3.0管道的标签 by Mooser Le ...

  7. 安装nfs服务器

    服务器和客户端都有一下操作 groupadd nginx useradd -r -g nginx nginx -s /sbin/nologin id nginx 查看nginx的id yum inst ...

  8. linphone3.4.0代码分析

    主要类型定义: 1.LinphoneCoreVTable /** * This structure holds all callbacks that the application should im ...

  9. Nginx 笔记与总结(7)Location:正则匹配

    在 /usr/local/nginx/conf/nginx.conf 的默认 server 段中,保留默认的 location 信息(之前测试的 location 配置删除): location / ...

  10. mysql varchar类型使用心得

    自己的一个例子,在存储一个email的需求中.mysql定义的字段,类型:varchar 长度:20 当我插入一个email:huangyuande@sailvan.com  发现怎么样都差不进去.. ...