浏览器hack总结 详细的浏览器兼容性解决方法

由于各浏览器对页面的解析不同,会导致页面在不同浏览器中显示的样式不一致,为了保持页面的统一,经常需要对浏览器进行兼容性问题的调试。

CSS Hack

面对浏览器诸多的兼容性问题,经常需要通过CSS样式来调试,其中用的最多的就是CSS Hack。所谓CSS Hack就是针对不同的浏览器书写不同的CSS样式,通过使用某个浏览器单独识别的样式代码,控制该浏览器的显示效果。CSS Hack主要分为两类

CSS 选择器Hack

CSS选择器Hack是指通过在CSS选择器的前面,加上一些只有特定浏览器才能识别的Hack前缀,来控制不同的CSS样式。针对不同版本的浏览器,选择器Hack分为以下几类:

(1)IE6及IE6以下版本识别的选择器Hack

书写CSS样式时,如果希望此样式只对IE6及IE6以下版本的浏览器生效,可以使用IE6及以下版本的选择器Hack,其基本语法如下:

* html 选择器{样式代码}

(2)IE7识别的选择器Hack

书写CSS样式时,如果希望此样式只对IE7浏览器生效,可以使用IE7识别的选择器Hack,其基本语法如下:

*+html 选择器{样式代码}

CSS属性Hack

这里小强老师,把属性hack分为 前缀属性hack和 后缀属性hack

CSS属性Hack(前缀) 针对的浏览器
_color:red; IE6及其以下的版本
*color:red ;或者 +color:red; IE7及其以下的版本
CSS属性Hack(后缀) 针对的浏览器
color:red\9; IE6/IE7/IE8/IE9/IE10版本
color:red\0; IE8/IE9/IE10版本
color:red\9\0; IE9/IE10
color:red!important IE7/IE8/IE9/IE10及其他非IE浏览器

其实,现在越来越的公司,不太让兼容ie6了,现在比较关心的是ie8.910等高版本的浏览器,因此这里小强老师也总结了ie专属hack ,比如ie8等。

选择器Hack写法 针对于的浏览器
@media screen\9{body { background: red; }} 只对IE6/7生效
@media \0screen {body { background: red; }} 只对IE8生效
@media \0screen\,screen\9{body { background: blue; }} 只对IE6/7/8有效
@media screen\0 {body { background: green; }} 只对IE8/9/10有效
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {body { background: orange; }} 只对IE10有效

如果样式比较多,条件注释,是不错的选择:

IE条件注释语句

IE条件注释语句 针对的浏览器版本
<!--[if lt IE 7]>内容<![endif]-->   IE7 以下版本
<!--[if lte IE 7]>内容<![endif]--> IE7及以下版本(包含IE7)
<!--[if gt IE 7]>内容<![endif]--> IE7 以上版本
<!--[if gte IE 7]>内容<![endif]--> IE7及以上版本(包含IE7)
<!--[if !IE 7]>内容<![endif]--> 非IE7版本
<!--[if !IE]><!-->您使用不是 Internet Explorer<!--<![endif]--> 非IE浏览器

小强零零壹和大家一起分享

时间: 2024-12-21 01:05:13

浏览器hack总结 详细的浏览器兼容性解决方法的相关文章

Chrome浏览器扩展程序强制停用的解决方法

http://blog.csdn.net/pipisorry/article/details/37728839 一.加载正在开发的扩展程序 这里以加载一个已有的Chrome扩展程序为例: 把已有的扩展程序(.crx文件)后缀改为.zip,就可以把它解压缩到某个目录,比如将lingoes_chrome_2.1.crx改成lingoes_chrome_2.1.zip并解压到D:\Downloads\Editor\lingoes_chrome_2.1.zip 打开谷歌浏览器 - 工具 - 扩展程序 -

CenOS下firefox browser (火狐浏览器)无法播放网页音乐的解决方法

新装载的Firefox或许无法播放网页音频,解决方法如下: 1. 下载并安装 flashplayer插件&&下载网址:https://get.adobe.com/flashplayer/?loc=cn 2. 解压 并将其中的libflashplayer.so放到主文件夹及/Home下 3. 进入terminal获取管理员权限操作,使用  su 命令 4. 查看主文件夹下是否存在 libflashplayer.so文件,dir命令 5. 复制libflashplayer.so到火狐插件文件夹

IE8及低版本浏览器不支持CSS3 media queries的解决方法

问题:IE8及其以下低版本IE浏览器在缩小窗口时,UI没有按照相应的要求显示窗口缩小时对应的布局:其他浏览器正常. 定位过程: 其实开始拿到问题时是无从下手,不知所以然,根本就没听说还有media这个CSS属性,就更不知道它的功能了.但是对于解决UI问题,有自己的一套思路,就是首先要思考为什么会错误以及为什么没有错误两个方面,然后针对这两个方面的疑问把html或js或css文件简化再简化,修改再修改,查看UI变化,从而缩小问题范围,最后找出问题根源. 如此我就想为什么其他浏览器界面布局没有问题呢

火狐浏览器select文字垂直不居中的解决方法

1.问题:火狐浏览器select文字垂直不居中 .zcsearch select{height:24px;} <div class="zcsearch"> <select > <option>全部</option> </select> </div> 2.解决方法:使用padding: 1px 0;即可 .zcsearch select{height:24px;padding: 1px 0;}

ios微信浏览器click事件不起作用的解决方法

$(document).on( "click", ".weui_cell", function (event) {alert(); }); JS代码是这样的,html代码是动态追加进去的,click事件在苹果手机没作用,在安卓和pc端事件完全正常 经过一番搜索,解决方法也很奇葩,只需在html代码中添加onclick=""   就可以了,记录下来 ,让后面看到的人少走弯路 如:<div class="weui_cell"

【转】 IE6 IE7 IE8 css bug兼容性解决方法总结归纳

1:li边距“无故”增加 任何事情都是有原因的,li边距也不例外. 先描述一下具体状况:有些时候li边距会突然增 加很多,值也不固定(只在IE6/IE7有这种现象),让人摸不着头脑,仔细“研究”发现是由于其低级元素ul的padding引 起,padding的上下值对li有影响,左右无影 响.所以只好笨手笨脚地把padding去掉,换成margin.这是能解决问题,但往往不是我们想要的结果,或许 还会引起其他不必要的怪现象. 现在终于发现解决这个问题的方法,其实很简单,既然是有ul引 起的,就设置

springMVC浏览器接受json报406错误的解决方法

这个错误还真难搞,头一次遇见还真没有什么好办法解决,上网找了很多资料,一一试过也不能很好的解决,最后经过朋友,同事一起努力,终于征服了.留下笔记,供大家参考: 1.我后台测试代码如下: @RequestMapping("/json") public @ResponseBody String json() { return "this is json"; } @RequestMapping("/json2") public @ResponseBod

【转】微信缓存、浏览器缓存等各种顽固缓存的解决方法,缓存解决方法

[转自网络] 不啰嗦,直接说方法吧: 在更新文件的时候,在引用css,js等文件的语句上加上一个版本号,就能有效防止浏览器一直使用缓存中的css,js 例: <link href="/html/superstore/css/SuperStore.css?201410281" rel="stylesheet"> 每次改一下 “201410281“即可 不过这个可能是以带参数的形式引用,不知道在引用js的时候,会不会有一些参数方面的困扰,尚未测试 ps:最后

谷歌 chrome 浏览器开发者工具打不开的解决方法

很长一段时间没有用Chrome浏览器 最近打开,发现开发者工具怎么都打不开 在网上也没有找到方法 各种打开方式都试了依然是没有动静 但是在隐身模式下开发者工具是可以的打开的 重新安装后还是一样 实在没有找到方法 就在浏览器里各种尝试 最后我打开扩展程序里 里面勾选了开发者模式 我把取消后开发者工具就可以正常使用了 不知道有没有其他人遇到开发者工具打不开的问题 如果有的话可以尝试看下扩展程序内是否勾选了开发者模式 如是取消就可以正常使用了