前端筆試面試系列之三----2015美的前端筆試
- @author: 周丹
- @email: sharon_zd@qq.com
- @datetime: 2016/08/31
- 題目如有侵權行為,請聯系刪除;
- 答案僅供參考,如有不同意見,歡迎留言討論;
- 轉載請注明出處
題目部分
- 寫出所有瀏覽器兼容display:inline-block的hack
- li:nth-child(2n+1)代表什么意思?
- 寫出position的所有值和意義
- 寫出box-sizing的所有屬性值和意義
- 點擊鏈接,alert當前鏈接的序號
- 寫一個函數,給數組去重
答案部分
- inline-block指同時擁有內聯元素(顯示在一行)和塊元素(可以設置寬高)的特性。
hack指兼容ie的方法,具體有以下三種方法1 /*方法1*/ 2 div {display:inline-block;} /*觸發塊元素*/ 3 div {display:inline;} /*使得塊元素呈遞為內聯對象*/ 4 /* 兩個display需先后放在兩個CSS聲明 */ 5 6 /*方法2*/ 7 div { 8 display:inline; /*設置為內聯元素*/ 9 zoom:1; /*觸發塊元素的layout*/ 10 } 11 12 /*方法3*/ 13 div{ 14 display:inline-block; 15 *display:inline; /*觸發ie的layout*/ 16 *zoom:1 17 }
- 父元素下的子元素中序號為基數的元素
-
- static: position的默認值,對象遵循文檔流,top、bottom、left、right等屬性不會被應用。
- relative: 對象遵循文檔流,但將依據top,bottom,left,right屬性在文檔流中偏移位置,其層疊通過z-index定義。
- absolute: 對象脫離文檔流,依據top、bottom、left、right屬性相對於其含有position屬性為relative或absolute的父元素(若沒有則不斷向上查找,直到body為止)中進行定位,其層疊通過z-index定義。
- fixed:對象脫離文檔流,其依據top、bottom、left、right屬性相對於瀏覽器窗口進行定位,即便出現滾動條,對象也不會隨着滾動而位置變化,層疊關系通過z-index定義。
- 有3個屬性值,分別如下
a. content-box:默認,w3c標准盒模型。 外盒:元素空間尺寸 = width/height(內容高度/寬度)+ padding + border + margin 內盒:元素大小 = width/height(內容高度/寬度) + padding + border + margin b. border-box :IE盒模型。 外盒:元素空間尺寸 = width/height(內容高度/寬度 + padding + border) + margin 內盒:元素大小 = width/height(內容高度/寬度 + padding + border) 可以用來避免增加padding大小的時候,內容撐出. c. inherit 繼承父元素的盒模型
- 使用閉包
1 var add_click_handler = function(nodes){ //注意函數的抽象 2 var i; 3 for(i=0;i< nodes.length;i++){ 4 nodes[i].onclick = function(i){ //定義一個函數立即傳遞i進去執行,而不是把一個函數賦值給onclick。該函數將返回一個事件處理器函數,事件處理器函數被賦值給onclick。該事件處理器綁定的是傳遞進去的i的值,而不是定義在add_click_handler中的值。 5 return function(e){ 6 alert(i); 7 } 8 }(i); 9 } 10 } 11 var links = document.getElementsByTagName("a"); 12 add_click_handler(lniks);
- 有以下兩個方法
1 //方法1:刪除后數組長度會變化,手動令j-1。 2 var removeRepeat = function(array){ 3 for(var i=0;i< array.length;i++){ 4 for(var j=0;j< array.length;j++){ 5 if(array[i]==array[j]){ 6 array.splice(i,1); 7 j--; 8 } 9 } 10 } 11 return array; 12 } 13 var array=[2,3,1,2,4,3,3,4,6]; 14 removeRepeat(array); 15 16 //方法2:刪除后數組長度會變化,所以初始值為長度,判斷條件為>0 17 var removeRepeat2 = function(array){ 18 for(var i=0; i< array.length; i++){ 19 for(var j=array.length; j>i; j--){ 20 array.splice(i,1); 21 } 22 } 23 }