看不完的那种!前端170面试题+答案学习整理(良心制作)

前言

希望可以通过这篇文章,能够给你得到帮助。(感谢一键三连)

image

1.css3有哪些新特性

圆角border-radius,阴影box-shadow,对文字加特效text-shadow,线性渐变gradient,变化transform,伪元素::selection,媒体查询,多栏布局,图片边框border-image

  1. p:first-of-type,选择属于其父元素的首个

    元素的每个

    元素

  2. p:last-of-type,选择属于其父元素的最后一个

    元素的每个

    元素

  3. p:only-of-type,选择属于其父元素的唯一

    元素的每个

    元素

  4. p:only-child,选择属于其父元素的唯一子元素的每个

    元素

  5. p:nth-child(2),选择属于其父元素的第二个子元素的每个

    元素

  6. :enabled:disabled,控制表单控件的禁用状态
  7. :checked,单选框或复选框被选中

2.first-childfirst-of-type的区别是

  1. first-child匹配的是父元素的第一个子元素,可以说是结构上的第一个子元素
  2. first-of-type匹配的是该类型的第一个元素,类型就是指冒号前面匹配到的元素。(只要是该类型的元素第一个即可,不限制是第一子元素)

  • p:first-child匹配到p元素,因为p元素是div的第一个子元素
  • span:first-child匹配不到span元素,因为spandiv的第二个子元素
  • p:first-of-type匹配到p元素,因为pdiv所有为p的子元素中的第一个
  • span:first-of-type匹配到span元素,因为spandiv所有未span的子元素中的第一个。

3.解决使用transform:translate属性时会出现闪烁现象

-webkit-backface-visibility: hidden; // 隐藏转换的元素的背面
-webkit-transform-style: preserve-3d; // 使被转换的元素的子元素保留其3d转换
-webkit-transform: translated3d(0,0,0); // 开启gpu硬件加速模式,使用gpu代替cpu渲染动画

4.如何使用@keyframes使div元素移动200像素

div {
 widht:100px;
 height:100px;
 background: red;
 animation: move 3s;
}
@keyframes move{
 from{
  margin-left: 0px;
 }
 to{
  margin-left: 100px;
 }
}

5.如何实现文本换行

使用word-wrap属性:normal只在允许的断字点换行;break-word在长单词或url地址内部进行换行。

6.超出文本省略

使用text-overflow:ellopsis:文本溢出时,为了不显示省略标记...,通过clip直接将溢出的部分裁剪掉。

7.css3动画如何在动作结束时保持状态不变

使用animation-fill-mode,值为none,表示不改变默认行为;值为forwards,当动画完成后,保持最后一个属性值;backwards,在animation-delay所指定的一段时间内,在动画显示之前,应用开始属性值;both,向前和向后填充模式都可以应用。

css3动画的优点:在性能上会稍微好一些,浏览器会对css3的动画做一些优化,代码相对简单;css3动画的缺点:在动画控制上不够灵活,兼容性不好,部分动画功能无法实现。

8.实现某div元素以每秒50px的速度左移100px

$('div'),animate({'left': 100}, 2000);
div {
 transition: all 2s linear;
}
div.style.left = {div.offsetLeft+100)+'px';

9.说说box-sizing属性

box-sizing属性用来控制元素盒模型的解析模式,默认是content-box

content-box让元素维持w3c的标准盒模型,元素的宽度/高度由border+padding+content的宽度/高度决定,设置width/height属性指的是指定content部分的宽度/高度。

border-box让元素维持ie传统盒模型,设置width/height属性指的是指定border+padding+content的宽度/高度。标准浏览器下,按照w3c规范解析盒模型,一旦修改了元素的边框或内距,就会影响元素的盒子尺寸,就不得不重新计算元素的盒子尺寸,从而影响整个页面的布局。

content-box盒模型:

布局所占宽度:

width=width + padding-left + paddiing-right + border-left + border-right

布局所占高度:

Height = height + padding-top + padding-bottom + border-top + border-bottom

padding-box盒模型:

布局所占宽度:

width = widht(包含padding-left + padding-right) + border-top + border-bottom

布局所占高度:

Height = height(包含padding-top + padding-bottom) + border-top + border-bottom

border-box盒模型:

布局所占宽度:

width = widht(包含padding-left + padding-right + border-left + border-right)

布局所占高度:

height = height(包含padding-top + padding-bottom + border-top + border-bottom)

10.如何实现把文本分隔为4列并使两列之间间隔30像素

div {
 -moz-column-count: 3;
 -webkit-column-count: 3;
 column-count: 3;
 -moz-column-gap: 40px;
 -webkit-column-gap: 40px;
 column-gap: 40px;
 width: 600px;
}

11.background-clipbackground-orgin的区别

  • background-clip规定背景,背景颜色和背景图片的绘制区域。

它有三个属性:

1. border-box表示背景从边框开始绘制
2. padding-box表示背景在边框内部绘制
3. content-box表示背景从内容部分绘制
  • background-origin规定背景图片的定位区域

它有三个属性:border-boxpadding-boxcontent-box(它只能对背景做样式上的操作)

12.css3transition属性值以及含义是

transition属性是一个简写属性:

  1. transition-property哪个属性需要实现过渡
  2. transition-duration完成过渡效果需要多少秒/毫秒
  3. transition-timing-function速度效果的运动曲线,如linear,ease-in,ease,ease-out,ease-in-out,cube-bezier
  4. transition-delay规定过渡开始前的延迟时间

13.当元素不面向屏幕时其可见性如何定义

backface-visibility: visible | hidden

14.如何实现css3倒影

-webkit-box-reflect设置方向,距离。方向可以设置为below,above,left,right

.demo { 
 height: 100px;
 widht: 100px;
 background: url(logo.png);
 -webkit-box-reflect: below 10px;
}

15.css3实现背景颜色线性渐变

div{
 background: -webkit-linear-gradient(left,red,green 50%, blue)
}

16.为盒子添加蒙版

.demo {
 height: 100px;
 width: 100px;
 -webkit-mask-image: url(shadow.png);
 -webkit-mask-position: 50% 50%;
 -webkit-mask-repeat: no-repeat;
}

17.animation属性值有哪些

animation-name就是动画名称;animation-duration就是动画持续时间;animation-play-state是播放状态(running表示播放,paused表示暂停),可以用来控制动画暂停;animation-delay就是动画延迟时间;animation-timing-function就是动画运动形式,animation-iteration-count就是重复次数;animation-direction就是播放前重置。

18.rem的原理是什么

在做响应式布局时,通过调整html的字体大小,页面上所有使用rem单位的元素都会做相应的调整。

19.如何设置css3文本阴影

h1 {text-shadow: 水平阴影,垂直阴影,模糊距离,阴影颜色}

20.如何把元素从左侧移动50像素,从顶端移动100像素

div{
 transform: translate(50px,100px);
 -ms-transform: translate(50px,100px);
 -webkit-transform: translate(50px,100px);
 -o-transform: translate(50px,100px);
 -moz-transform: translate(50px,100px);
}

21.如何把一个元素旋转30°

div{
 transform:rotate(30deg);
 -ms-transform: rotate(30deg); //ie9
 -webkit-transform: rotate(30deg); //safari,chrome
 -o-transform: rotate(30deg); // opera
 -moz-transform: rotate(30deg); // firebox
}

22.利用css3制作淡入淡出的动画效果

@-webkit-keyframes daIn{
 from {
  opacity: 0;
 }
 to {
  opacity: 1;
 }
}

@-webkit-keyframes daOut {
 from{
  opacity: 1;
 }
 to{
  opacity: 0;
 }
}

div {
 -webkit-animation-name: daIn; // 动画名称
 -webkit-animation-duration: 3s; // 动画持续时间
 -webkit-animation-iteration-count: 1; // 动画次数
 -webkit-animation-delay: 0s; // 延迟时间
}

23.在使用Bootstrap的同时使用地图api,可能会造成Bootstrap与地图冲突,地图显示不出来,如何解决

主要是在使用Bootstrap的变体zui.css的时候出现的,首先,打开浏览器的开发者工具,查看控制台有无错误,如没有,查看网络中的资源,并确认与地图相关的图片资源有无加载,若加载了,将地图调用的代码从项目中独立出来,看能否正常显示,若能显示,在项目中,使用二分法一半一半地删除引用的JavaScript,css代码,看这些JavaScriptcss代码是否对地图api造成了影响,把问题锁定在zui.css中,然后,在elements里核对地图div下面的一些css

24.jquery中的deferred的功能

  1. 实现链式操作
  2. 指定同一操作的多个回调函数
  3. 为多个操作指定回调函数
  4. 提供普通操作的回调函数接口

25.什么是deferred对象

开发网站过程中,会遇到某些耗时很长的javascript操作,有异步操作,如ajax读取服务器数据,有同步操作,如遍历一个大型数组,它们都不能立即得到结果。

可以为它们指定回调函数callback,就是事先规定,一旦运行结束,调用那些函数,但是,在回调函数方面,jquery的功能非常弱,为了改变这一点,jquery开发设计了deferred对象。

26.jqueryjquery ui的区别

jquery是一个javascript库,主要提供选择器,属性修改和事件绑定等功能。jquery ui则是在jquery的基础上对jquery的扩展,是jquery的插件。jquery ui提供了一些常用的界面元素,如对话框,拖动行为,改变大小行为等。

27.如何用原生JavaScript实现jqueryready方法

$(document).ready()dom绘制完毕后就执行,而不必等到页面加载完毕。

// 实现ready方法
var DOMReady = (function() {
 // 回调函数队列
 var fnList = [];
 // 页面是否已经绘制完成
 var ready = false;
 var fnEvent = null;
 // 事件回调函数
 function handler(e) {
 // 确保事件回调函数只执行一次
 if(ready){
 return;
 }
 // 如果发生了`onreadystatechange事件,但是状态不是complete,说明dom没有绘制完成
 if(e.type==='onreadystatechange' && document.readyState !== 'complete') {
  return;
 }
 // 运行所有回调函数,为了防止运动时候注册更多的事件回调函数,每次都要重新判断fnList的长度
 for(var i = 0; i

28.jquery中的attrprop区别

对于html元素本身就带有的固定属性,在处理时,使用prop方法;对于html元素自定义的dom属性时,在处理时,使用attr方法。

29.$.map()$.each()区别

$.map()方法用来遍历操作数组和对象,返回的是一个新的数组; $.map()方法适用于将数组或对象的每个项目映射到一个新数组中。

$.each()用于遍历jquery对象,返回的是原来的数组,并不会返回一个新数组。

30. jquery中如何将一个jquery对象转化为dom对象

jquery对象是一个数据对象, 可以用[index]的方法来得到相应的dom对象

var $v = $('#v'); // jquery对象
console.log($v[0]); // dom对象

使用get(index)方法:

var $v = $("#v");
console.log($v.get(0)); // dom对象

31.jquery中监听事件有几种方式

4中事件监听方式:bind(),live(),delegate(),on();解除事件对应的4种:unbind(),die(),undelegate(),off()

32.jquery中个geteq区别

  • get()取得其中一个匹配的元素,num表示取得第几个匹配的元素,get()多针对集合元素,返回的是dom对象组成的数组
  • eq()获取第n个元素,下标都从0开始,返回的是一个jquery对象。

33.jquery中的事件冒泡,怎么执行,如何停止冒泡事件

事件冒泡从里面往外面开始传递。在jquerystopPropagation()方法用于停止冒泡,兼容所有浏览器

34.jquery中的hovertoggle区别

hover()toggle()都是jquery中的两个合成事件。

  • hover()方法用于模拟光标悬停事件
  • toggle()方法用于连续交替单击事件

35. 你使用过哪些数据格式

html格式,json格式,xml格式:html片段提供外部数据,一般来说是最简单的;如果数据需要复用,那么在性能和文件大小方面具有优势的是json;当远程应用程序未知时,xml能为数据的操作性提供最可靠的保证。

36.选择器中idclass有什么区别

  • id,在网页中每个id名称只能有一次,class可以重复使用

37.为了将单选按钮组的第二个选框设置为选中状态,如何设置

$('input[name=items]').get(1).checked = true

38.$.getScript()方法和$.getJson()方法有什么区别

  • $.getScript()方法可以直接加载javascript文件,并且不需要对javascript文件进行处理,javascript文件会自动执行。
  • $.getJson()是用于加载json文件的,用法和$.getScript()一样。

39.jqueryzepto源码有哪些地方觉得不错

jquery源码封装在一个匿名函数的自执行环境中,有助于防止变量的全局污染。

通过传入window对象参数,可以使window对象作为局部变量使用。

好处是当jquery访问window对象的时候,就不用将作用域链退回到顶层作用域了,从而可以更快地访问window对象,同样,传入undefined参数,可以降低undefined被重定义的风险。

(function (window, undefined) {
 window.jQuery = window.$ = jQuery
})(window);

jquery将一些原型属性和方法封装在了jQuery.prototype中,为了方便对jQuery.prototype的访问,将jQuery.prototype赋值给jQuery.fn。一些数组或对象的方法经常能使用到,jQuery将其保存为局部变量以提高访问速度。jQuery实现的链式调用可以节约代码,所返回的都是同一个对象,可以提高开发效率。

40.jQuery中的美元符号

$(document).ready(function(){
 //...
});
jQuery(document).ready(function(){
 //...
});

41.onload()函数和ready()函数的区别

  • 可以在页面中使用多个ready(),但只能使用一次onload()
  • ready()函数在页面dom元素加载完以后就会调用,而onload()函数则要在所有的关联资源加载完毕后才会调用,要晚于ready()函数。

42.jQuery中有哪几种常见的选择器

基本选择器;层次选择器;过滤选择器;属性选择器;子元素选择器;表单选择器;内容选择器;可见选择器

43.使用jQuery将页面上所有元素边框设置为2px宽的虚线


44.使用jQuery实现单击按钮时弹出一个对话框


jQuery:

45.如何使用jquery编码和解码url

编码时使用encodeURIComponent(url),解码时使用decodeURIComponent(url)

46.jquery中的delegate()函数有什么作用

delegate()jquery中事件委托的语义化方法,会在以下两种情况中使用到。

如果有一个父元素,需要给其下的子元素添加事件,这时可以使用delegate()了。

$("ul").delegate("li", "click", function(){
 $(this).hide();
});

当元素在当前页面中不可用时,使用delegate()

47.如何禁用浏览器的前进和后退按钮


48.网页上有5个
元素,如何使用jquery来选择它们

可以使用标签选择器来选择所有的div元素,$("div")会返回一个包含5个div标签的jQuery对象。

49.如何在单击一个按钮时使用jQuery隐藏一副图片

$('.demo-img').click(function() {
 $('.img').hide();
});

50. $(document).ready()是什么函数

ready()函数用于在文档进入ready状态时执行代码。当dom完全加载时,jquery允许你执行代码,使用$(document).ready()最大的好处在于它适用于所有浏览器,jQuery有助于解决跨浏览器兼容性问题。

51.如何找到所有多选下拉框内的选中项

可以用jquery选择器获取所有满足multiple=true

的作用

表示用户界面中某个元素的说明

增加命中区域,屏幕阅读器可以读出标签。使用辅助技术的用户更容易理解输入 哪些数据

利用label"模拟"button来解决不同浏览器原生button样式不同的问题

结合checkbox、radio表单元素实现纯CSS状态切换,这样的实例就太多了。比如控制CSS动画播放和停止

inputfocus事件会触发锚点定位,我们可以利用label当触发器实现选项卡切换效果

84.用css创建一个三角形,并简述原理

 width: 0;
height: 0;
margin: 100px auto;
border-top: 50px solid transparent;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 50px solid red;

原理是宽高是两边固定,border不一样,有颜色,且有top、right、bottom、left的选项进行修改。在使用的时候需要宽高为零。三角形就需要数学知识(勾股定理),去考虑为等边、全等。

image

创建一个div,宽高都为0,实现效果如下,发现border的四个边都是一个三角形,要实现三角形只需将其中几个边background设置为transparent,即可得到三角形


image

85.Iframe 有什么好处,有什么坏处?国内还有哪些知名网站仍用Iframe,为什么?有哪些原来用的现在抛弃了?又是为什么?

iframe原本的用法在现在看来是不合时宜的,问题太多了,但是它的其他功能却是不错的黑魔法。

  • 用来实现长连接
  • 跨域通信
  • 历史记录管理,解决ajax化网站响应浏览器前进后退按钮的方案,在html5history api不可用时作为一种替代。
  • 纯前端的utf8gbk编码互转

现在,应该使用 iframe 的例子如:

  1. 沙箱隔离。
  2. 引用第三方内容。
  3. 独立的带有交互的内容,比如幻灯片。
  4. 需要保持独立焦点和历史管理的子窗口,如复杂的Web应用。

注:登录弹窗用 iframe 未必合适。HTML标准新增了dialog元素,可能更适合。

86.简述你对BFC规范的理解

BFC 全称“块级格式化上下文”(Block Formatting Context),对应的还有 IFCBFC 类似一个“结界”,如果一个 DOM 元素具有 BFC,那么它内部的子元素不会影响外面的元素;外面的元素也不会影响到其内部元素。

最常见的例子就是清除 floatoverflow: hidden; 属性。overflow: hidden;会触发元素的 BFC,因此其内部的 float 元素不会影响到外部元素的布局。

触发 BFC 的条件:

 根元素
float 不为 none
overflow 为 auto,scroll,hidden
display 的值为 table-cell, table-caption,inline-block 中任何一个
position 的值不为 static 和 relative

BFC 可以实现更加健壮的自适应布局。

参考文章:《CSS 世界》

image
image
image
image

87.统计某一字符或字符串在另一个字符串中出现的次数

var childInNums = parent.split(child).length - 1
function strCount(str, target) {
  let count = 0
  if (!target) return count
  while(str.match(target)) {
    str = str.replace(target, '')
    count++
  }
  return count
}

console.log(strCount('abcdef abcdef a', 'abc'))

88.清除浮动的方式有哪些及优缺点?

  1. 通过设置父标签overflow: auto
  2. 通过after伪类: {display: block; content: ''; clear: both;}

触发BFCclear: both

CSS盒子塌陷问题解决方案解决方案

89.简要描述下JS有哪些内置的对象

时间对象Date
字符串对象String
数学对象Math
数值对象Number
数组对象Array
函数对象Function
函数参数集合arguments
布尔对象Boolean
错误对象Error
基础对象Object

90.常见的浏览器内核都有哪些?

内核按功能可以分为渲染引擎和JS引擎。

我们常说的浏览器内核指代的是浏览器的渲染引擎。

IE : Trident
safari(苹果公司自带浏览器): webkit
FireFox : Gecko
Chrome : Blink ,JS引擎为V8引擎
Opera : Blink

91.盒模型的理解

盒模型主要有以下几部分组成:

内容(content)
内边距(padding)
边框(border)
外边框(margin)

盒模型分为两种:

标准盒模型(w3c 盒模型) 标准盒模型的 width = content

IE 盒模型 IE 盒模型的 width = padding + border + content

image

默认的情况下,盒子都是基于标准盒模型的盒子。

css3 中出现了 box-sizing 属性,该属性会改变默认盒子的盒模型。该属性的两个属性值分别表示为:content-box(标准盒模型)和 border-box(IE 盒模型)。

盒模型的理解

92.html5中的form怎么关闭自动完成?

设置formautocomplete属性为off

93.::before:after中单冒号和双冒号的区别是什么

区别:

伪元素在css1中已经存在当时用单冒号,css3时做了修订用双冒号 ::before ::after表示伪元素用来区别伪类。

作用:

在元素前面(::before)和后面(::after)加内容
image

【CSS】属性content有什么作用呢?有哪些场景可以用到?

94.说说你对javascript的作用域的理解

1:全局作用域
2:局部作用域

ES5 之前,javascript 只有函数作用域而没有块级作用域的。在 if 或者 for 花括号中的变量实际在外层是可以被访问的。

for(var i = 0; i < 10; i++){var j=123}
console.log(j) // 123;

不过使用 ES6 的 let 和 const 之后,就可以实现块级作用域了。

var a = 1;
function b(){
    var b = 2;
    console.log(a);
    function c(){
        // 内部可以访问外部,而外层访问不到内部
        var a = 4;
        var c = 3;
        console.log(a); // 4 不会污染
        console.log(b); // 2
    }
    c();
}

console.log(b());
console.log(a);

95.http都有哪些状态码?

200 成功
301 重定向
304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
400 (错误请求) 服务器不理解请求的语法。
403 (禁止) 服务器拒绝请求。
404 (未找到) 服务器找不到请求的网页。
500 (服务器内部错误) 服务器遇到错误,无法完成请求。
501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。

96.为什么HTML5只需要写就可以

因为 HTML5HTML4 基于的基准不同。

HTML4 基于 SGML 因此需要除了 DOCTYPE 外还需要引入 DTD 来告诉浏览器用什么标准进行渲染。DTD 还分为标准模式、严格模式。如果什么都不写,就完全让浏览器自我发挥,会变成怪异模式。

HTML5 不基于 SGML,因此后面就不要跟 DTD,但是需要 DOCTYPE 来规范浏览器的渲染行为。

注:SGML 是通用标记语言的集合。其中有 HTML、XML,因此需要用 DTD 来指定使用那种规范。

97.什么是闭包?优缺点分别是什么?

  • 闭包:在局部作用域引用上层作用域(非全局)的变量
  • 优点:防止变量污染作用域
  • 缺点:不释放则会导致内存泄漏

98.写一个数组去重的方法

一维

new set(...arr)

二维

arr.reduce((a,b)=>{
    return new set(...a.concat(b))
},[])

99.元素的alttitle有什么区别?

title属性是一个标记,它向每个元素添加补充信息。当鼠标指针放在元素上时,主要作用是显示工具提示。

alt是为图片指定替代文字的属性

alt是在中指定的属性标签,表示图像。

正如我写为替代文本一样,它用于需要文本而不是图像的情况。

  • 如果盲人使用语音阅读功能,则会大声朗读图像的alt属性中的文本。
  • 当由于链接断开而无法显示图像时,将显示它。
  • GoogleYahoo!等机器人抓取图片的提示。

100.table的作用和优缺点是什么呢?

table 用于表格数据的展示,并且很符合人们的直观认知。

div+css 布局流行之前,普遍使用 table 进行布局。

table 布局的好处在于样式好控制,特别是居中、对齐。缺点在于会多处非常多的 DOM 节点,会导致页面加载变慢、不利于 SEO。也因此,在 CSS 成熟之后,table 布局马上就变成历史了。

101. typeof('abc')typeof 'abc'都是string, 那么typeof是操作符还是函数?

假设typeof是函数,则调用typeof(typeof)应该返回一个字符串'function',但是实际操作会报错,所以typeof不是函数

image

typeof 是操作符,明确定义在MDN当中,作用是对后方表达式的返回做类型定义。

102.说说你对SVNGIT的理解和区别

SVN是集中式,GIT是分布式

103.什么是FOUC?你是如何避免FOUC的?

FOUC:加载时样式突然变化

原因:由于在渲染HTML时,遇到CSS样式表会重新渲染HTML

样式表没有放到head里面,使用了@import导入样式

解决:尽量把样式表放到body标签上面

104.css的属性content有什么作用呢?

content属性与 ::before::after 伪元素配合使用生成文本内容

105."attribute""property"有什么不同?

  • propertyDOM中的属性,是JavaScript里的对象
  • attributeHTML标签上的特性,它的值只能够是字符串

106.写一个验证身份证号的方法

地址码6位+年份码4位+月份码2位+日期码2位+顺序码3位+校验码1位

107.对于HTML表单输入字段,disabled =“ disabled”和readonly =“ readonly”有什么区别?

相同点:都会使文本框变成只读,不可编辑

image

disabled属性在将input文本框变成只读不可编辑的同时,还会使文本框变灰,但是readonly不会。

设置了readonly属性的input元素依然可以获取焦点,但是设置了disabled属性的input元素没有办法获取焦点

readonly只针对inputtextarea有效,而disabled对于所有的表单元素都有效。

readonly:不可编辑、可复制、可选择、可以接收焦点但不能被修改,后台会接收到传值

disabled:不可编辑、不可复制、不可选择、不能接收焦点,后台也不会接收到传值

108.说说你对line-height是如何理解的?

line-height,又称行高,指的是两行文字基线之间的距离,又可以称为这行文字所占的高度。

如图红色线即为基线

image

基线(baseline),指的是一行字横排时下沿的基础线,基线并不是汉字的下端沿,而是英文字母x的下端沿。

image
image

109.说说你对重绘和重排的理解,以及如何优化?

浏览器加载网页时会生成DOM树和CSSOM树

image

重绘:

当盒子的位置、大小以及其他属性,例如颜色、字体大小等都确定下来之后,浏览器便把这些原色都按照各自的特性绘制一遍,将内容呈现在页面上。重绘是指一个元素外观的改变所触发的浏览器行为,浏览器会根据元素的新属性重新绘制,使元素呈现新的外观。

触发重绘的条件:改变元素外观属性。如:color,background-color,font-size等。

重排(回流):

当渲染树中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变而需要重新构建, 这就称为回流(reflow)。每个页面至少需要一次回流,就是在页面第一次加载的时候。

重绘和重排的关系:在回流的时候,浏览器会使渲染树中受到影响的部分失效,并重新构造这部分渲染树,完成回流后,浏览器会重新绘制受影响的部分到屏幕中,该过程称为重绘。

所以,重排必定会引发重绘,但重绘不一定会引发重排。

触发重排的条件:任何页面布局和几何属性的改变都会触发重排

比如:

1、页面渲染初始化(无法避免)

2、添加或删除可见的DOM元素;

3、元素位置的改变,或者使用动画;

4、元素尺寸的改变——大小,外边距,边框;

5、浏览器窗口尺寸的变化(resize事件发生时);

6、填充内容的改变,触发重排的条件:改变元素的大小 位置 等如:width、height、pading、margin、position等, 添加删除DOM操作等

重绘重排的代价:耗时,导致浏览器卡慢。

110.0.1 + 0.2、0.1 + 0.3和0.1 * 0.2分别等于多少?并解释下为什么?

image

111.new操作符的理解是什么?手动实现一个new方法

new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一

new Object()举例:

  • 创建一个新对象
  • 把新对象的原型指向构造函数的prototype
  • 把构造函数里的this指向新对象
  • 返回这个新对象
image

112.jquery中是如何操作类的

addClass()来追加类,用removeClass()来删除类,用toggle()来切换类。

如何给jQuery动态添加新的元素,如何给新生产的元素绑定事件

jQueryhtml()可以给当前元素添加新的元素。直接在元素还未生成前就绑定事件肯定是无效的,因为所绑定的元素目前根本不存在。所以可以用live方法来动态绑定事件。

113.使用jQuery中的动画

  • hide()show()可以同时修改多个样式属性,如高度,宽度,不透明度。
  • fadeIn()fadeOut()fadeTo()只能改变不透明度。
  • slideUp()slideDown()slideToggle()只能改变高度。
  • animate()属于自定义动画的方法,可以自定义属性。

114.单击超链接后自动跳转,单击“提交”按钮后表单会提交等,有时候,为了阻止默认行为,怎么办

使用event.preventDefault()或在事件处理函数中返回false,即是return false

115.你使用什么方法提交数据

一般使用$.post()方法,如果需要设定beforeSend提交前回调函数,error失败后处理,success成功后处理complete请求完成后处理回调函数等,就会使用$.ajax()

116.在ajax中获取数据的主要有几种方式

三种:html拼接的query数据,json数组对象数据,serialize()方法序列化后的表单数据。

117.jquery中使用过哪些插入节点的方法

内部插入方法:append(), appendTo(), prepend(), prependTo()

外部插入方法:after(), insertAfter(),before(), insertBefore()

118.在jquery中,如何获取或者设置属性?如何删除属性

jquery中可以用attr()方法来获取和设置元素属性,可以用removeAttr()方法来删除元素属性。

119.如何设置和获取html以及文本的值

使用html()方法,类似于innerHTML属性,可以用它读取或设置某个元素中的HTML内容。

html()方法可以用于XHTML文档,不能用于XML文档。

  1. text()方法可以用来读取或设置某个元素中的文本内容
  2. val()方法可以用来设置或获取元素的值

120.说说

你可能感兴趣的:(看不完的那种!前端170面试题+答案学习整理(良心制作))