【每日N題】0111

1. label for 的用處?

label是爲input元素服務的標籤,爲其定義標記,for屬性規定label與哪個具體的表單元素綁定,對應input標籤的id屬性

示例:點擊label的時候會聚焦到input上

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Label測試</title>
  </head>
  <body>
  <form>
    <label for="male">Male</label>
    <input type="radio" name="sex" id="male" />
    <br/>
    <label for="female">Female</label>
    <input type="radio" name="sex" id="female" />
  </form>
  <form>
    <label for="userName">姓名</label>
    <input type="text" name="userName" id="userName" />
    <br/>
    <label for="psd">密碼</label>
    <input type="password" name="psd" id="psd" />
  </form>
  </body>    
</html>

2. img的data-src屬性及懶加載

圖片懶加載:在訪問頁面的時候,先把img元素或其他元素的背景圖片替換成一張大小爲1*1px的圖片路徑,(只用發送一次請求)當圖片出現在瀏覽器的可視區域內的時候,才設置圖片真正的路徑,讓圖片顯示出來。

創建一個自定義屬性data-src存放真正需要顯示的圖片路徑,src存放一張大小爲1*1px的圖片路徑,當頁面滾動到圖片可視區域的時候用js取該圖片的data-src賦值給src

3. HTML data-*屬性

data-*屬性用於存儲頁面或應用程序的私有自定義數據

data-*屬性賦予我們所在html元素上嵌入自定義data屬性的能力

存儲的自定義數據能夠被頁面的js利用,以創建更好的用戶體驗(不進行ajax調用或服務端數據庫查詢)

4. CSS display: block inline inline-block 區別

(1)block會獨佔一行,多個block元素會各自新起一行,默認情況下,block元素寬度自動填滿父元素寬度,block可以設置寬高屬性和margin、padding屬性

(2)inline不會獨佔一行,多個行內元素會排列在同一行,直到一行排不下才會換新的一行,寬度隨元素內容的變化而變化。設置寬高無效,可以在水平方向產生邊距效果,豎直方向不會

(3)inline-block呈現效果類似於inline但是可以設置寬高屬性

5. 三欄縱列布局,寬度一樣,怎麼實現

(1)flex實現

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>三欄佈局寬度一樣</title>
  </head>
  <body>
    <style>
      body {
        display: flex;
      }
      div {
        height: 100px;
      }
      .a {
        flex: 1;
        background-color: red;
      }
      .b {
        flex: 1;
        background-color: blue;
      }
      .c {
        flex: 1;
        background-color: green;
      }
    </style>
    <div class="a"></div>
    <div class="b"></div>
    <div class="c"></div>
  </body>    
</html>

(2)grid實現

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>三欄佈局寬度一樣</title>
  </head>
  <body>
    <style>
      body {
        display: grid;
        grid-template-columns: 33.3% 33.3% 33.3%;
      }
      div {
        height: 100px;
      }
      .a {
        background-color: red;
      }
      .b {
        background-color: blue;
      }
      .c {
        background-color: green;
      }
    </style>
    <div class="a"></div>
    <div class="b"></div>
    <div class="c"></div>
  </body>    
</html>

6. JS的輸出順序

考察js的單線程特性,setTimeout屬於異步操作,for循環執行完畢前,每次遍歷產生一個setTimeout操作,被放在隊列中等待執行,直到同步過程執行結束,才執行依次setTimeout,此時i變成4了

for(var i=1;i<=3;i++){
  setTimeout(function(){
    console.log(i); //輸出:4,4,4
  },0)
}

如何產生1、2、3的輸出結果

(1)使用ES6的let

//將var變爲let
for(let i=1; i<=3; i++){
  setTimeOut(function(){
    console.log(i); //輸出的結果爲1,2,3
  },0);
}

(2)使用立即執行函數

for(var i=1; i<=3; i++){
  !function(i){
    setTimeOut(function(){
      console.log(i); //輸出的結果爲1,2,3
    },0);
  }(i)
}

7. 爲什麼要有虛擬DOM節點,直接操作DOM節點的問題在哪裏?

虛擬DOM:對複雜的DOM結構提供便捷的工具,最小化的進行DOM操作。

虛擬DOM不會進行重繪和迴流,在虛擬DOM中進行頻繁修改,然後一次性比較並修改真實DOM中需要修改的部分,最後在真實DOM中進行重繪和迴流,見着過多的DOM節點重繪和迴流的損耗。

真實DOM的重繪和迴流效率相當低,虛擬DOM有效地降低了大面積的對真實DOM進行重繪和迴流,因爲通過比較差異,只渲染局部。

8. Vue 的插件怎麼註冊,插件接口該怎麼設計?【X】

https://www.cnblogs.com/adouwt/p/9211003.html

9. 設計一個v-dom和渲染函數【X】

10. 輸入一個url到顯示頁面會發生什麼?

11. 怎麼使用CDN緩存加速?

12. 瀏覽器怎麼渲染html、css、js哪個會先渲染?

13. js同步代碼要loop很久,會不會阻塞後面代碼的執行?

14. d3.js和vue怎麼一起用? 【X】

https://www.cnblogs.com/wuvkcyan/p/8975105.html

15. 設計一個異步函數的調用

16. 島上有 白、灰、黑三種顏色的變色龍,其中兩種不同顏色的變色龍相遇會同時變成第三種顏色,問三種顏色的變色龍數量分別爲10,14,15時可能變成同一種顏色的變色龍嗎?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章