html常见状态码有哪些,前端常见面试题

HTML/HTML5

说说你理解的语义化

像html5的新的标签header,footer,section等就是语义化

语义化的好处:

一方面,语义化就是让计算机能够快读的读懂内容,高效的处理信息,可以对搜索引擎更友好

另一方面,便于与他人的协作,他人通过读代码就可以理解你网页标签的意义

去掉或者丢失样式的时候能够让页面呈现出清晰的结构

HTML5的新特性

新的DOCTYPE声明

完全支持css3

video和audio

本地存储localstorage和sessionstorage

语义化标签

canvas

新事件如 ondrag onresize

如何解决ajax无法后退的问题

html5里引入了新的API,即:history.pushState,history.replaceState

可以通过pushState和replaceSate接口浏览器历史,并且改变当前页面的URL,onpopstate监听后退

CSS

盒子模型:content-box和border-box

content-box是W3C的标准盒模型 元素宽度+padding+border

border-box 是ie的怪异盒模型,他的元素宽度等于内容宽度 内容宽度包含了padding和border

有时候在元素基础上添加内边距padding或border会将布局撑破 但是使用border-box就可以轻松完成

实现三个DIV等分排在一行

1.设置border-box width 33.33%

2.设置display:flex flex:1

怎么实现一个DIV左上角到右下角的移动,有哪些方法?怎么实现

jquery的animate方法

css3的transition

不知宽高的元素水平垂直居中

方法1:通过定位和transform属性来实现

.parent{

width:100%;

height:400px;

background:#666;

position:relative;

}

.children{

position:absolute;

top:50%;

left:50%;

background:red;

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

}

方法2:通过利用flex布局

.parent{

width:100%;

height:400px;

background:#666;

display:flex;

align-items:center;

justify-content:center;

}

.children{

background:red;

}

方法3:通过table属性

.parent{

display:table;

width:100%;

height:400px;

background:#666;

}

.children{

display:table-cell;

vertical-align:middle;

text-align:center;

background:red;

}

rem 和 em,px的区别

1、px是相对长度单位,它是相对于显示器屏幕分辨率而言的。

优缺点:比较稳定和精确,但在浏览器中放大或缩放浏览页面时会出现页面混乱的情况。

2、em是相对长度单位,EM是相对于父元素来设计字体大小的。如果当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。

优缺点:em的值并不是固定的,它会继承父级元素的字体大小。

3、rem是CSS3新增的一个相对单位,REM是相对单位,是相对HTML根元素。

这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应

清除浮动

方法一:利用clear属性进行清理

父容器结尾插入空标签

利用css伪元素:

.clearfix:after {

content: ".";

height: 0;

visibility: hidden;

display: block;

clear: both;

}

方法二:将父容器形成BFC

position的值, relative和absolute分别是相对于谁进行定位的

relative:相对定位,相对于自己本身在正常文档流中的位置进行定位。

absolute:生成绝对定位,相对于最近一级定位不为static的父元素进行定位。

fixed: (老版本IE不支持)生成绝对定位,相对于浏览器窗口或者frame进行定位。

static:默认值,没有定位,元素出现在正常的文档流中。

sticky:生成粘性定位的元素,容器的位置根据正常文档流计算得出

CSS 选择符有哪些?哪些属性可以继承?优先级算法如何计算?

选择器:

id选择器(#myId)

类选择器(.myClassName)

标签选择器(div,p,h1)

相邻选择器(h1 + p)

子选择器(ul > li)

后代选择器(li a)

通配符选择器(*)

属性选择器(button[disabled="true"])

伪类选择器(a:hover,li:nth-child)

优先级:

!important > 行内样式(比重1000) > id(比重100) > class/属性(比重10) > tag / 伪类(比重1);

介绍sass

定义变量css嵌套,允许在代码中使用算式,支持if判断for循环

display:none和visibility:hidden的区别

display:none 隐藏对应的元素,在文档布局中不再给它分配空间,它各边的元素会合拢,就当他从来不存在。

visibility:hidden 隐藏对应的元素,但是在文档布局中仍保留原来的空间

CSS中link 和@import的区别

link属于HTML标签,而@import是CSS提供的;

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

import只在IE5以上才能识别,而link是HTML标签,无兼容问题;

link方式的样式的权重 高于@import的权重

对BFC规范的理解

BFC,块级格式化上下文,一个创建了新的BFC的盒子是独立布局的,盒子里面的子元素的样式不会影响到外面的元素。在同一个BFC中的两个毗邻的块级盒在垂直方向(和布局方向有关系)的margin会发生折叠

JavaScript

介绍一下闭包和闭包常用场景

使用闭包主要为了设计私有的方法和变量,闭包的有点事可以避免变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。在js中,函数即闭包,只有函数才会产生作用域的概念。

闭包是指有权访问另一个函数作用域中的变量的函数,创建闭包常见方式,就是在一个函数的内部创建另一个函数

闭包有三个特性:

函数嵌套函数

函数内部可以引用外部的参数和变量

参数和变量不会被垃圾回收机制回收

闭包这种东西解决了什么问题

受javascript链式作用域链的影响,父级变量中无法访问到子级的变量值

作用域链,作用域链的尽头是什么

每一个函数都有一个作用域,比如创建了一个函数,函数里面又包含了一个函数,那么现在有三个作用域,这样就形成了一个作用域链

作用域的特点就是,先在自己的变量范围中查找,如果找不到,就会沿着作用域链往上找,尽头是object。

ajax的过程是怎样的,主要用到哪些状态码

创建XMLHttpRequest对象,也就是创建一个异步调用对象

创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息

设置响应HTTP请求状态变化函数

发送HTTP请求

获取异步调用返回的数据

使用javascript和DOM实现局部刷新

var xmlHttp = new XMLHttpRequest();

xmlHttp.open('GET','demo.php','true');

xmlHttp.send()

xmlHttp.onreadystatechange = function(){

if(xmlHttp.readyState === 4 & xmlHttp.status === 200){

}

}

常用状态码status

404没找到页面

403禁止访问

500内部服务器出错

200正常

304被又被修改(not modified)(服务器返回304状态,表示源文件没有被修改)

使用promise封装ajax

function getJSON(url){

return new Promise(function(resolve, reject){

var XHR = new XMLHttpRequest();

XHR.open('GET', url,true);

XHR.send();

XHR.onreadystatechange = function() {

if(XHR.readerSate == 4){

if(XHR.status == 200){

try {

var response = JSON.parse(XHR.responseText);

resilve(response);

} cath(e) {

reject(e);

}

}else{

reject(new Error(XHR.statusText));

}

}

}

})

}

getJSON(url).then(res => console.log(res));

事件委托

利用冒泡原理,把时间加到父级上,触发执行效果,可以大量节省内存占用,减少事件注册

var ul = document.querySelector('ul');

var list = document.querySelectorAll('ul li');

ul.addEventListener('click', function(ev){

var ev = ev || window.event;

var target = ev.target || ev.srcElemnt;

for(var i = 0, len = list.length; i < len; i++){

if(list[i] == target){

alert(i + "----" + target.innerHTML);

}

}

});

函数防抖和函数节流

函数防抖是指频繁触发的情况下,只有足够的空闲时间,才执行代码一次

函数防抖的要点,也是要一个setTImeout来辅助实现。延迟执行需要跑的代码

如果方法多次触发,则要把上次记录的延迟执行代码用clearTimeout清掉,重新开始

如果计时完毕,没有方法进来访问触发,则执行代码

var tiemr = false;

document.getElementById(‘debounce’,onScrll = function(){

clearTimeout(timer);

timer = setTimeout(function(){

console.log('111')

}, 300);

}

判断数组有哪些方法

a instanceof Array

a.constructor == Array

Object.protype.toString.call(a) == [Object Array]

图片懒加载

当页面滚动的时间被触发->执行加载图片操作->判断图片是否在可视区域内->在,则动态将data-src的值赋予该图片

标签:面试题,元素,函数,作用域,前端,常见,XHR,var,选择器

来源: https://www.cnblogs.com/shemingxin/p/12073027.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值