A29-用jQuery做個輪播

這次我們將用jQuery做一個輪播

在遵循原則:內容(HTML)、樣式(CSS)、行為(JavaScript)分離的情況下

面試套路

如果被問到你對于前端內容、樣式、行為分離的理解。
我們當然認為這是理所當然的,但是這么回答顯然不行。
所以,我們可以反著回答,如果不分離的話會有什么壞處,以此論證需要分離。
例如:

  • HTML負責樣式
    <body bgcolor="gray">
      <center>
        <font color="red" size="20">你好</font>
      <center>
    </body>
    
    現(xiàn)在,有的標簽是為了表示樣式的,有的標簽是為了表示內容的,這使得我們難以區(qū)分這些標簽真正的邏輯結構
  • CSS 表示內容
    // html
    <div id="x"></div>
    // css
    div::after{ content: '你好'; }
    // js
    console.log(x.innerText) // 什么都沒有,空的
    
    使用css表示內容,會導致用戶無法用鼠標選中它,同時,js也無法獲取它的內容
  • CSS 表示行為
    使用css表示復雜的行為,會導致頁面變得很慢很慢
    優(yōu)化的原則之一:不要使用IE發(fā)明的CSS Expressions
  • JS 表示 CSS
    // html
    <div id="x"></div>
    // js
    var $div = $('#x')
    $div.hide() // 影藏很好理解,display:none
    $div.show() // 顯示呢?block?可如果我本來是flex呢?或者inline-flex呢?
    // jQuery 為了處理這個問題,在 hide() 時獲取了你的 display 值
    // 使得 flex 在經過 hide() show()之后依然是 flex
    // 可是,如果本來是 none 呢?
    // css
    div{ display:none; }
    // 測試結果顯示 show() 之后是 block,也就是說 show() 默認 block
    
    這種結果顯然不符合我們的預期,這里,建議使用添加 class 的方式來控制,js 只負責行為,它不知道一個div應該怎么show,block?flex?
    顯示還是不顯示?那是 css 的活。
    $div.addClass('active')

思路

  1. 將圖片全部放到一個div里,把圖片放平,圖片最好是一樣大小的
  2. 然后用一個窗口來看圖片,圖片從左到右挨個出現(xiàn),就好像以前的電影膠帶
  3. 有了思路,剩下的就是實現(xiàn)和改bug,這次是用jq來寫,會出現(xiàn)很多不認識的api,直接查文檔就行了

關于封裝

  1. 從 API 開始思考
  2. 盡量能讓人看見就明白是干嘛的

成果

本次任務用到的 jQuery API

  1. .on() -link
  2. index() -link
  3. .eq() -link
  4. .trigger() -link
  5. .addClass() -link
  6. .removeClass() -link
  7. .siblings() -link
  8. .css() -link

優(yōu)化原則

  1. 不使用 CSS 來表示復雜的行為,不要使用IE發(fā)明的CSS Expressions。
  2. 如果你已經知道圖片的寬高了,那么最好是寫在上面<img width=xx height=xx></img>,這樣瀏覽器就會少一次讓后面的圖片或者其它元素讓位的過程。

奇葩bug

  1. css tansform: translateX();在瀏覽器放大頁面下出現(xiàn)bug,抖動
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 14,149評論 1 92
  • 移動開發(fā)基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,725評論 0 6
  • 如果可以的話,我想把所有爛桃花的運氣,積攢起來,用在遇見一個合適的他身上。固執(zhí)的認為,遇到一個合適的人才是最好的桃...
    張小呆閱讀 1,062評論 4 4
  • 今天是母親節(jié),我想寫一篇文章紀念翁老。 工作以來,我便不再稱呼男性長輩為爺爺了。但是我認識翁老的時候,我正讀高三,...
    JoeMcCain閱讀 517評論 0 1

友情鏈接更多精彩內容