整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          七爪源碼:如何使用 Intersection Obs

          七爪源碼:如何使用 Intersection Observer API 實現無限滾動

          用 Intersection Observer API 實現更簡單、性能更好的無限滾動

          介紹

          當我們的列表頁面有很多數據,比如200條,但是因為請求速度很慢,我們不能一次請求所有的數據,就會導致體驗很差。一般我們會對數據進行分頁,每個分頁可能包含10個條目。我們只會加載前 10 個項目,當需要瀏覽更多項目時,將加載接下來的 10 個項目。

          在移動頁面上,無限滾動是一種非常常見的分頁方式。因為傳統的分頁模式,更多的數據只有在用戶點擊之后才會加載。無限滾動允許用戶在滾動到頁面底部時自動加載更多內容,無需任何額外操作,體驗更好。


          如何實施

          我們將分兩步實現無限滾動:

          1. 使用 JavaScript 生成列表。
          2. 使用 Intersection Observer API 加載更多內容。


          使用 JavaScript 生成列表

          首先,我們生成一個空白列表頁面,然后通過 JavaScript 的 setTimeout 模擬請求來加載數據,最后將數據渲染到頁面中。

          <!DOCTYPE html>
          <html lang="en">
          <head>
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>List</title>
          </head>
          <body>
            <ol class="list"></ol>
            <style>
              li {
                background-color: rgba(70,87,255,.08);
                width: 100%;
                margin-bottom: 20px;
                padding: 20px 0;
                cursor: pointer;
              }
              li:hover {
                background-color: rgba(70,87,255,.2);
              }
            </style>
            <script>
              const $list=document.querySelector('.list');
              // Simulate a request to load data and render it to the list element;
              function loadItems(number) {
                new Promise((resolve)=> {
                  setTimeout(()=> {
                    resolve(Array(number).fill('A List Item'));
                  }, 1000);
                }).then(data=> {
                  const html=data.map(item=> `<li>${item}</li>`);
                  $list.innerHTML +=html.join('');
                })
              }
              loadItems(10);
            </script>
          </body>
          </html>


          使用 Intersection Observer API 加載更多

          Intersection Observer API 可以觀察一個元素是否可見,所以在使用它完成無限滾動時,需要在列表底部添加一個元素。 當元素可見時,加載更多內容。

          在 ol 旁邊添加一個 div 元素:

          <ol class="list"></ol>
          <div class="more">loading</div>

          然后使用 Intersection Observer API 觀察元素,當元素可見時加載 next10 項:

          const intersectionObserver=new IntersectionObserver(entries=> {
            if (entries[0].intersectionRatio <=0) return;
            // load more content;
            loadItems(10);
          });
          // start observing
          intersectionObserver.observe(document.querySelector(".more"));

          使用 Intersection Observer API 進行無限滾動就是這么簡單。 但是,在這個實現中會有一個小的經驗問題。 只有當用戶看到 loading... 元素時,才會加載數據。 如果在用戶從頁面底部滾動一點時加載數據,那將是完美的。

          我們可以通過添加一個占位符元素來優化它,使觀察者提前執行。

          <ol class="list"></ol>
          <div class="more">
            <p class="virtual"></p>  // and a placeholder element
            loading ...
          </div>

          添加一些樣式,保證占位符元素不影響列表的顯示:

          .virtual {
            position: absolute;
            height: 200px;
            top: -200px;
            width: 100%;
            pointer-event:none;
          }


          結論

          無限滾動也可以通過監聽滾動事件來完成,但我們必須不斷計算滾動位置。 使用 Intersection Observer API 時,只需要提供一個回調函數,當目標元素進入視口時,會自動執行,不僅簡單,而且性能更好。

          關注七爪網,獲取更多APP/小程序/網站源碼資源!

          大網站常用的頁面加載動畫

          一、使用場景

          經常見到某些網站的動畫是在屏幕顯示到當前元素的時候,會有個過渡動畫。

          頁面在向下滾動的時候,有些元素會產生細小的動畫效果。雖然動畫比較小,但卻能吸引你的注意

          使用wow.js和Animate.css,實現各大網站常用的頁面加載動畫

          1.wow.js

          實現了在網頁滾動時的動畫效果,有漂亮的動畫效果,依賴于Animate.css。

          2.Animate.css

          非常優秀的CSS3動畫庫,不依賴于jQuery,純CSS動畫

          二、使用方法

          1,下載文件

          animate.css 下載地址: 網址前綴+daneden.github.io/animate.css/

          wow.min.js 下載地址: 網址前綴+www.downyi.com/downinfo/37040.html#address

          2,引入文件

          <link rel="stylesheet" href="css/animate.css" rel="external nofollow" >

          <script src="js/wow.min.js"></script>

          3、HTML

          <div class="wow slideInLeft"></div>

          <div class="wow slideInRight"></div>

          可以加入 data-wow-duration(動畫持續時間)和 data-wow-delay(動畫延遲時間)

          屬性,如:

          <div class="wow slideInLeft" data-wow-duration="2s" data-wow-delay="5s"></div>

          <div class="wow slideInRight" data-wow-offset="10" data-wow-iteration="10"></div>

          4、JavaScript

          new WOW().init();

          要自定義配置,可如下使用:

          var wow=new WOW({

          boxClass: 'wow',

          animateClass: 'animated',

          offset: 0,

          mobile: true,

          live: true

          });

          wow.init();

          三、兼容性

          四、配置屬性

          elenium實現瀏覽器滾動效果

          Selenium提供了多種方法來實現瀏覽器滾動效果,下面介紹幾種常見的方法:

          1. 使用execute_script方法

          from selenium import webdriver
          
          driver=webdriver.Chrome()
          
          # 滾動到頁面底部
          driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
          
          # 滾動到指定位置
          driver.execute_script("window.scrollTo(0, 100)")

          2. 使用scrollBy方法

          from selenium import webdriver
          
          driver=webdriver.Chrome()
          
          # 向下滾動100像素
          driver.scrollBy(0, 100)
          
          # 向上滾動100像素
          driver.scrollBy(0, -100)

          3. 使用scrollTo方法

          from selenium import webdriver
          
          driver=webdriver.Chrome()
          
          # 滾動到元素可見
          element=driver.find_element_by_id("my_element")
          driver.scrollTo(element)

          4. 使用ActionChains類

          from selenium import webdriver
          from selenium.webdriver.common.action_chains import ActionChains
          
          driver=webdriver.Chrome()
          
          # 滾動到頁面底部
          actions=ActionChains(driver)
          actions.move_to_element(driver.find_element_by_tag_name("body")).perform()

          注意事項:

          • 滾動速度可能因瀏覽器和操作系統而異。
          • 滾動到指定位置時,需要考慮元素的偏移量。
          • 使用ActionChains類滾動可能導致頁面抖動。

          其他方法:

          • 使用JavaScript代碼實現滾動效果。
          • 使用第三方庫實現滾動效果,例如:Selenium-scrollScrollTo

          相關鏈接:

          • Selenium官方文檔: https://selenium.dev/
          • Selenium-scroll: [移除了無效網址]
          • ScrollTo: [移除了無效網址]

          主站蜘蛛池模板: 国产中的精品一区的| 亚洲av成人一区二区三区在线观看| 中日av乱码一区二区三区乱码| 国产美女视频一区| 日本一区二区三区在线视频 | 免费萌白酱国产一区二区| 中文字幕一区二区三区视频在线| 无码精品久久一区二区三区| 在线视频精品一区| 成人H动漫精品一区二区| 青青青国产精品一区二区| 国产在线精品一区二区三区不卡| 一区二区三区精密机械| 一区二区无码免费视频网站| 无码aⅴ精品一区二区三区浪潮| 精品久久一区二区| 四虎永久在线精品免费一区二区 | 中文字幕一区二区三区有限公司| 国产av一区二区精品久久凹凸| 在线欧美精品一区二区三区| 秋霞午夜一区二区| 国产精品无码一区二区三级| 中文字幕精品无码一区二区| 国产精品亚洲不卡一区二区三区| 高清一区二区在线观看| 国产一区二区三区在线电影| 精品一区二区91| 国产在线精品一区二区不卡麻豆| 国产一区二区三区免费视频| 日本精品一区二区三本中文| 亚洲AV无码一区二区三区国产| 国产综合精品一区二区| 国产韩国精品一区二区三区| 亚洲中文字幕乱码一区| 手机看片福利一区二区三区| 亚洲av无码一区二区三区天堂| 69久久精品无码一区二区| aⅴ一区二区三区无卡无码| 欲色影视天天一区二区三区色香欲 | 高清一区二区三区视频| 国产精品乱码一区二区三区|