1.css選擇器
1 CSS選擇符有哪些 2 3 通配符選擇器(*) 4 id選擇器(#classId) 5 類選擇器(.className) 6 標簽選擇器(div,h1,p,span,table) 7 子選擇器(ul > li) 8 后代選擇器(li a) 9 偽類選擇器(a:hover,li:nth-child)
1 優先級權重計算 2 important的權重為 1,0,0,0 3 ID的權重為 0,1,0,0 4 類的權重為 0,0,1,0 5 偽類的權重為 0,0,1,0 6 屬性的權重為 0,0,1,0 7 標簽的權重為 0,0,0,1 8 偽對象的權重為 0,0,0,1 9 通配符的權重為 0,0,0,0 10 11 就近原則,同權重情況下以樣式定義最近者為准; 12 載入樣式以最后載入的定位為准; 13 優先級: 14 //!important > id > class > tag 15 //important 比 內聯優先級高 16 important > 內聯樣式 > ID > 類 | 偽類 | 屬性選擇 > 標簽 | 偽元素 > 繼承 > 通配符
2.盒子模型
(1)是什么:每個元素被表示為一個矩形的盒子,由四部分組成:內容(content)、內邊距(padding)、邊框(border)、外邊距(margin)。它在頁面中所占的實際大小(寬高)是content+padding+border+margin之和。
(2)盒模型有兩種:標准盒模型(W3C盒模型)、IE盒模型。
(3)兩種盒模型的區別:標准盒模型內容大小就是content大小,而IE盒模型內容大小則是content+padding+border總的大小。 (4)怎么設置兩種盒模型:通過設置box-sizing屬性為content-box(默認值,標准盒模型)、border-box(IE盒模型)。 (5)JS怎么獲取和設置box的寬高 (6)box-sizing使用場景:若設置子元素的margin或border時可能會撐破父元素的尺寸,就需要使用box-sizing:border-box來將border包含進元素的尺寸中。
行內元素有哪些?塊級元素有哪些? (1)行內元素:a,b,span,img,input,strong,label,button,select,textarea,em (2)塊級元素:div,ul(無序列表),ol,li,dl(自定義列表),dt(自定義列表項),dd(自定義列表項的定義),p,h1-h6,blockquote(塊引用)
3.常用瀏覽器,內核
(1)Trident內核:(國產的絕大部分瀏覽器)IE,360,搜狗 Gecko內核:Firefox,NetScape6及以上 Presto內核:Opera7及以上 Webkit內核:(國產大部分雙核瀏覽器其中一核)Safari(蘋果),Chrome (2)瀏覽器內核:主要分成兩部分:渲染引擎和JS引擎。最開始渲染引擎和JS引擎並沒有區分的很明確,后來JS引擎越來越獨立, 內核就傾向於只指渲染引擎 (3)渲染引擎:負責取得網頁內容(HTML,XML,圖像等)、整理訊息(加入CSS等),以及計算網頁的顯示方式,后會輸出至 顯示器或打印機。 (4)JS引擎:解析和執行JavaScript來實現網頁的動態效果。
4.如何居中div?如何讓絕對定位的div居中?
1 div: 2 border: 1px solid red; 3 margin: 0 auto; 4 height: 50px; 5 width: 80px; 6 7 絕對定位的左右居中: 8 border: 1px solid black; 9 position: absolute; 10 width: 200px; 11 height: 100px; 12 margin: 0 auto; 13 left: 0; 14 right: 0;
5.如何檢查一個數字是否為整數?
1 function isInt(num) { 2 return num % 1 === 0; 3 } 4 console.log(isInt(4)); // true 5 console.log(isInt(12.2)); // false 6 console.log(isInt(0.3)); // false
6.js 字符串操作函數
1 concat() – 將兩個或多個字符的文本組合起來,返回一個新的字符串。 2 3 indexOf() – 返回字符串中一個子串第一處出現的索引。如果沒有匹配項,返回 -1 。 4 5 charAt() – 返回指定位置的字符。 6 7 lastIndexOf() – 返回字符串中一個子串最后一處出現的索引,如果沒有匹配項,返回 -1 。 8 9 match() – 檢查一個字符串是否匹配一個正則表達式。 10 11 substr() 函數 -- 返回從string的startPos位置,長度為length的字符串 12 13 substring() – 返回字符串的一個子串。傳入參數是起始位置和結束位置。 14 15 slice() – 提取字符串的一部分,並返回一個新字符串。 16 17 replace() – 用來查找匹配一個正則表達式的字符串,然后使用新字符串代替匹配的字符串。 18 19 search() – 執行一個正則表達式匹配查找。如果查找成功,返回字符串中匹配的索引值。否則返回 -1 。 20 21 split() – 通過將字符串划分成子串,將一個字符串做成一個字符串數組。 22 23 length – 返回字符串的長度,所謂字符串的長度是指其包含的字符的個數。 24 25 toLowerCase() – 將整個字符串轉成小寫字母。 26 27 toUpperCase() – 將整個字符串轉成大寫字母。
7.變量的作用域
1 1、函數內部可以讀取函數外部的全局變量;在函數外部無法讀取函數內的局部變量。 2 3 2、函數內部聲明變量的時候,一定要使用var命令。如果不用的話,你實際上聲明了一個全局變量! 4 5 5、使用閉包的注意點 6 7 1)濫用閉包,會造成內存泄漏:由於閉包會使得函數中的變量都被保存在內存中,內存消耗很大,所以不能濫用閉包,否則會造成網頁的性能問題,在IE中可能導致內存泄露。解決方法是,在退出函數之前,將不使用的局部變量全部刪除。 8 9 2)會改變父函數內部變量的值。所以,如果你把父函數當作對象(object)使用,把閉包當作它的公用方法(Public Method),把內部變量當作它的私有屬性(private value),這時一定要小心,不要隨便改變父函數內部變量的值。
8.null和undefined的區別 1 null是一個表示"無"的對象,轉為數值時為0;undefined是一個表示"無"的原始值,轉為數值時為NaN。
2 3 當聲明的變量還未被初始化時,變量的默認值為undefined。 null用來表示尚未存在的對象 4 5 undefined表示"缺少值",就是此處應該有一個值,但是還沒有定義。典型用法是: 6 7 (1)變量被聲明了,但沒有賦值時,就等於undefined。 8 9 (2)調用函數時,應該提供的參數沒有提供,該參數等於undefined。 10 11 (3)對象沒有賦值的屬性,該屬性的值為undefined。 12 13 (4)函數沒有返回值時,默認返回undefined。 14 15 null表示"沒有對象",即該處不應該有值。典型用法是: 16 17 (1) 作為函數的參數,表示該函數的參數不是對象。 18 19 (2) 作為對象原型鏈的終點
9. javascript語言特性中,有很多方面和我們接觸的其他編程語言不太一樣,請舉例
1 javascript語言實現繼承機制的核心就是 2 1 (原型),而不是Java語言那樣的類式繼承。Javascript解析引擎在讀取一個Object的屬性的值時,會沿着 3 2 (原型鏈)向上尋找,如果最終沒有找到,則該屬性值為 4 3 undefined;如果最終找到該屬性的值,則返回結果。與這個過程不同的是,當javascript解析引擎執行“給一個Object的某個屬性賦值”的時候,如果當前Object存在該屬性,則改寫該屬性的值,如果當前的Object本身並不存在該屬性,則賦值該屬性的值。
10.冒泡排序算法
1 var array = [5, 4, 3, 2, 1]; 2 var temp = 0; 3 for (var i = 0; i <array.length; i++){ 4 for (var j = 0; j <array.length - i; j++){ 5 if (array[j] > array[j + 1]){ 6 temp = array[j + 1]; 7 array[j + 1] = array[j]; 8 array[j] = temp; 9 } 10 } 11 }