整合營銷服務商

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

          免費咨詢熱線:

          Chrome瀏覽器自帶滾動截圖功能

          Chrome瀏覽器自帶滾動截圖功能

          動截屏通常需要裝第三方軟件,又要面臨到底裝哪個截圖軟件最好用,其實谷歌瀏覽器就自帶滾動截屏功能。

          使用快捷鍵打開瀏覽器的控制臺 Ctrl + Shift + I (Windows) || Option + Command + I (Mac)或者 “右鍵”-> "查看"

          使用快捷鍵打開命令行 Command + Shift + P (Mac) || Ctrl + Shift + P (Windows)

          輸入Screenshot,選擇Capture full size screenshot來滾動截圖

          選擇區域:Capture area screenshot會出現一個?,拉動鼠標選擇要截圖的區域,鼠標左鍵一松開就會下載選擇區域對一個的圖片

          整個網頁:Capture full size screenshot 這里以百度新聞為例演示

          節點網頁:Capture node screenshot 節點截圖需要在Elements中選中要截圖的html節點元素,并且節點元素必須在瀏覽器中可以看到,就會截圖html節點對應的html內容



          當前屏幕:Capture screenshot 截取瀏覽器當前屏幕內容,不包括控制臺面板。


          歡迎關注本賬號,將持續發布實用技術文章

          日常的抓取工作當中,經??吹骄W站為了減輕網頁加載所需資源對圖片等資源進行延遲加載。那什么樣的頁面需要用到延遲加載呢?比如我們打開一個圖片網站,一個頁面有很多圖片,這個時候我們就用的到延遲加載;比如我們寫一篇很長的技術博客的時候也需要配一些圖,這里也可以用到延遲加載。那什么是延遲加載呢?簡單的說是一種對網頁的性能優化,加載一個很多圖片的網頁不需要先把全部圖片加載出來,而是只加載可視區域的圖片即可,當滾動到需要顯示圖片的地方再發送圖片請求。

          延遲加載

          <img> 標簽有一個屬性是 src,用來表示圖像的 url,當這個屬性的值不為空時,瀏覽器就會根據這個值發送請求。如果沒有 src 屬性,就不會發送請求。我們可以利用這一個特征去實現延遲加載,先不設置 src 屬性,當需要圖片加載時將圖片真正的 url 取出放入 src 中。

          HTML 和 CSS

          .img-area{width: 500px;height: 500px; margin: 0 auto;}.my-photo{width:500px; height: 300px}
          <div class="container">
           <div class="img-area"><img class="my-photo" alt="loading" data-src="./img/img1.jpg" /></div>
           <div class="img-area"><img class="my-photo" alt="loading" data-src="./img/img2.jpg" /></div>
           <div class="img-area"><img class="my-photo" alt="loading" data-src="./img/img3.jpg" /></div>
           <div class="img-area"><img class="my-photo" alt="loading" data-src="./img/img4.jpg" /></div>
           <div class="img-area"><img class="my-photo" alt="loading" data-src="./img/img5.jpg" /></div>
           <div class="img-area"><img class="my-photo" alt="loading" data-src="./img/img1.jpg" /></div>
           <div class="img-area"><img class="my-photo" alt="loading" data-src="./img/img2.jpg" /></div>
           <div class="img-area"><img class="my-photo" alt="loading" data-src="./img/img3.jpg" /></div>
           <div class="img-area"><img class="my-photo" alt="loading" data-src="./img/img4.jpg" /></div>
           <div class="img-area"><img class="my-photo" alt="loading" data-src="./img/img5.jpg" /></div> </div>

          方法

          1. getBoundingClientRect()

          通過 getBoundingClientRect() 方法來獲取元素的大小以及位置

          這個方法返回一個名為 ClientRect的 DOMRect對象,包含了 top、 right、 botton、 left、 width、 height 這些值。參考 mdn 上的圖:

          可以看出返回的元素位置是相對于左上角而言的,而不是邊距。

          什么情況下算進入可視區域呢?這里的 container.top 即表示圖片到可視區域頂部距離,window.innerHeight 來表示可視區域的高度。隨著滾動條的向下滾動,container.top 會越來越小,也就是圖片到可視區域頂部的距離越來越小,當 container.top===window.innerHeight 時,圖片的上沿應該是位于可視區域下沿的位置的臨界點。也就是說 container.top <=window.innerHeight 時,圖片是在可視區域內的。

          簡單判斷一下:

          // 偽代碼function check(container) { var container=... // 100是為了讓圖片提前加載,過渡更自然
           return container.top <=window.innerHeight + 100}

          替換 src,

          function loadImg(container) { if (!container.src) container.src=container.dataset.src
          }

          檢測圖片是否在可加載區域內:

          function checkImg() { var imgs=Array.from(document.querySelectorAll('.my-photo'))
           imgs.forEach(container=> { if (check(container)) loadImg(container)
          })
          }

          到此基本就可以實現一個簡單的圖片延遲加載,但是老鳥告訴我要注意頻繁滾動等于頻繁的DOM操作,這個時候有必要設置函數節流,具體操作請參考 ,函數節流

          第二種方法:IntersectionObserver

          可以參考阮一峰老師的 IntersectionObserver API 使用教程 ,這里講的深入淺出。

          前端開發中經常遇到需要考慮某個元素何時進入視口容器,通常我們會選擇第一種方式來實現,監聽 scroll 事件, 調用 getBoundingClientRect() 方法,這種方法確實是不錯的方法,但是要考慮函數節流,這也是它的缺點,由于 scroll 事件頻繁觸發,容易造成性能問題。

          這個新的 API 可以自動觀察元素是否在視口內,這就很強大了,讓我們看下怎么使用呢,

          var io=new IntersectionObserver(callback, option);// 開始觀察io.observe(document.getElementById('example'));// 停止觀察io.unobserve(element);// 關閉觀察器io.disconnect();

          callback參數是一個數組,每個數組都是一個 IntersectionObserverEntry 對象,我們來打印下

          屬性說明引用 阮一峰老師的

          time:可見性發生變化的時間,是一個高精度時間戳,單位為毫秒

          target:被觀察的目標元素,是一個 DOM 節點對象

          rootBounds:根元素的矩形區域的信息,getBoundingClientRect()方法的返回值,如果沒有根元素(即直接相對于視口滾動),則返回null

          boundingClientRect:目標元素的矩形區域的信息

          intersectionRect:目標元素與視口(或根元素)的交叉區域的信息

          intersectionRatio:目標元素的可見比例,即intersectionRect占boundingClientRect的比例,完全可見時為1,完全不可見時小于等于0

          這里最重要的屬性就是 intersectionRatio,通過該屬性判斷是否在可視區域內,當 intersectionRatio > 0 && intersectionRatio <=1 即在可視區域內。

          我們通過 IntersectionObserver 這個API 就很方便了,

          // IntersectionObserver 傳入 callbackvar io=new IntersectionObserver(ioes=> {
           ioes.forEach(ioe=> { var el=ioe.target
           var intersectionRatio=ioe.intersectionRatio
           console.log(intersectionRatio)
           if (intersectionRatio > 0 && intersectionRatio <=1) {
           loadImg(el)
           }
           el.onload=el.onerror=()=> io.unobserve(el)
           })
          })function checkImg() { var imgs=Array.from(document.querySelectorAll('.my-photo'))
           imgs.forEach(item=> io.observe(item))
          }function loadImg(el) { if (!el.src) {
           el.src=el.dataset.src
           }
          }
          checkImg()

          效果如下

          tml頁面設置動態金額滾動效果!

          一開始加載頁面,數字都會過渡滾動到具體數字上!

          代碼:

          html:

          css:

          js:


          主站蜘蛛池模板: 国产激情无码一区二区app| 日本在线电影一区二区三区 | 加勒比精品久久一区二区三区| 一区二区三区四区精品视频| 无码国产精品一区二区免费虚拟VR | 日韩av无码一区二区三区| 亚洲一本一道一区二区三区| 国产精品 视频一区 二区三区| 日本不卡一区二区三区视频| 精品国产AV一区二区三区| 无码日韩人妻AV一区免费l| 少妇无码一区二区三区免费| 美女视频一区二区| 国产午夜精品一区二区三区极品 | 78成人精品电影在线播放日韩精品电影一区亚洲 | 中文字幕一区视频一线| 夜夜爽一区二区三区精品| 亚洲综合av一区二区三区| 亚洲成AV人片一区二区| 国产精品免费大片一区二区| 午夜精品一区二区三区在线观看| 在线视频一区二区| 亚洲va乱码一区二区三区| 2022年亚洲午夜一区二区福利 | 日韩精品一区二区三区不卡 | 免费一区二区三区| 久久亚洲中文字幕精品一区| 精品国产一区二区22| 久久亚洲AV午夜福利精品一区| 国产免费无码一区二区| 亚洲国产综合精品中文第一区| 麻豆aⅴ精品无码一区二区| 五月婷婷一区二区| 日本一区免费电影| 精品一区二区三区免费观看| 少妇无码一区二区三区免费| 国产成人亚洲综合一区| 亚洲一区视频在线播放| 亚洲高清日韩精品第一区| 国产日韩精品一区二区在线观看| 一区二区网站在线观看|