今天參加了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;
}
剩下一些容我好好想想