本文档涵盖了IT面试中常见的高频问题,主要聚焦于HTML和JavaScript的兼容性处理。**HTML兼容性**是面试中常被询问的话题,特别是处理新版本HTML5与旧版IE浏览器(如IE9以下)的兼容性问题。为确保在这些老版本浏览器中正确显示HTML5特性,如新的HTML标签,需要使用`html5shiv.js`库,并通过CDN引入,例如:
```html
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
```
**CSS兼容性**也是重点部分,包括:
1.1 媒体查询的兼容性问题,IE9以下不支持,需引入`respond.js`来解决,通过CDN引入:
```html
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
```
1.2 CSS Hack技术用于处理不同浏览器的行为差异,比如:
- 属性前缀:针对不同IE版本的识别能力,如`_color`、`\9`。
- 选择器前缀:针对IE6和IE7特有的选择器形式,如`*html.class{}`和`+.red{}`。
- 条件注释:用于在特定版本的IE中执行特定代码,例如针对所有IE和IE6及以下版本的区分。
1.3 厂商前缀:对于WebKit(Chrome)、Firefox、IE和Opera等浏览器特有的CSS特性,可能需要添加前缀,如 `-webkit-`、`-moz-`、`-ms-` 和 `-o-`。
1.4 其他兼容性技巧,如解决浮动导致的双边距问题、图片间隙问题(通过设置`font-size:0`或`display:block`)以及清除块级元素的默认高度(`overflow:hidden`)。
**JavaScript兼容性**方面,面试者可能会被问到如何在不同浏览器环境下提供渐进增强和优雅降级策略。渐进增强是指先编写基本功能,然后逐步添加高级特性的代码,确保所有用户都能访问;优雅降级则是为新特性提供备选实现,当浏览器不支持时降级为可用的备选方案。面试者应熟悉如何使用polyfills、feature detection和shims等工具来提升代码的兼容性。