浏览器那么多版本,不兼容我写的代码怎么办?
- admin
- 2021-04-15 11:44:55
1、
问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大。
解决方案:在CSS里 添加 *{margin:0;padding:0;}
2、
问题症状:IE6、7和遨游里这个标签的高度不受控制,超出自己设置的高度
解决方案:给超出高度的标签设置overflow:hidden;或者设置行高line-height 小于你设置的高度。
3、
问题症状:css里dispaly:inline_block不起效果;
解决方案:在dispaly:inline_block后面加入display:inline;
4、
问题症状:多个img标签之间的间距去不掉,使用了 *{margin:0;padding:0;}也不起作用
解决方案:使用浮动(float);
5、
问题症状:因为min-height本身就是一个不兼容的CSS属性,所以设置min-height时不能很好的被各个浏览器兼容
解决方案:如果我们要 设置一个标签的最小高度200px,需要进行的设置为:{min-height:200px; height:auto !important; height:200px; overflow:visible;}
6、
问题症状: z-index失效
原因:z-index起作用有个小小前提,就是元素的position属性要 是relative,absolute或是fixed。
解决方案:
1.position:relative改为position:absolute;
2.去除浮动;
3.浮动元素添加position属性(如relative,absolute等)。
7、
问题症状:元素水平居中问题
解决方案:FF: margin:0 auto;
IE: 父级{ text-align:center; }
除了代码上的问题,也可能是浏览器内核版本问题!总要照顾老版本,又要更新出新版本,自然会有冲突的地方。
我的解决方案是在页面head加<meta http-equiv="X-UA-Compatible" content="IE=11">
告诉浏览器最少使用IE11的内核去解析,能解决IE7内核下的很多问题。
再来学习一番:
X-UA-Compatible是针对IE8新加的一个设置,对于IE8之外的浏览器是不识别的,这个区别与content="IE=7"在无论页面是否包含<!DOCTYPE>指令,都像是使用了 Windows Internet Explorer 7的标准模式。而content="IE=EmulateIE7"模式遵循<!DOCTYPE>指令。对于多数网站来说,它是首选的兼容性模式。
为了避免制作出的页面在IE8下面出现错误,建议直接将IE8使用IE7进行渲染。也就是直接在页面的header的meta标签中加入如下代码:
Html代码:<meta http-equiv="X-UA-Compatible" content="IE=7" />
这样我们才能使得页面在IE8里面表现正常!
浏览器市场份额的激烈竞争,给网页设计开发人员带来了兼容性设计的麻烦。仅IE浏览器就有好几个主流版本,IE6、IE7、IE8 等等。当然使用诸如 IETester,多版本 IE 共存解决方案之类的第三方集成工具,可以方便代码调试。但我们总需要找寻一种更为省时省力的方法。
X-UA-Compatible 是针对 IE8 版本的一个特殊文件头标记,用于为 IE8 指定不同的页面渲染模式。由于当下 IE6 和 IE7 使用率依然较高,综合考虑,启用 IE8 版本的 X-UA-Compatible 兼容模式显得相当重要。
各种兼容模式代码示例如下:
1、<meta http-equiv="X-UA-Compatible" content="IE=5" />
像是使用了 Windows Internet Explorer 7 的 Quirks 模式,这与 Windows Internet Explorer 5 显示内容的方式很相似。
2、<meta http-equiv="X-UA-Compatible" content="IE=7" />
无论页面是否包含 <!DOCTYPE> 指令,均使用 Windows Internet Explorer 7 的标准渲染模式。
3、<meta http-equiv="X-UA-Compatible" content="IE=8" />
开启 IE8 的标准渲染模式,但由于本身 X-UA-Compatible 文件头仅支持 IE8 以上版本,因此等同于冗余代码。
4、<meta http-equiv="X-UA-Compatible" content="edge" />
Edge 模式通知 Windows Internet Explorer 以最高级别的可用模式显示内容,这实际上破坏了“锁定”模式。即如果你有IE9的话说明你有IE789,那么就调用高版本的那个也就是IE9。
5、<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" >
如果IE有安装Google Chrome Frame,那么就走安装的组件,如果没有就和<meta http-equiv="X-UA-Compatible" content="edge" />一样。
说明:针对IE 6,7,8等版本的浏览器插件Google Chrome Frame,可以让用户的浏览器外观依然是IE的菜单和界面,但用户在浏览网页时,实际上使用的是Google Chrome浏览器内核。
6、<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
EmulateIE7 模式通知 Windows Internet Explorer 使用 <!DOCTYPE> 指令确定如何呈现内容。标准模式指令以Windows Internet Explorer 7 标准模式显示,而 Quirks 模式指令以 IE5 模式显示。与 IE7 模式不同,EmulateIE7 模式遵循 <!DOCTYPE> 指令。对于多数网站来说,它是首选的兼容性模式。
在开发AngularJS项目时(只支持IE8及以上版本或chrome/firefox),而有些同事IE8登录却还提示“请使用IE8及以上版本或chrome/firefox,如果您使用IE8,请在”工具”菜单中,调整为非”兼容性视图”!
解决方法:
1.将项目中的.html及.jsp文件的<head>的最前面加上
<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta> (即如上meta加在其它meta之前)
2.选择“工具”菜单栏,点击“兼容性视图设置(B)”,打开如下弹出框,将“在兼容性视图中显示Intranet站点(I)、在兼容性视图中显示所有网站(E)”这两项前面的勾选框勾选掉(即不勾选上)
留言