整合營銷服務商

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

          免費咨詢熱線:

          css3實現循環(huán)執(zhí)行動畫,且動畫每次都有延遲

          終效果圖如下:

          我們看一下實現過程。

          主框架是vue開發(fā),做成了一個動畫組件,因為涉及到多個頁面引用,最主要的實現是css3語法實現過程,并且要做到循環(huán)播放。

          左邊出來動畫時間是0.5秒,停留3秒往上走,然后動畫時間0.5秒,停留3秒后然后消失,消失動畫時間0.5秒,總共的時間消耗是7.5秒。可以得到以下計算比例

          0/7.5 = 0%

          0.5/7.5 = 6.66%

          3.5/7.5 = 46.66%

          4/7.5 = 53.33%

          7/7.5 = 93.33%

          7.5/7.5 = 100%

          然后每個比例所對應的css如下

          就可以實現css3動畫了,再加上js實現無縫循環(huán)播放

          于圖像是網絡上最受歡迎的內容類型之一,網站上的頁面加載時間很容易成為一個問題。

          即使經過適當優(yōu)化,圖像的重量也會相當大。這可能會對訪問者在訪問您網站上的內容之前必須等待的時間產生負面影響。很有可能,他們會變得不耐煩并在其他地方導航,除非您想出一個不影響速度感知的圖像加載解決方案。

          在本文中,您將了解五種延遲加載圖像的方法,您可以將這些方法添加到您的Web優(yōu)化工具包中,以改善您網站上的用戶體驗。

          什么是延遲加載?

          延遲加載圖片意味著在網站上異步加載圖片——也就是說,在首屏內容完全加載之后,或者甚至有條件地,只有當它們出現在瀏覽器的視口中時。這意味著如果用戶不一直向下滾動,放置在頁面底部的圖像甚至不會被加載。

          許多網站都使用這種方法,但在圖片較多的網站上尤為明顯。嘗試瀏覽您最喜歡的在線獵場以獲取高分辨率照片,您很快就會意識到該網站如何只加載有限數量的圖像。當您向下滾動頁面時,您會看到占位符圖像快速填充真實圖像以供預覽。例如,注意Unsplash.com上的加載器:將頁面的該部分滾動到視圖中會觸發(fā)用全分辨率照片替換占位符:

          為什么要關心延遲加載圖像?

          您應該考慮為您的網站延遲加載圖像至少有幾個很好的理由:

          • 如果您的網站使用JavaScript來顯示內容或向用戶提供某種功能,那么快速加載 DOM 就變得至關重要。腳本通常要等到 DOM 完全加載后才開始運行。在擁有大量圖像的網站上,延遲加載(或異步加載圖像)可能會影響用戶停留或離開您的網站。
          • 由于大多數延遲加載解決方案僅在用戶滾動到圖像在視口內可見的位置時才加載圖像,因此如果用戶從未到達該點,則永遠不會加載這些圖像。這意味著帶寬的大量節(jié)省,大多數用戶,尤其是那些使用移動設備和慢速連接訪問Web的用戶,都會感謝您。

          好吧,延遲加載圖像有助于提高網站性能,但最好的方法是什么?

          沒有完美的方法。

          如果您熟悉JavaScript,那么實現您自己的延遲加載解決方案應該不是問題。沒有什么比自己編寫代碼更能控制你的了。

          或者,您可以瀏覽Web以尋找可行的方法并開始試驗它們。我就是這樣做的,并遇到了這五種有趣的技術。

          #1 原生延遲加載

          圖像和iframe的原生延遲加載非常酷。沒有什么比下面的標記更直接了:

          <img src="myimage.jpg" loading="lazy" alt="..." /> <iframe src="content.html" loading="lazy"></iframe>

          如您所見,沒有 JavaScript,沒有動態(tài)交換src屬性值,只是普通的舊 HTML。

          該loading屬性為我們提供了延遲屏幕外圖像和iframe的選項,直到用戶滾動到他們在頁面上的位置。loading可以采用以下三個值中的任何一個:

          • lazy: 非常適合延遲加載
          • eager: 指示瀏覽器立即加載指定的內容
          • auto:保留延遲加載或不延遲加載到瀏覽器的選項。

          這種方法沒有競爭對手:它的開銷為零,干凈簡單。然而,盡管在撰寫本文時,大多數主要瀏覽器都對loading屬性有很好的支持,但并非所有瀏覽器都支持。

          有關延遲加載圖像的這項出色功能(包括瀏覽器支持變通方法)的深入文章,請不要錯過 Addy Osmani 的“網絡原生圖像延遲加載”!。

          #2 使用 Intersection Observer API 延遲加載

          Intersection Observer API 是一個現代化的界面,你可以利用的延遲加載圖片和其他內容。Intersection Observer API 提供了一種異步觀察目標元素與祖先元素或頂級文檔視口的交集變化的方法。

          換句話說,被異步觀察的是一個元素與另一個元素的交集。

          Denys Mishunov 有一個關于 Intersection Observer 和使用它的延遲加載圖像的很棒的教程。這是他的解決方案的樣子。

          假設您想延遲加載圖片庫。每個圖像的標記如下所示:

          <img data-src="image.jpg" alt="test image">

          請注意圖像的路徑如何包含在data-src屬性中,而不是src屬性中。原因是使用src意味著圖像會立即加載,這不是您想要的。

          在 CSS 中,您為每個圖像賦予一個min-height值,例如100px. 這為每個圖像占位符(沒有 src 屬性的 img 元素)提供了一個垂直維度:

          img { min-height: 100px; /* more styles here */ }

          然后在JavaScript文檔中創(chuàng)建一個config對象并將其注冊到一個intersectionObserver實例中:

          // create config object: rootMargin and threshold // are two properties exposed by the interface const config = { rootMargin: '0px 0px 50px 0px', threshold: 0 }; // register the config object with an instance // of intersectionObserver let observer = new intersectionObserver(function(entries, self) { // iterate over each entry entries.forEach(entry => { // process just the images that are intersecting. // isIntersecting is a property exposed by the interface if(entry.isIntersecting) { // custom function that copies the path to the img // from data-src to src ploadImage(entry.target); // the image is now in place, stop watching self.unobserve(entry.target); } }); }, config);

          最后,您遍歷所有圖像并將它們添加到此iterationObserver實例中:

          const imgs = document.querySelectorAll('[data-src]'); imgs.forEach(img => { observer.observe(img); });

          該解決方案的優(yōu)點:實施起來輕而易舉,有效,并且可以在intersectionObserver計算方面進行繁重的工作。

          另一方面,盡管最新版本的大多數瀏覽器都支持 Intersection Observer API,但并非所有瀏覽器都一致支持。幸運的是,有一個polyfill可用。

          #3 Lozad.js

          實現圖像延遲加載的一種快速簡便的替代方法是讓 JS 庫為您完成大部分工作。

          Lozad 是一個高性能、輕量級和可配置的純JavaScript惰性加載器,沒有依賴項。您可以使用它來延遲加載圖像、視頻、iframe 等,并且它使用 Intersection Observer API。

          你可以在 npm/Yarn 中包含 Lozad 并使用你選擇的模塊打包器導入它:

          npm install --save lozad yarn add lozad

          import lozad from 'lozad';

          或者,您可以簡單地使用 CDN 下載庫并將其添加到 HTML 頁面底部的< script>標簽中:

          <script src="https://cdn.jsdelivr.net/npm/lozad/dist/lozad.min.js"> </script>

          接下來,對于基本實現,將類lozad添加到標記中的資產:

          <img class="lozad" data-src="img.jpg">

          最后,在你的 JS 文檔中實例化 Lozad:

          const observer = lozad(); observer.observe();

          您將在Lozad GitHub 存儲庫上找到有關如何使用該庫的所有詳細信息。

          如果您不想深入研究 Intersection Observer API 的工作原理,或者您只是在尋找適用于各種內容類型的快速實現,那么 Lozad 是一個不錯的選擇。

          只是,請注意瀏覽器支持,并最終將此庫與 Intersection Observer API 的 polyfill 集成。

          #4 圖像模糊效果的延遲加載

          如果您是Medium讀者,您肯定已經注意到該網站如何在帖子中加載主圖片。

          您首先看到的是圖像的模糊、低分辨率副本,而其高分辨率版本正在延遲加載。

          您可以通過多種方式延遲加載具有這種有趣模糊效果的圖像。

          我們最喜歡的技術是 Craig Buckler。這是此解決方案的所有優(yōu)點:

          • 性能:只有 463 字節(jié)的 CSS 和 1,007 字節(jié)的縮小JavaScript代碼
          • 支持視網膜屏幕
          • 無依賴:不需要 jQuery 或其他庫和框架
          • 逐步增強以抵消舊瀏覽器和失敗的 JavaScript

          #5 Yall.js

          Yall 是一個功能豐富的延遲加載腳本,用于圖像、視頻和 iframe。更具體地說,它使用 Intersection Observer API,并在必要時巧妙地使用傳統(tǒng)的事件處理程序技術。

          在您的文檔中包含 Yall 時,您需要按如下方式對其進行初始化:

          <script src="yall.min.js"></script> <script> document.addEventListener("DOMContentLoaded", yall); </script>

          接下來,要延遲加載一個簡單的img元素,您只需在標記中執(zhí)行以下操作:

          <img class="lazy" src="placeholder.jpg" data-src="image-to-lazy-load.jpg" alt="Alternative text to describe image.">

          請注意以下事項:

          • 您將類添加到元素
          • src值是一個占位符圖像
          • 要延遲加載的圖像的路徑在data-src屬性內

          Yall 的好處包括:

          • Intersection Observer API 的出色性能
          • 出色的瀏覽器支持(它可以追溯到 IE11)
          • 不需要其他依賴項

          結論

          你有五種延遲加載圖像的方法,您可以開始在您的項目中進行試驗和測試。

          、廣告代碼分析
          很多第三方地廣告系統(tǒng)都是使用document.write來加載廣告,如下面地一個javascript地廣告鏈接.

          代碼如下:


          主站蜘蛛池模板: 国产日本亚洲一区二区三区| 国产在线观看精品一区二区三区91 | 国模大尺度视频一区二区| 亚洲国产日韩在线一区| 日本欧洲视频一区| 一区二区三区四区在线视频| 国产无吗一区二区三区在线欢| 亚洲一区二区三区在线播放 | 国产日韩一区二区三区在线播放| 中文字幕日韩人妻不卡一区 | 天美传媒一区二区三区| 综合久久一区二区三区| 亚洲一区无码精品色| 色偷偷一区二区无码视频| 一区二区福利视频| 亚洲AV无码一区二区乱子仑| 亚洲AV无码国产精品永久一区 | 国产精品 一区 在线| 亚洲综合激情五月色一区| 台湾无码AV一区二区三区| 亚洲国产成人久久综合一区77| 无码人妻aⅴ一区二区三区| 亚洲一区二区三区写真| 国产91久久精品一区二区| 亚洲国产美国国产综合一区二区 | 亚洲一区二区三区播放在线| 爆乳无码AV一区二区三区| 欧亚精品一区三区免费| 无码日韩精品一区二区免费暖暖 | 亚洲AV成人一区二区三区观看| 无码精品久久一区二区三区| 午夜视频一区二区| 男人的天堂av亚洲一区2区 | 免费萌白酱国产一区二区 | 成人无码AV一区二区| 国产一区视频在线免费观看| 日本无码一区二区三区白峰美| 亚洲乱色熟女一区二区三区蜜臀| 国产一区二区三区小说| 鲁丝丝国产一区二区| 亚洲午夜精品第一区二区8050|