1. calc、support、media各自的含义及用法?
- calc()函数主要用于动态计算长度值。calc()函数支持 加减乘除运算
- support主要用于检测浏览器是否支持某个css属性,就是条件判断,如果支持某个属性,可以写一个样式,如果不支持某个属性,可以写另外一个样式。
- media查询,可以针对不同的媒体类型定义不同的样式
2. css水平、垂直居中的写法,请至少写出4种
水平居中
- 行内元素:text-align:center
- 块级元素:margin:0 auto
- position:absolute+left:50%+transform:translateX(-50%)
- display:flex+justify-center:center
垂直居中
- 设置line-height等于height
- position:absolute+top50%+transform:translationY(-50%)
- display:flex+align-items:center
- display:table+display:table-cell+vertical-align:middle
3. 1rem 1em 1vh 1px 代表的含义
rem
rem是全部长度相对于根元素元素。通常做法是给html元素设置一个字体大小,其他元素的长度单位就为rem
em
- 子元素字体大小的em是相对于父元素字体大小
- 元素的width、height、padding、margin用em的话是相对于该元素的font-size
vw/vh
- 全称是Viewport Width和Viewport Height,视图的宽度和高度。
px
- px像素(pixel)。相对长度单位。像素px是相对于显示屏幕分辨率而言
4. 画一条0.5px的直线
height:1px
transform:scale(0.5)
5. 盒模型
盒模型的组成:由里向外content,padding,border,margin
在IE盒子模型中,width表示content+padding+border这三个部分的宽度
在标准的盒子模型中,width指content部分的宽度
box-sizing的使用
box-sizing:content-box 是w3c盒子模型
box-sizing:border-box 是IE盒子模型
6. 画一个三角形
.a{
width:0;
height:0;
border-width:100px;
border-style:solid;
border-color:transparent #0099c transparent transparent;
transform:rotate(90deg);
}
<div class="a"> </div>
7. 清楚浮动的几种方式
::after /<br>/clear:both
- 创建父级 BFC(overflow:hidden)
- 父级设置高度
BFC(块级格式化上下文),是一个独立的渲染区域,让处于BFC内部元素与外部元素相互隔离,使内外元素的定位不会相互影响
触发条件
- 根元素
- position:absolute/fixed
- display:inline-block/table
- float元素
- overflow != visible
规则
- 属于同一BFC的两个相邻BOX垂直排列
- 属于同一BFC的两个BOX的margin会发生重叠
- BFC的区域不会与float的元素区域重叠
- 计算BFC的高度时,浮动子u元素也会参与计算
- 文字层不会被浮动层覆盖,环绕于周围
label标签的用法
label标签主要是方便鼠标点击使用,扩大可点击的范围,增强用户操作体验
遍历A节点的父节点下的所有子节点
var b=document.getElementById('a').parentNode.children
log(b)
js递归求1到100的和
function add(num1,num2){
var num =num1+num2;
if(num2+1>100){
return num
}else{
return add(num,num2+1)
}
}
var sum=add(1,2)
页面渲染html的过程
- 浏览器解析html,然后创建一个dom树。并行请求css/image/js在dom树中每一个html标签都有一个对应的节点,并且每一个文本也都有一个对应的文本节点,dom树的根节点就是documetElement,对应的是html标签
- 浏览器解析css代码,计算最终的样式数据。构建cssom树。对css代码中非法的语法他会直接忽略掉。解析css的时候会按照如下顺序来定义优先级:;浏览器默认设置<用户设置<外链样式<内联样式<html的style
- dom tree+cssom—>渲染树(rendering tree)。渲染树和dom树有点像但是也有却别
dom树完全和html标签一一对应,但是渲染树会忽略掉不需要渲染的元素,比如head、display:none的元素等,而且一大段文本中的每一行在渲染树中都是独立的一个节点。渲染树中的每一个节点都有存储在对用的css属性
- 一旦渲染树创建完成,浏览器就可以直接根数渲染树把页面绘制在屏幕上
说一下CORS
CORS是一种新标准,支持同源通信,也支持跨域通信。fetch是实现cors通信的
如何中断ajax请求
一种是设置超时时间让ajax自动断开,另一种是手动停止ajax请求,其核心是调用xml对象的abort方法,ajax.abort()
事件代理
事件委托是指将事件绑定到目元素的父元素上,利用冒泡机制触发该事件
ulEl.addEventListener('click',function(e){
var target = event.target || event.srcElement
if(!!target && target.nodeName.toUpperCase() === "LI"){
console.log(target.innerHTML);
},false)
targrt、currentTargrt的区别
currentTarget当前所绑定事件的元素
taret当前被点击的元素
说一下宏任务和微任务
- 宏任务:当前调用栈中执行的任务称为宏任务。
- 微任务:当前宏任务执行完,在下一个宏任务开始之前需要执行的任务为微任务
- 宏任务中的事件放在callback queue中,由事件触发线程维护,微任务的事件放在微任务队列中,由js引擎线程维护
继承的几种方式及优缺点
- 借用构造函数继承、使用call或apply方法,将父对象的构造函数绑定在子对象上
- 原型继承,将子对象的prototype指向父对象的一个实例
- 组合继承
原型链继承的优缺点
- 字面量重写原型会中断关系,使用引用类型的原型,并且子类型还无法给超类型传递参数
借用构造函数
- 借用构造函数可以解决刚才的问题,但是没有原型,则无法复用
组合式继承
- 组合式继承是一种比较常用的一种继承方法,其背后的思路是使用原型链实现对原型和方法的继承,而通过借用构造函数来实现对实例属性的继承。这样,即通过在原型上定义方法实现了函数复用,又保证每个实例都有自己的属性
闭包
函数嵌套形成的作用域链
export和export default的区别
export default xxx
import xxx from './'
export xxx
import {xxx} from './'
什么是cookie
cookie是服务器返回的,指定了expire time的持久cookie,没有指定的是会话cookie
数组去重
get post区别
- get传参方式是通过URL传递,?连接&进行分割
- get对传递的数据长度有限制,url最大长度是2048个字符。post没有长度限制
- get后退不会有影响,post后退会重新提交
- get请求可以被缓存,post不可以被缓存
- get请求只有URL编码,post支持多种编码
- get请求会记录在历时记录中,post不会留在历史记录
你所知道的http响应码及含义
1xx 临时响应
100: 请求者应当继续提出请求
101:请求者已要求服务器切换协议,服务器已确认并准备进行切换
2xx 成功
200:正确的请求返回的正确的结果
201:表示资源被正确的创建、比如说,我们POST用户名、密码正确创建了一个用户就可以返回201
202:请求是正确的,但是结果正在处理中,这时候客户端可以通过轮询等机制继续请求
3xx
300:请求成功,但结果有多种选择
301:请求成功,但是资源被永久转移
303: 使用get来访问新的地址来获取资源
304:请求的资源并没有被修改过
4xx 请求错误
400:请求出现错误
401:没有提供认证信息。
402:为以后需要所保留的状态码
403:请求的资源不允许访问。就是说没有权限
404:请求的内容不存在
5xx 服务器错误
500:服务器错误
501:请求还没有被实现
照着敲了一遍,俗话说好记性不如烂笔头!!