如何调试IE浏览器
- 1.IE7.0及以上IE版本可使用IE自带的控制台工具调试。
- 2.可以安装虚拟机再安装不同版本的IE去调试
- 3.在CSS中使用边框调试,border: 1px solid red;和outline:1px solid red;显示盒模型调试,适用IE6及以下版本
- 4.用IETest调试,模拟不同版本的IE浏览器,但模拟效果不能完全还原真实IE环境。chrome开发者调试工具:
什么是CSS hack?在CSS和HTML里如何写hack?在CSS中ie6ie7的hack方式?
由于不同厂商的浏览器chrome、safari、firefox、IE对CSS文件解析渲染结果不一致,甚至同一浏览器的不同版本的产品对CSS文件解析渲染结果不一致,得不到我们需要的结果。CSS hack的目的是使CSS代码兼容不同的浏览器,或使用CSS hack为不同浏览器设置不同css效果。IEbug无穷无尽,因为渲染的标准不同,IE先出现的,在此之后后才有w3c渲染标准
CSShack参考网站:browserhacks.com,caniuser.com
CSS和HTML里写hack有以下几种方法:
- 1.css属性前缀法 Property/Value Hacks 只针对某个浏览器才可见的属性,一般是属性前加特殊符号IE6、IE7(*)
.box{*background:yellow;}```
- 2.选择器前缀法:例如 IE6能识别html .class{},IE7能识别+html .class{ }
```html
*html .box{ /*IE6.0*/
background:yellow;
}
*+html .box{ /*IE7.0*/
background:yellow;
}
- 3.cc(ie conditional comments)IE条件注释(win10起不支持条件注释,将与其他浏览器一样解析成注释)
[if !IE]不等于IE、[if lt IE 6]小于IE6、[if lte IE 6]小于等于IE6
<!--[if IE 6]><body class="ie6"><![endif]-->
<!--[if IE 7]><body class="ie7"><![endif]-->
<!--[if IE 8]><body class="ie8"><![endif]-->
<!--[if IE 9]><body class="ie9"><![endif]-->
<!--[if !IE]>-->
body
<!--<![endif]-->
</body>
列举几种浏览器兼容问题
1.display:inline-block
IE6、IE7不支持该属性,需要添加以下语句
*display:inline;
*zoom:1;
2.opacity
IE8及以下版本不支持
filter: "alpha(opacity=60)"; /* IE 8 */
filter: alpha(opacity=60); /* IE 4-7 */
zoom: 1;
针对兼容、多浏览器覆盖有什么看法?渐进增强和优雅降级是什么意思?
IEbug无穷无尽,因为渲染的标准不同,浏览器的兼容是个费时费力的专题工程。所以在项目启动之初需要对项目的使用场景做调研,了解用户各浏览器的使用份额。比如银行或政府机构网站IE浏览器的使用率高。由调研情况来确定技术选型。
渐进增强:开发过程侧重适配低版本浏览器,先保证最基本功能和易用性,然后再针对高级浏览器进行效果、交互等功能的改进。保证低版本浏览器用户的基本功能和易用性基础上,再完善高版本浏览器用户的更好体验。
优雅降级:侧重适配高版本浏览器,使网页在好看又好用的基础上,再考虑对低版本浏览器的兼容。比如在低版本浏览器上仅保证功能可用,允许与高版本浏览器实际渲染效果出现细微差异,或放弃某些特效。对于复杂度太高的兼容可考虑放弃。
浏览器兼容程度分级:
A级 好看而且好用 适配chrome/firefox/safari
B级 好用,视觉效果允许细微偏差 适配IE8/IE9
C级 可以用,视觉效果不考虑 适配IE8以下浏览器
reset.css和normalize.css分别是做什么的?为什么推荐使用 nomalize.css?
HTML标签在浏览器中都有默认的样式,不同的浏览器的默认样式之间是存在区别的,例如ul默认带有缩进样式,在IE下,它的缩进是由margin来实现的,而在Firefox下却是由padding来实现的。所以开发时浏览器的默认样式可能会给我们带来多浏览器的兼容问题,影响开发效率。reset.css和normaliz.css都是用来将浏览器的默认样式覆盖掉,达到多个浏览器的一致性。
resset.css是将浏览器所有默认样式全部重置,作用范围很大。reset会在浏览器调试工具中有大段的继承链,而 normalize.css不会。
normalize.css保护了有价值的默认值,保持了许多默认的浏览器样式。修复了常见的桌面端和移动端浏览器的bug,这超出了reset所能做到的范畴。
IE盒模型和标准盒模型有什么区别?怎样使IE678使用标准盒模型?box-sizing:border-box有什么作用
IE盒模型 box-sizing:border-box;宽度、高度=盒模型边框+padding+(内容宽度或高度)
标准盒模型 box-sizing:content-box; 宽度、高度=width、height
在IE678中添加DOCTYPE声明即可遵循标准盒模型,不加doctype声明则使用怪异模式即IE盒模型。