前言
因为常常须要跟IE11打交道(尽管文章发表时,IE11曾经正式发表服役了),起因是安防监控视频播放须要调用activeX控件。所以将本人的一些经验总结下。
准则
- 渐进加强:针对低版本浏览器进行构建页面,保障最根本的性能,而后再针对高级浏览器进行成果、交互等改良和追加性能达到更好的用户体验。
- 优雅降级:一开始就构建残缺的性能,而后再针对低版本浏览器进行兼容。优雅降级:一开始就构建残缺的性能,而后再针对低版本浏览器进行兼容。
元标签
<!--[if IE]>
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<![endif]-->
如果你跟我一样只用兼容IE11,其实这个标签带不带无所谓(毕竟客户也只用IE11)。个别只有兼容IE8、9的倒霉蛋才会去理解这个标签(滑稽)。更多看这个答复。
IE11 CSS hack
IE11各种奇葩的款式问题,都离不开CSS hack。
<!doctype html>
<html>
<head>
<title>IE10/11 Media Query Test</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<style>
@media all and (-ms-high-contrast:none)
{
.foo { color: green } /* IE10 */
*::-ms-backdrop, :root .foo { color: red } /* IE11 */
}
</style>
</head>
<body>
<div class="foo">Hi There!!!</div>
</body>
</html>
理论状况是,我只会用到@media all and (-ms-high-contrast:none)
这个媒体查问,因为我只须要兼容IE11,同时将所有兼容款式保留在独自一个文件,确保款式隔离和代码复用。
更多IE相干的CSS hack写法能够查看这个stackoverflow答复。
如果你遇到兼容IE11以下的版本,倡议你提桶跑路(滑稽)
在IE11中,往往意味着CSS3很多个性是不反对的,你须要特地审慎,比方一些UI库,局部组件应用了比拟新的CSS个性,这都会给你的开发带来暗藏的缺点,这也是技术选型的重要影响因素。
CSS reset
- normalize.css
CSS reset 计划, 尽管这个库很久没更新保护了,不过根本不影响应用。
查问个性是否反对
- caniuse
- MDN
大部分兼容性API你都能够通过下面2个网站去查问,简略举2个例子(没方法通过构建工具实现兼容):
- IE11 不反对 CSS
initial
属性值
text-align: initial; // IE不会失效
这个我已经在Element框架上遇到,算是小坑,只能独立做款式兼容。像这样的一些属性还有很多,但有一说一,IE11对款式兼容性曾经算是敌对了。
- IE11 crypto 须要带ms前缀
var crypto = crypto || msCrypto
IE11反对某些特定api,但须要带特定的ms
前缀,基本上构建工具没方法帮你做到,只能你本人手动实现兼容。
Canva
插入图片尽量避免应用SVG格局,倡议应用PNG格局代替,我至今没有找到解决方案。
IE11 滚动条款式
IE没方法扭转滚动条的宽度,如果有这个需要,请应用第三方库。
body{
scrollbar-base-color: #000;
scrollbar-face-color: #000;
scrollbar-3dlight-color: #000;
scrollbar-highlight-color: #000;
scrollbar-track-color: #000;
scrollbar-arrow-color: black;
scrollbar-shadow-color: #000;
scrollbar-dark-shadow-color: #000;
}
参考文章
- 浏览器的兼容问题及解决方案整顿(倡议珍藏)
发表回复