- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
Web前端兼容性面试题及答案
1.开发中遇到过CSS样式在不同浏览器显示不一致的情况吗?举2个例子并说明解决方法
答案:
常见场景:
①flex布局在IE10/11下异常(如子元素溢出不换行、align-items失效)
解决:IE10需加-ms-前缀(display:-ms-flexbox),IE11不支持flex-wrap:wrap时,可改用浮动+宽度计算兜底,或限制子元素最大宽度避免溢出;
②按钮默认样式差异(Chrome默认有边框,Safari有内边距)
解决:用通用样式重置(如button{border:none;padding:4px8px;outline:none;}),或引入Normalize.css(保留有用默认样式,修复浏览器bug,比传统reset.css更轻量)。
2.IE8及以下浏览器不支持addEventListener,怎么实现事件绑定的兼容?
答案:
需判断浏览器支持的事件绑定方法,写兼容函数:
functionbindEvent(el,eventType,handler){
if(el.addEventListener){//现代浏览器
el.addEventListener(eventType,handler,false);
}elseif(el.attachEvent){//IE8及以下
//注意事件名要加on,且this指向window,需手动绑定
el.attachEvent(on+eventType,function(){
handler.call(el);//让this指向当前元素
});
}else{//极旧浏览器
el[on+eventType]=handler;
}
}
3.移动端开发时,Safari浏览器有哪些特殊兼容问题?怎么处理?
答案:
①输入框聚焦时页面被顶起不回落
解决:监听blur事件,触发时用window.scrollTo(0,document.documentElement.scrollTop||document.body.scrollTop)强制回滚;
②点击事件有300ms延迟(早期为判断双击缩放)
解决:引入FastClick库(需在DOM加载完成后初始化FastClick.attach(document.body)),或给页面加metaname=viewportcontent=width=device-width(现代Safari已优化,但低版本仍需处理);
③不支持CSSsticky定位
解决:用position:fixed配合JS监听滚动事件模拟,或改用position:relative+父容器overflow:auto兜底。
4.如何让低版本浏览器(如IE9)支持Promise、Array.prototype.includes等ES6+特性?
答案:
需结合“转译”+“Polyfill”:
①转译:用Babel将ES6+语法转成ES5,需配置@babel/preset-env(在.babelrc中指定兼容目标,如targets:{ie:9});
②Polyfill:补充浏览器缺失的API(如Promise、includes),推荐用core-js@3(需在入口文件引入importcore-js/stable;importregenerator-runtime/runtime),避免用废弃的babel-polyfill;
注意:需通过.browserslistrc文件明确兼容范围(如ie9-11,chrome=49),让工具自动按需引入Polyfill,减少冗余代码。
5.图片在Retina屏(如iPhone)上显示模糊,怎么解决?
答案:
核心是让图片像素密度匹配屏幕设备像素比(DPR):
①用srcset+sizes标签适配:
img
src=img-1x.jpg
srcset=img-1x.jpg1x,img-2x.jpg2x,img-3x.jpg3x
alt=示例图
(1x对应普通屏,2x/3x对应Retina屏,浏览器自动选择);
②背景图用background-image配合image-set:
.bg{
background-image:url(img-1x.jpg);
background-image:-webkit-image-set(
url
文档评论(0)