2019独角兽企业重金招聘Python工程师标准>>>
1.说一下你了解的CSS盒模型
CSS盒子模型:就是用来装页面上的元素的矩形区域。CSS中的盒子模型包括IE盒子模型和标准的W3C盒子模型。这两种盒子模型都包含有内容(content)、填充(padding)、边框(border)、边界(margin)这四个组成部分,这四个部分都包含有top/right/bottom/left四个组成部分。
标准的盒子模型盒子宽度:左右margin+左右border+左右padding+width
IE盒子模型的盒子宽度:左右margin+width
在CSS3中引入了box-sizing属性,box-sizing:content-box;表示标准的盒子模型,box-sizing:border-box表示IE盒子模型。默认的情况下是标准盒子模型
2.说一下box-sizing的应用场景
在浏览器的默认计算方式下,块状元素的宽度计算方式为:左右border+左右padding+左右marging+内容宽度width。如果我们不想要浏览器按照这种计算方式计算宽度,则要用到CSS3中的box-sizing:border-box,固定了盒子的尺寸,无论怎么调整边距都不会改变盒子的大小,不会造成布局错位。
3.说一下你了解的弹性flex布局
使用flex布局的容器(flex container),它内部的元素自动成为flex项目(flex item)。
flex-direction:row(主轴为水平方向)/column(主轴为竖直方向)/row-reverse(从右到左水平方向)/column-reverse(从下至上竖直方向)
flex-wrap:nowrap(自动缩小项目,不换行)/wrap(换行,且第一行在上方)/wrap-reverse(换行,第一行在下面)
flex-flow:row nowrap/row wrap/column wrap-reverse...,默认值为row nowrap,即横向排列 不换行。flex-flow是flex-direction和flex-wrap的简写形式
justify-content:flex-start(左对齐)/flex-end(右对齐)/center(居中对齐)/space- between(两端对齐)/space-around(沿轴线均匀分布)
align-items:flex-start(顶端对齐)/flex-end(底部对齐)/center(竖直方向上居中对齐)/baseline(基线对齐)/stretch(当item未设置高度时,item将和容器等高对齐)
4.说一下一个未知宽高元素怎么上下左右垂直居中。
方法1、弹窗元素设置
.pop{
position:absolute;
top:50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
transform:translate(-50%, -50%);
}
方法2、弹窗的父元素设置
.container{
display: flex;
align-items: center;
justify-content: center;
}
方法3、弹窗元素的伪类元素设置
.pop:after{
content:"";
display: inline-block;
vertical-align: middle;
height: 100%;
}
5.js数组去重
传统js方法:
function removeDuplicatedItem3(ar) {
var ret = [];
ar.forEach(function(e, i, ar) {
if (ar.indexOf(e) === i) {
ret.push(e);
}
});
return ret;
}
es6方法:
let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3];
let set = new Set(array);
console.log(set);
// => Set {1, 2, 3, 4, 5}
6.Ajax原理
Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。首先检查XMLHttpRequest的整体状态并且保证它已经完成(readyStatus=4),即数据已经发送完毕。然后根据服务器的设定询问请求状态,如果一切已经就绪(status=200),就执行open和send方法,其中open方法指定了
a、向服务器提交数据的类型,即post还是get。
b、请求的url地址和传递的参数。
c、传输方式,false为同步,true为异步。
7.说说你遇到跨域问题时是怎么解决的
如果是协议和端口造成的跨域问题“前台”是无能为力的,在跨域问题上,域仅仅是通过“URL的首部”来识别而不会去尝试判断相同的ip地址对应着两个域或两个域是否在同一个ip上。
方法1:子域名相等的情况下,通过document.domain+子域名和iframe引用实现跨域操作
方法2:利用jsonp,浏览器用callback,通过script标签向服务器跨域请求数据,然后服务端返回相应的数据并动态执行回调函数。
方法3:利用CORS,就是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功