美文网首页
前端面试题合集

前端面试题合集

作者: 恣心如懿 | 来源:发表于2022-02-23 10:23 被阅读0次

    一、一个200*200的div在不同分辨率屏幕上下左右居中,用css实现

    div

    {

    position:absolute;

    width:200px;

    height:200px;

    top:50%;

    left:50%;

    margin-left:-100px;

    height:-100px;

    z-index:1000;

    }

    二、写一个左中右布局占满屏幕,其中左右两块是固定宽度200 ,中间自适应宽,要求先加载中间块,请写出结构及样式:

    <body>

    <h3>实现三列宽度自适应布局</h3>

    <div id = "left">我是左边</div>

    <div id = "right">我是右边</div>

    <div id = "center">我是中间</div>

    </body>

    html,body{ margin: 0px;width: 100%; }

    h3{height: 100px;margin:20px 0 0;}

    #left,#right{width: 200px;height: 200px; background-color: #ffe6b8;position: absolute;top:120px;}

    #left{left:0px;}

    #right{right: 0px;}

    #center{margin:2px 210px ;background-color: #eee;height: 200px; }

    三、阐述清楚浮动的几种方式(常见问题)

    1、父级div定义 height

    原理:父级div手动定义height,就解决了父级div无法自动获取到高度的问题。

    优点:简单、代码少、容易掌握

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

    2、父级div定义 overflow:hidden

    原理:必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度

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

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

    原理:添加一个空div,利用css提高的clear:both清除浮动,让父级div能自动获取到高度

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

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

    四、解释css sprites ,如何使用?

    CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数字能精确的定位出背景图片的位置。

    CSS Sprites为一些大型的网站节约了带宽,让提高了用户的加载速度和用户体验,不需要加载更多的图片

    五、如何用原生js给一个按钮绑定两个onclick事件?

    Var btn=document.getElementById(‘btn’);

    //事件监听 绑定多个事件

    var btn4 = document.getElementById("btn4");

    btn4.addEventListener("click",hello1);

    btn4.addEventListener("click",hello2);

    function hello1(){

    alert("hello 1");

    }

    function hello2(){

    alert("hello 2");

    }

    六、拖拽会用到哪些事件

    · dragstart:拖拽开始时在被拖拽元素上触发此事件,监听器需要设置拖拽所需数据,从操作系统拖拽文件到浏览器时不触发此事件.

    · dragenter:拖拽鼠标进入元素时在该元素上触发,用于给拖放元素设置视觉反馈,如高亮

    · dragover:拖拽时鼠标在目标元素上移动时触发.监听器通过阻止浏览器默认行为设置元素为可拖放元素.

    · dragleave:拖拽时鼠标移出目标元素时在目标元素上触发.此时监听器可以取消掉前面设置的视觉效果.

    · drag:拖拽期间在被拖拽元素上连续触发

    · drop:鼠标在拖放目标上释放时,在拖放目标上触发.此时监听器需要收集数据并且执行所需操作.如果是从操作系统拖放文件到浏览器,需要取消浏览器默认行为.

    · dragend:鼠标在拖放目标上释放时,在拖拽元素上触发.将元素从浏览器拖放到操作系统时不会触发此事件.

    七、请列举jquery中的选择器:

    八、Javascript中的定时器有哪些?他们的区别及用法是什么?

    setTimeout 只执行一次

    setInterval 会一直重复执行

    九、请描述一下 cookies sessionStorage和localstorage区别

    相同点:都存储在客户端

    不同点:

    1、存储大小

    · cookie数据大小不能超过4k。

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

    2、有效时间

    · localStorage 存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;

    · sessionStorage 数据在当前浏览器窗口关闭后自动删除。

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

    3、 数据与服务器之间的交互方式

    · cookie的数据会自动的传递到服务器,服务器端也可以写cookie到客户端

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

    十、计算一个数组arr所有元素的和

    var arr1=[1,2,3,4,5,6,7,8,9];

    var sum1=0;

    for (var i=0;i<=arr1.length;i++) {

    if (typeof arr1[i]=="number") {

    sum1+=arr1[i];

    }

    }

    document.write(sum1);

    //====================================

    function sum2(arr){

    var all=0;

    for (var i=0;i<arr.length;i++) {

    if (typeof arr[i]=="number") {

    all+=arr[i]

    }

    }

    return all;

    }

    document.write(sum2([1,2,3,4]));

    十一、编写一个方法去掉数组里面 重复的内容 var arr=[1,2,3,4,5,1,2,3]

    一个数组去重的简单实现

    var arr = ['abc','abcd','sss','2','d','t','2','ss','f','22','d'];

    //定义一个新的数组

    var s = [];

    //遍历数组

    for(var i = 0;i<arr.length;i++){

    if(s.indexOf(arr[i]) == -1){ //判断在s数组中是否存在,不存在则push到s数组中

    s.push(arr[i]);

    }

    }

    console.log(s);

    //输出结果:["abc", "abcd", "sss", "2", "d", "t", "ss", "f", "22"]

    方法二:

    用sort() 然后相邻比较也可以实现

    十二、document.write和innerHTML的区别:

    document.write是直接写入到页面的内容流,如果在写之前没有调用document.open, 浏览器会自动调用open。每次写完关闭之后重新调用该函数,会导致页面被重写。

    innerHTML则是DOM页面元素的一个属性,代表该元素的html内容。你可以精确到某一个具体的元素来进行更改。如果想修改document的内容,则需要修改document.documentElement.innerElement。

    innerHTML将内容写入某个DOM节点,不会导致页面全部重绘

    innerHTML很多情况下都优于document.write,其原因在于其允许更精确的控制要刷新页面的那一个部分。


    天就先发12题,看看需要的小伙伴多不多,后续给大家再补上~

    也请大家看看我们的Java视频教程哦

    https://www.bilibili.com/video/BV1qL411u7eE?spm_id_from=333.999.0.0

    尚学堂给同学们带来全新的Java300集课程啦

    本课程为Java300集2022版第一季,配合最新版的Java课程,所有视频重新录制,课件所有图形做了重新绘制和配色,图解学习Java,让学习成为一种享受

    本套教程专门为零基础学员而制,适合准备入行Java开发的零基础学员,视频中穿插多个实战项目。

    每一个知识点都讲解的通俗易懂,由浅入深。

    不仅适用于零基础的初学者,有经验的程序员也可做巩固学习。

    后续课程我们将用更高的要求制作,持续更新,同学们多多关注哦~

    相关文章

      网友评论

          本文标题:前端面试题合集

          本文链接:https://www.haomeiwen.com/subject/yqkolrtx.html