今天参加了ofo的校招面试,自我感觉就是有一些东西是写过但是没存住,或者是说网上有现成的源码自己用的时候可能就是copy过来修改一下就直接用了。就答得感觉稀烂。不说了直接上题吧。
一、页面元素垂直居中
对于行内元素
若该行内元素只有一行,且该行内元素父元素的高度一定,可以设置该行内元素的line-height属性,属性值为父元素的高度。
对于块级元素
1.可以使用vertical-align:middle属性实现垂直居中,但是读过张鑫旭老师的博客之后发现这个属性是有一定局限性的,它只适合inline或者inline-block这种属性的元素(table中的td,或者说display:table-cell勉强也算),也就是说如果你单纯给一个div添加vertical-align:middle是不起作用的。
2.对行内元素、块级元素都有效。
使用弹性伸缩布局。 1、设置元素的position+margin属性, 使用场景:针对静态布局,要垂直居中元素的高、宽值确定时
首先,设置块级元素div的父元素的 position:relative;
其次,设置块级元素div的css position:absolute;top:50%;left:50%;
最后,设置该块级元素div的外边距:margin-top: -(height/2);
margin-left:-(width/2)(我回答的就是这个方法,因为这个我用的最多)
上面这种方法主要是针对子元素宽高已定的,那么如果响应式或者流体布局就需要另外一种方法position+transform
同样设置父元素div的position:relative; 其次设置块级元素div的css
position:absolute;top:50%;left:50%;
设置该块级元素div的transform:transform:translate(-50%,50%);
针对响应式的第二种方法
设置父元素的CSS属性 display:flex; justify-content:center;
二、css属性的优先级
从选择器权重优先级我们可以知道
内联>id选择器>class选择器=伪类选择器>标签选择器
但是 !important这个属性,如果说有内联与 !important两个同时存在,那么他们的权重 !important是最高的
三、js数组类型判断
instanceof、constructor、函数
function isArray(o) {
return Object.prototype.toString.call(o) === '[object Array]';
}
四、js数组去重()
//1 对比去重
Array.prototype.rm = function() {
var arr = [this[0]];
for (var i = 1; i < this.length; i++) {
var temp = false;
for (var j = 0; j < arr.length; j++) {
if (this[i] == arr[j]) {
temp = true;
break;
}
}
if (!temp) {
arr.push(this[i]);
}
}
return arr;
}
//2 遍历去重
Array.prototype.rm2 = function() {
var arr = [];
for (var i = 0; i < this.length; i++) {
for (var j = i + 1; j < this.length; j++)
if (this[i] === this[j])
j = ++i;
arr.push(this[i]);
}
return arr;
}
//3 排序去重
Array.prototype.rm3 = function() {
this.sort(function(a, b) {
return b - a;
});
var arr = [this[0]];
for (var i = 1; i < this.length; i++) {
if (this[i] !== arr[arr.length - 1]) {
arr.push(this[i]);
}
}
return arr;
}
//4 ES6 set方法
Array.prototype.rm4 = function() {
return [...new Set(this)];
}
//5 indexOf
Array.prototype.rm5 = function() {
var arr = [this[0]];
for (var i = 1; i < this.length; i++) {
if (this.indexOf(this[i]) == i)
arr.push(this[i]);
}
return arr;
}
剩下一些容我好好想想