浏览器|腾讯大佬整理的Web前端面试题目及答案汇总( 二 )


浏览器的默认字体高都是16px 。 所以未经调整的浏览器都符合: 1em=16px 。 那么12px=0.75em 10px=0.625em
8、什么叫优雅降级和渐进增强?渐进增强 progressive enhancement:

针对低版本浏览器进行构建页面 , 保证最基本的功能 , 然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验 。
优雅降级 graceful degradation:

一开始就构建完整的功能 , 然后再针对低版本浏览器进行兼容 。
区别:
a. 优雅降级是从复杂的现状开始 , 并试图减少用户体验的供给
b. 渐进增强则是从一个非常基础的 , 能够起作用的版本开始 , 并不断扩充 , 以适应未来环境的需要
c. 降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看 , 同时保证其根基处于安全地带
9、浏览器的内核分别是什么?IE: trident内核
Firefox:gecko内核
Safari:webkit内核
Opera:以前是presto内核 , Opera现已改用Google Chrome的Blink内核
Chrome:Blink(基于webkit , Google与Opera Software共同开发)
JavaScript部分1、怎样添加、移除、移动、复制、创建和查找节点?1)创建新节点
createDocumentFragment() //创建一个DOM片段
createElement() //创建一个具体的元素
createTextNode() //创建一个文本节点

2)添加、移除、替换、插入
appendChild() //添加
removeChild() //移除
replaceChild() //替换
insertBefore() //插入

3)查找
getElementsByTagName() //通过标签名称
getElementsByName() //通过元素的Name属性的值
getElementById() //通过元素Id , 唯一性

2、实现一个函数clone , 可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制 。/**
* 对象克隆
* 支持基本数据类型及对象
* 递归方法
*/
function clone(obj) {
   var o;
   switch (typeof obj) {
       case \"undefined\":
           break;
       case \"string\":
           o = obj + \"\";
           break;
       case \"number\":
           o = obj - 0;
           break;
       case \"boolean\":
           o = obj;
           break;
       case \"object\": // object 分为两种情况 对象(Object)或数组(Array)
           if (obj === null) {
               o = null;
            else {
               if (Object.prototype.toString.call(obj).slice(8 -1) === \"Array\") {
                   o = [
;
                   for (var i = 0; i < obj.length; i++) {
                       o.push(clone(obj[i
));
                   
                else {
                   o = {;
                   for (var k in obj) {
                       o[k
= clone(obj[k
);