WEB 面试题

一、HTML 方面

1、三栏布局,左右固定,中间自适应?

左中右三栏宽度自适应于浏览器的方法有三个:绝对定位法margin负值法以及自身浮动法

一、绝对定位法:左右两栏采用绝对定位,分别固定于页面的左右两侧,中间的主体栏用左右margin值撑开距离。于是实现了三栏自适应布局。

这种方式三个div的顺序可以任意改变。

此方法的优点在于:理解容易,上手简单,受内部元素影响而破坏布局的概率低,就是比较经得起折腾。

缺点在于:如果中间栏含有最小宽度限制,或是含有宽度的内部元素,当浏览器宽度小到一定程度,会发生层重叠的情况。

<body>

    <div class="main"></div>

    <div class="left"></div>

    <div class="right"></div>

</body>

.main {

    margin: 0 200px;

    background: red;

}   

.left {

    position: absolute;

    top: 0;

    left: 0;

    width: 200px;

    height: 100%;

}

.right {

    position: absolute;

    top: 0;

    right: 0;

    width: 200px;

    height: 100%;

}

二、自身浮动法:左栏左浮动,右栏右浮动,中间栏放最后

这种方式需要注意三个div的顺序,左右两栏的顺序不分先后,但是中间一栏必须放在最后。

此方法的优点是:代码足够简洁与高效

缺点是:中间主体存在克星,clear:both属性。如果要使用此方法,需避免明显的clear样式。

<body>

  <div class="left"></div>

  <div class="right"></div>

  <div class="main"></div>

</body>

.main {

margin :0 200px;

}

.left {

float: left;

width: 200px;

height: 100%;

}

.right {

float: right;

width: 200px;

height: 100%;

}

三、margin负值法:左右两栏均左浮动,左右两栏采用负的margin值。中间栏被宽度为100%的浮动元素包起来。

左右两栏div的顺序不分先后,但是主体部分div要放前面。

此方法的优点在于:三栏相互关联,可谓真正意义上的自适应,有一定的抗性——布局不易受内部影响。

缺点在于:相对比较难理解些,上手不容易,代码相对复杂。出现百分比宽度,过多的负值定位,如果出现布局的bug,排查不易。

<body>

    <div class="main">

        <div class="content"></div>

    </div>

    <div class="left"></div>

    <div class="right"></div>

</body>

.main {

    float: left;

  width:100%;

}

.content {

    margin:0 200px;

    height:100%;

}

.left {

    float: left;

    width: 200px;

    margin-left: -100%;

}

.right {

    float: left;

    width: 200px;

    margin-left: -200px;

}




二、CSS 方面

1、css盒模型有哪些及区别?

IE盒子模型box-sizing:border-box;(怪异模式)

W3C标准盒子模型 box-sizing:content-box;(标准模式)默认模式

2、同上问题,怎么相互转换?


来说说为什么要将标准盒模型转换为IE盒模型

为什么IE盒模型更容易开发?先来解决这个问题。从上面两张图片对比可以看出来,标准的盒模型padding,border是不算在宽度之内的,所以当你比如要在一个容器里并排显示两个同样的盒子。你用标准模型时肯定会这样设置每个盒子width:50%.但是当你查看时会发现两个盒子紧紧挨在一起实在是不美观,所以你又设置padding:0 5%;然而这时候两个盒子宽度又超过了大容器的总宽度,所以你又得去调整盒子的width:40% 这样确实可以解决问题,可是这样你不觉得很不方便吗。。好了这时候就可以看出IE盒模型的好处了。就将两个盒子的宽度设置为50%,这时候就算你再怎么去调整padding都会在两个盒子的内部去调整,不会再影响布局。简直方便到不要不要的~~


box-sizing 属性


3、页面导入样式时,使用link和@import有什么区别?

1.link属于HTML标签,除了加载CSS外,还能用于定义RSS,定义rel连接属性等作用;而@import是CSS提供,只能加载CSS;

2.页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;

import是CSS2.1提出的,只在IE5以上才能被识别,而link是HTML标签,无兼容问题;

4、清楚浮动有哪些方式?比较好的方式是哪一种?

1、父级div定义height。

2、结尾处加空div标签clear:both。

3、父级div定义伪类:after和zoom。

4、父级div定义overflow:hidden。

5、父级div定义overflow:auto。

6、父级div也浮动,需要定义宽度。

7、父级div定义display:table。

8、结尾处加br标签clear:both。

比较好的是第3种,好多网站都这样用

5、CSS实现垂直水平居中?

HTML 结构

<div class="wrapper">

<div class="content"></div>

</div>

CSS 结构

.wrapper {

    position: relative;

}

.content {

    width: 200px;

    height: 200px;

    position: absolute;        //父元素需要相对定位

    top: 50%;

    left: 50%;

    margin-top: -100px ;  //二分之一的height,width

    margin-left:  -100px;

}

第二种方法

.content {

    position: absolute;

    left: 50%;

    top: 50%;

    width: 200px;

    height: 200px;

    transform: translate(-50%,-50%);

    }

6、css选择符有哪些?哪些属性可以继承?

类型选择符(body)、群组选择符(h1,h2,h3,span)、包含选择符(h2 span)、ID选择符(#id)、Class选择符(.content)

CLASS属性,伪类A标签,列表ul、li、dl、dd、dt可以继承

优先级算法:

1.优先级就近原则,同权重情况下样式定义最近者为准;

2.载入样式以最后载入的定位为准;

3.!important >  id > class > tag 

4.important 比 内联优先级高,但内联比 id 要高

7、CSS3新增伪类?

1)      p:first-of-type  选择属于其父元素的首个 <p> 元素的每个 <p> 元素。

2)      p:last-of-type  选择属于其父元素的最后 <p> 元素的每个 <p> 元素。

3)      p:only-of-type  选择属于其父元素唯一的 <p> 元素的每个 <p> 元素。

4)      p:only-child    选择属于其父元素的唯一子元素的每个 <p> 元素。

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

6)      :enabled :disabled 控制表单控件的禁用状态。

7)      :checked        单选框或复选框被选中。

8、CSS3有哪些新特性?

1)    CSS3实现圆角(border-radius),阴影(box-shadow),

2)    对文字加特效(text-shadow、),线性渐变(gradient),旋转(transform)

3)    transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);// 旋转,缩放,定位,倾斜

4)    增加了更多的CSS选择器  多背景 rgba

5)    在CSS3中唯一引入的伪元素是 ::selection.

6)    媒体查询,多栏布局

7)    border-image

9、display:none;与visibility:hidden的区别是什么?

display:none;使用该属性后,HTML元素(对象)的宽高,高度等各种属性值都将“丢失”;

visibility:hidden;使用该属性后,HTML元素(对象)仅仅是在视觉上看不见(完全透明),而它所占据的空间位置仍然存在,也即是说它仍然具有高度,宽度等属性值。

10、怎么解决边界重叠问题?

答案

11、display:inline-block的间隙问题和解决办法?

**原因:**inline-block元素间有空格或是换行,因此产生了间隙。 

答案

三、JS 方面

1、js三种存储方式区别?

sessionStorage、localStorage、cookier

相同点:都保存在浏览器端,同源的

不同点:

①传递方式不同

cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递。

sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。

②数据大小不同

cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。

存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。

sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。

③数据有效期不同

sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;

localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;

cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。

④作用域不同

sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;

localStorage 在所有同源窗口中都是共享的;

cookie也是在所有同源窗口中都是共享的。

Web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者。

Web Storage 的 api 接口使用更方便。

2、null 与 undefined 区别?

null: Null类型,代表“空值”,代表一个空对象指针,使用typeof运算得到 “object”,所以你可以认为它是一个特殊的对象值。

undefined: Undefined类型,当一个声明了一个变量未初始化时,得到的就是undefined。

3、this 指向几种情况?

1:如果一个函数中有this,但是它没有被上一级的对象所调用,那么this指向的就是window,这里需要说明的是在js的严格版中this指向的不是window,但是我们这里不探讨严格版的问题,你想了解可以自行上网查找。

2:如果一个函数中有this,这个函数有被上一级的对象所调用,那么this指向的就是上一级的对象。

3:如果一个函数中有this,这个函数中包含多个对象,尽管这个函数是被最外层的对象所调用,this指向的也只是它上一级的对象。

4、继承几种方式?

答案

5、防止事件冒泡与取消默认事件、事件捕获?

防止冒泡

w3c的方法是e.stopPropagation(),IE则是使用e.cancelBubble = true

取消默认事件

w3c的方法是e.preventDefault(),IE则是使用e.returnValue = false;

DOM事件流(event  flow )存在三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段。

事件捕获(event  capturing)通俗的理解就是,当鼠标点击或者触发dom事件时,浏览器会从根节点开始由外到内进行事件传播,即点击了子元素,如果父元素通过事件捕获方式注册了对应的事件的话,会先触发父元素绑定的事件。

事件冒泡(dubbed  bubbling)与事件捕获恰恰相反,事件冒泡顺序是由内到外进行事件传播,直到根节点。

无论是事件捕获还是事件冒泡,它们都有一个共同的行为,就是事件传播,它就像一跟引线,只有通过引线才能将绑在引线上的鞭炮(事件监听器)引爆,试想一下,如果引线不导火了,那鞭炮就只有一响了!!!

dom标准事件流的触发的先后顺序为:先捕获再冒泡,即当触发dom事件时,会先进行事件捕获,捕获到事件源之后通过事件传播进行事件冒泡。不同的浏览器对此有着不同的实现,IE10及以下不支持捕获型事件,所以就少了一个事件捕获阶段,IE11、Chrome 、Firefox、Safari等浏览器则同时存在。

说到事件冒泡与捕获就不得不提一下两个用于事件绑定的方法addEventListener、attachEvent。当然还有其它的事件绑定的方式这里不做介绍。

  addEventListener(event, listener, useCapture)

·参数定义:event---(事件名称,如click,不带on),listener---事件监听函数,useCapture---是否采用事件捕获进行事件捕捉,

        默认为false,即采用事件冒泡方式

    addEventListener在 IE11、Chrome 、Firefox、Safari等浏览器都得到支持。

attachEvent(event,listener)

·参数定义:event---(事件名称,如onclick,带on),listener---事件监听函数。

    attachEvent主要用于IE浏览器,并且仅在IE10及以下才支持,IE11已经废了这个方法了(微软还是挺识趣的,慢慢向标准靠拢)。

6、什么是Ajax,同步与异步区别,创建一个Ajax?

AJAX是“Asynchronous JavaScript and XML”的缩写。他是指一种创建交互式网页应用的网页开发技术。

同步:阻塞的,浏览器向服务器请求数据,服务器比较忙,浏览器一直等着(页面白屏),直到服务器返回数据,浏览器才能显示页面。

异步:非阻塞的,浏览器向服务器请求数据,服务器比较忙,浏览器可以自如的干原来的事情(显示页面),服务器返回数据的时候通知浏览器一声,浏览器把返回的数据再渲染到页面,局部更新。

//ajax编写步骤//

//1、创建XMLHttpRequest对象

var xhr = new XMLHttpRequest();

//2、设置请求参数

xhr.open(请求方式,请求地址,异步或同步);

//3、设置回调函数

xhr.onreadystatechange = function(){

    if(xhr.reasyState===4){

        if(xhr.status === 200) {

           //5、接受响应

            console.log(xhr.responseText);

        }

    }

}

// 4、发送请求

xhr.send();

7、如何解决跨域问题?

理解跨域的概念:协议、域名、端口都相同才同域,否则都是跨域。

出于安全考虑,服务器不允许ajax跨域获取数据,但是可以跨域获取文件内容,所以基于这一点,可以动态创建script标签,使用标签的src属性访问js文件的形式获取js脚本,并且这个js脚本中的内容是函数调用,该函数调用的参数是服务器返回的数据,为了获取这里的参数数据,需要事先在页面中定义回调函数,在回调函数中处理服务器返回的数据,这就是解决跨域问题的主流解决方案。

8、GET和POST的区别,何时使用POST?

GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符,有的浏览器是8000个字符。

POST:一般用于修改服务器上的资源,对所发送的信息没有限制。

以下情况中,请使用POST请求:

①、无法使用缓存文件(更新服务器上的文件或数据库)

②、向服务器发送大量数据(POST没有数据量限制)

③、发送包含未知字符的用户输入时,POST比GET更稳定也更可靠。

9、一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?

分为4个步骤:

1. 当发送一个 URL 请求时,不管这个 URL 是 Web 页面的 URL 还是 Web 页面上每个资源的 URL,浏览器都会开启一个线程来处理这个请求,同时在远程 DNS 服务器上启动一个 DNS 查询。这能使浏览器获得请求对应的 IP 地址。

2. 浏览器与远程 Web 服务器通过 TCP 三次握手协商来建立一个 TCP/IP 连接。该握手包括一个同步报文,一个同步-应答报文和一个应答报文,这三个报文在 浏览器和服务器之间传递。该握手首先由客户端尝试建立起通信,而后服务器应答并接受客户端的请求,最后由客户端发出该请求已经被接受的报文。

3. 一旦 TCP/IP 连接建立,浏览器会通过该连接向远程服务器发送 HTTP 的 GET 请求。远程服务器找到资源并使用 HTTP 响应返回该资源,值为 200 的 HTTP 响应状态表示一个正确的响应。

4. 此时,Web 服务器提供资源服务,客户端开始下载资源。

10、html网页渲染的基本过程?

答案

11、解决跨域请求?

答案

12、js数据类型?

13、怎么判读是数组类型?

14、call、apply、bind区别?

15、js数组去重?

16、数组排序?

17、null属于什么类型?

18、闭包,什么时候使用?

19、性能优化方式?

20、声明函数与定义式函数区别,声明提前?

21、如何判断数值是NAN?

22、js数组与伪数组区别?

四、VUE 方面

1、vue生命周期?

2、vue 动态组件与异步组件?

3、vuex是做什么的?

4、vue常用指令?

5、v-if与v-show区别?

6、谈一谈父组件与子组件,兄弟组件?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342