來一套 常規筆試題

1.css盒模型javascript

  

2.css選擇器有哪些?那些屬性能夠繼承?優先級算法如何計算?css3新增僞類有哪些?css

選擇器  權重
通配符選擇器 0
標籤選擇器 、 爲元素選擇器 10
class選擇器、僞類選擇器、屬性選擇器  100
id選擇器   1000
行間樣式 10000
@import  無窮大

 

 

 

 

 

 

.wrapper,.box{}  --->   並列選擇器html

.wrapper>.box{}  --->直接子元素選擇器前端

.wrapper .box{}  ---->後代選擇器java

 

能夠繼承的屬性  color、font-size等字體屬性  text-indent、text-align、line-height等文本屬性     visibility cursor等css3

樣式的  優先級   就是選擇器的權重相加   顯示權重大的 樣式算法

新增僞類編程

  p:first-of-type  當前層p標籤的第一個數組

  p:last-of-type  當前層p標籤的最後一個瀏覽器

  p:only-of-type  全部p標籤中    做爲惟一子元素的p

  div:nth-child(n)  div子元素中的第n個

  div:last-child   div的最後一個子元素

  p:not      除了p的其餘全部標籤

  input:enable   全部啓用的input

  input:disable    全部禁用了的input

  input:checked    全部被選中的  input標籤

  :root        根元素html

  ::selection    用戶選中的部分

  

3.用css實現  左右固定,中間自適應的三欄佈局

CSS

  *{
      margin: 0;
      padding: 0;
    }
    .wrapper{
      padding: 0 200px;
    }
    .center,.left,.right{
      height: 200px;
      float: left;      
    }
    .left,.right{
      width: 200px;
      background: pink;
      position: relative;
    }
    .center{
      background: blue;
      width: 100%;
    }
    .left{
      margin-left: -100%;
      left: -200px;
    }
    .right{
      margin-left: -200px;
      right: -200px;
    }

html

  <div class="wrapper">
      <div class="center"></div>
      <div class="left"></div>
      <div class="right"></div>    
  </div>

 

4.說明浮動產生的效果,至少列舉三種清除浮動的方法

  元素浮動以後,就脫離當前同一層的文本流,浮動元素根據設置不一樣的浮動方向,浮動到父元素的邊界,或者其餘浮動的元素

 

  清除浮動的方法

    1.最簡潔的方法

      在須要清除浮動的元素後面添加一個  div   並設置 css      clear:both

    2.給父級設置 overfloat:hidden

    3.常規方法

.clearFloat:after{
  display:block;
  clear:both;
  content:'';
  visibility:hidden;
  height:0;    
}
.clearFloat{
 zoom:1;  //兼容IE6
}

5.列出display的值,說明他們的做用。positioin的值,relative和absolte定位原點是

display  做用
block  將元素變成塊級元素
inline    將元素變成行內元素
none  使元素不存在
inline-block  將元素變成行內塊元素
inherit  繼承父級的display
table  至關於 <table></table>
table-row  至關於<tr></tr>
table-cell  至關於<td></td>或者<dd></dd>
list-item  至關於 列表元素

 

 

 

 

 

 

 

 

 

position 有  absolute 、 relative 、fixed 、 inherit

 

  relative   是相對於自身本來在文本流中的位置進行定位

  absolute  是根據最近有定位的父級進行定位的

 

6.前端頁面有哪三層結構? 分別是什麼?做用是什麼?

  結構層   html  頁面的結構佈局

  樣式層  css    前端頁面的樣式

  行爲層  js     頁面交互

7.css中能夠經過哪些屬性定義使DOM元素不顯示在瀏覽器可視範圍內

  postion 的各類定位 能夠將元素  移出屏幕

  visibility:hidden  能夠設置dom的透明度 爲透明的,可是還佔據原來的位置  還存在

  opacity:0      設置Dom元素的不透明度  爲0    即便DOM透明     與Visibility:hidden效果相同

  display:none    使元素消失,不存在與文檔流中

8.超連接訪問後hover樣式就不出現的問題是什麼?如何解決?

  a標籤的4個狀態  

  link      默認狀態

  hover     鼠標懸停

  active     點擊的瞬間

  visited     訪問過的

。。。。上網上查的   試了很久  並無試出來  hover 很差使的狀況

 

9.rgba()和opacity的透明效果有什麼不一樣

  rgba()   是設置在 dom元素背景顏色上的  不會影響子元素

  opacity  設置的透明度是相對  dom元素總體的   會繼承給子元素

 

10.CSS中可讓文字在垂直和水平方向上重疊的兩個屬性是什麼?

  我覺得是   line-height    和   text-indent

11.display:none 與 visilibity:hidden的區別是什麼

  display:none;是   是元素消失於文檔流中,不存在於Dom結構中

  visilibity:hidden  是設置的  元素的  透明度  爲透明    而元素仍然存在於 DOM結構中  任然佔據原來的位置

12.知道css有個content屬性麼?有什麼做用?如何應用?

  能夠配合爲元素 :after/:befor     設置爲元素裏的內容

a:after{content:attr('href')}

13.編寫函數,實現冒泡排序

    var arr = [12,123,345,21,88];

    function sort (arr){
      var cut = 0,
          len = arr.length - 1;
      for(var i = 0; i < len; i++) {
        for(j = i; j < len; j++){
          if(arr[j] > arr[j+1]) {
            cut = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = cut;
          }
        }
      }
      return(arr)
    }
    var after = sort(arr);
    console.log(after);

14.談談你對閉包的理解,寫一個簡單的閉包實例

   因爲js函數做用域,在函數外部沒法訪問函數內部的東西,經過在函數內添加一個相對於這個函數是子函數,也就是能夠讀取這個函數的內容的函數,return這個函數   就能夠在最外層函數外面訪問函數內的內容了  

   形象的解釋 閉包就是  內部函數和外部函數的一道橋樑

function f1(){
  var n = 666;
  function f2() {
    console.log(n);
  }
}
f1()();    //666

 15.閉包與定時器混合考驗

//修改以下代碼,讓循環輸出結果依次爲1,2,3,4,5

for(var i=1; i<=5; i++) {
  setTimeout(function timer(){
    console.log(i);
  },i*1000)
}

  修正代碼

    for(var i = 1; i <=5; i++) {
      (function(j){
        setTimeout(timer = () => {
          console.log(j);
        }, j*1000);
      })(i)
    }

16.扁平化多維數組arr=[1,3,4,5[6,[0,1,5],9],[3,5,[1,5]],[5]]  ;

  扁平化就是將多維數組編程一維的

  

  方法一  遍歷數組

function bianPingHua(arr){
      var newArr = [];
      arr.forEach(
        function(item){
          if(Array.isArray(item)){
            newArr = newArr.concat(bianPingHua(item));//concat是將item的每一位 拼接到newArr後面 且不改變newArr 因此要用賦值
      }
else{ newArr.push(item);//在數組最後添加一位 這裏若是是一個數組,任然至關於 newArry的一位 } } ); return newArr; } var oEnd = bianPingHua(arr); console.log(oEnd);

  方法二  toString與split

var newArr = arr.toString().split(',');
    console.log(newArr);

17.談談你對this指向的理解

  普通對象、計時器、定時器的this        指向window

  對象中的 方法中的this  指向的就是這個對象

  綁定事件執行時this指向dom

改變this指向的方法  call、apply 、bind

    function Foo () { 
    }
    function son (){
      console.log(this);
    }
    son.call(Foo);
    son.apply(Foo);  
    son.bind(Foo)();

18.說說你對面向對象的理解,而後寫一段js代碼示例

    

    1、繼承

      一個類繼承另外一個類,能夠實現代碼複用,減小冗餘。

    2、封裝

      將函數封裝起來,隱藏內部信息,用戶無需知道對象內部的方法實現的過程,但能夠使用對象的方法

    3、多態

      同一函數,能夠適應多種傳參

  

19.javascript的typeof返回類型有哪些

  number 、string 、 function、 boolean、 undefind、        object

20.數組方法 pop(),push(),unshift(),shift()

  這四種方法都改變原數組

  pop()在最後一位刪除一位  傳參無效

  push()在最後一位添加幾位  能夠用  ,  傳多個參數   返回值是  length

  unshift()在第一位添加幾位  也能夠用 , 傳多個參數  返回值是length

  shift() 在第一位刪除一位  傳參無效

 21.字符串包裝類方法 substr()、substring()、slice()

  sbustr()    傳兩個參數  截取的起始位置,截取的長度

  sbustring()   傳兩個參數   較小的爲起始位置, 較大的爲截止位置    ,  (留頭去尾)

  slice()      傳一個參數,就是從第幾位向後截取  如有負數就從字符串的尾部向前數 

          傳兩個參數   前始後終  截取數組

相關文章
相關標籤/搜索