前端面试题目整理一

1.浏览器本地存储

浏览器本身为js提供了两个本地存储的方式,一个是localstorage,一个是sessionstorage.

(1)sessionstorage是本地存储的一段对话中的数据,只有在同一个页面会话时才会访问sessionstorage并且当该回    话结束以后sessionstorage也会随之销毁。比如经常会用到的用sessionstorage来获取设置滚轮的位置

(2)localstorage是本地永久保存的一段数据,除非用户主动删除这些数据,否则就永远存储在本地,最常见的就是    在google浏览器中,第一次登录某网页后记住密码,第二次就可以不用输密码。


2.display:none和visibility:hidden的区别

红色、蓝色、绿色三个方块在页面上一竖排显示,当蓝色的方块设置display:none;时,你会看到蓝色的方块消失,并且被绿色方块代替,蓝色方块被隐藏起来,而且它所占的空间也随之消失不见。当设置为visibility:hidden;时红色绿色方块原地不动,蓝色方块消失,蓝色方块隐藏起来,整个页面分配给它的位置还留在这里。也可以比喻为一列学生坐在板凳上在学校操场看戏,一个学生被display:none;,请假回家队伍没有他的位置,一个学生被visibility:hidden;上厕所去了可能马上回来,队伍里还有他的板凳


3.link和@import区别

(1)link标签不仅可以引入css文件还可以引入/favorite.icon等文件

(2)link标签引入的css文件,在整个页面加载的时候同时加载样式,而@import则是在整个页面的html内容加载完    了以后才开始加载样式的

(3)@import支持IE5以上的浏览器

(4)js在进行DOM操作改变样式的时候只能改变用link标签引用的css文件

(5)link方式的样式的权重高于@import的权重


4.html常见的兼容性问题以及解决方案

(1)IE6双倍边距bug

      当页面上的元素使用float浮动时,不管是向左还是向右浮动;只要该元素带有margin像素都会使该值乘以2,例如“margin-left:10px” 在IE6中,该值就会被解析为20px。

想要解决这个BUG就需要在该元素中加入display:inline 或 display:block 明确其元素类型即可解决双倍边距的BUG。


(2)IE6中3像素问题

当元素使用float浮动后,元素与相邻的元素之间会产生3px的间隙。诡异的是如果右侧的容器没设置高度时3px的间隙在相邻容器的内部,当设定高度后又跑到容器的相反侧了。

要解决这类BUG的话,需要使布局在同一行的元素都加上float浮动。

(3)奇数宽高Bug

IE6中奇数的高宽显示大小与偶数高宽显示大小存在一定的不同。其中要问题是出在奇数高宽上。

要解决此类问题,只需要尽量将外部定位的div高宽写成偶数即可。

(4)IE6中图片链接的下方有间隙

IE6中图片的下方会存在一定的间隙,尤其在图片垂直挨着图片的时候,即可看到这样的间隙。

要解决此类问题,需要将img标签定义为display:block 或定义vertical-align对应的属性。也可以为img对应的

样式写入font-size:0

(5)IE6下空元素的宽高Bug

如果一个元素中没有任何内容,当在样式中为这个元素设置了0-19px之间的高度时。此元素的高度始终 19px。

解决的方法有四种:

1.在元素的css中加入:overflow:hidden

2.在元素中插入html注释:<!– >

3.在元素中插入html的空白符: 

4.在元素的css中加入:font-size:0

(6)重复文字Bug

在某些比较复杂的排版中,有时候浮动元素的最后一些字符会出现在clear清除元素的下面。

解决方法如下:

1.确保元素都带有display:inline

2.在最后一个元素上使用“margin-right:-3px

3.为浮动元素的最后一个条目加上条件注释,<!–[if !IE]>xxx<![endif]–>

4.在容器的最后元素使用一个空白的div,为这个div指定不超过容器的宽度。

5.清除浮动的技巧

(1)父级div定义height;

优点:简单,代码少;

缺点:只适合高度固定的布局,要给出精确的高度,如果高度和父级div不一样时,会产生问题。

            (2)结尾处加空div标签 clear:both ,添加一个空div,利用css提高的clear:both清除浮动,让父级div能自动获取高度

优点:简单、代码少、浏览器支持好、不容易出现怪问题 ;

缺点:不少初学者不理解原理;如果页面浮动布局多,就要增加很多空div,让人感觉很不好 

       (3)父级div定义 伪类:after 和 zoom ,IE8以上和非IE浏览器才支持:after,原理和方法2有点类似,zoom(IE转有属性)可解决ie6,ie7浮动问题

优点:浏览器支持好、不容易出现怪问题(目前:大型网站都有使用,如:腾迅,网易,新浪等等) ;

缺点:代码多、不少初学者不理解原理,要两句代码结合使用才能让主流浏览器都支持。 

       (4)父级div定义overflow:hidden ,必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览   器会自动检查浮动区域的高度 ;

优点:简单、代码少、浏览器支持好 ;

缺点:不能和position配合使用,因为超出的尺寸的会被隐藏。 

       (5)父级div定义overflow:auto ,必须定义width或zoom:1,同时不能定义height,使用overflow:auto时,浏览器会   自动检查浮动区域的高度 ;

优点:简单、代码少、浏览器支持好 ;

缺点:内部宽高超过父级div时,会出现滚动条。

   

猜你喜欢

转载自blog.csdn.net/qq_33462673/article/details/78506505