首頁 web前端 js教程 JavaScript实现页面滚动图片加载(仿lazyload效果)_javascript技巧

JavaScript实现页面滚动图片加载(仿lazyload效果)_javascript技巧

May 16, 2016 pm 06:04 PM
圖片載入 頁面捲動

为什么写这篇文章?
  1.优化页面很实用的方法,技术实现不难;
  2.搜索了相关内容的文章,好像都是用jQuery的方法,可是如果不用jQuery的站长难道就不能用这种方法了么;
  3.做技术分享也是在让更多人帮自己测试,因为这个本人木有在项目中实际用到,都是自己琢磨的,所有如果有问题请大家指出,先谢谢了;
  4.这个月的博客还没写;
  5.刚好木有工作任务,此时不写更待何时...

  现在的页面大多都具有的特点 - 内容丰富,图片较多;像我们经常浏览的淘宝,京东,团购网站之类的(本人网购控,属于一个月不在网上花点钱就不痛快),一个页面几十张图片那叫毛毛雨,所以现在流行起了一个方法 - 滚动动态加载。这个方法能解决很大程度的HTTP请求,首先页面只加载窗口显示区的图片,只有等到页面滚动,且滚动到相应位置的时候再去加载图片,这样做网页加载快了(请求少了,加载的东西少了能不提快么)。在《高性能网站建设指南》第一章就说到,减少HTTP请求的重要性,这是提高网页前端性能,优化页面加载速度很实用的做法。

  原理:
1.给页面绑定滚动事件;
2.加载页面的时候把真正的图片地址放在某属性中;
3.然后再滚动过程中判断元素是否进入当前浏览器窗口内;
4.最后加载图片,当然加载什么,用什哪种用户体验都得由你决定;

  难点:
  浏览器兼容是造成难点的原因所在,DOM标准和IE标准,每天前端的工作都在和它们打交道。思考下面的几段代码
  1.window.pageYOffset ? window.pageYOffset : window.document.documentElement.scrollTop
目的:获得当前页面相对于窗口显示区左上角的 Y 位置.
DOM标准:window.pageYOffset;
IE标准:window.document.documentElement.scrollTop
  2.window.innerHeight ? window.innerHeight : document.documentElement.clientHeight
目的:声明了窗口的文档显示区的高度和宽度,以像素计.
DOM标准:innerheight 和 innerwidth;
IE标准:document.documentElement 或 ducument.body (与 DTD 相关)的 clientWidth 和 clientHeight 属性作为替代
  3.obj.getBoundingClientRect().top + window.document.documentElement.scrollTop + window.document.body.scrollTop
目的:获取页面元素的位置.
当浏览器为 非webkit内核 时,document.body.scrollTop值恒定为0,使用 document.documentElement.scrollTop才能取到正确值 ;
当浏览器为 webkit内核 时,document.documentElement.scrollTop值恒定为0,使用 document.body;
我还搜索到一种说法是和DTD相关(即 当页面指定了 DOCTYPE时,使用 document.documentElement ; 当页面没有指定了 DOCTYPE时,使用 document.body),请确定知道的朋友帮忙指出下,不胜感谢。
  细节:
1.因为真正的地址最初是在某属性中(默认是xsrc,可自己设置),所以默认的图片地址最好是一个像素的透明图片,这样可以避免在浏览器中出现红X;

2.在图片load的时候可以加入等待的图片,这样用户才会知道这里有图片需要加载,良好的用户体验是前端一直所追求的(例子中有体现);
3.在图片load成功后可以加入合适的显示效果(例子中木有体现,可以自己尝试);
JavaScript源码如下:

复制代码 代码如下:

var scrollLoad = (function (options) {
var defaults = (arguments.length == 0) ? { src: 'xSrc', time: 300} : { src: options.src || 'xSrc', time: options.time ||300};
var camelize = function (s) {
return s.replace(/-(\w)/g, function (strMatch, p1) {
return p1.toUpperCase();
});
};
this.getStyle = function (element, property) {
if (arguments.length != 2) return false;
var value = element.style[camelize(property)];
if (!value) {
if (document.defaultView && document.defaultView.getComputedStyle) {
var css = document.defaultView.getComputedStyle(element, null);
value = css ? css.getPropertyValue(property) : null;
} else if (element.currentStyle) {
value = element.currentStyle[camelize(property)];
}
}
return value == 'auto' ? '' : value;
};
var _init = function () {
var offsetPage = window.pageYOffset ? window.pageYOffset : window.document.documentElement.scrollTop,
offsetWindow = offsetPage + Number(window.innerHeight ? window.innerHeight : document.documentElement.clientHeight),
docImg = document.images,
_len = docImg.length;
if (!_len) return false;
for (var i = 0; i var attrSrc = docImg[i].getAttribute(defaults.src),
o = docImg[i], tag = o.nodeName.toLowerCase();
if (o) {
postPage = o.getBoundingClientRect().top + window.document.documentElement.scrollTop + window.document.body.scrollTop; postWindow = postPage + Number(this.getStyle(o, 'height').replace('px', ''));
if ((postPage > offsetPage && postPage offsetPage && postWindow if (tag === "img" && attrSrc !== null) {
o.setAttribute("src", attrSrc);
}
o = null;
}
}
};
window.onscroll = function () {
setTimeout(function () {
_init();
}, defaults.time);
}
};
return _init();
});
scrollLoad();
 
可传递一个参数设置src原地址和响应时间
复制代码 代码如下:

scrollLoad({
src:'userSrc', //字符串型
time: 100 //数字型
})
 
demo下载
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1319
25
PHP教程
1269
29
C# 教程
1248
24
如何優化Vue開發中的圖片載入失敗顯示問題 如何優化Vue開發中的圖片載入失敗顯示問題 Jun 29, 2023 am 10:51 AM

如何優化Vue開發中的圖片載入失敗顯示問題在Vue開發中,經常會遇到需要載入圖片的場景。然而,由於網路不穩定或圖片不存在的原因,很有可能會出現圖片載入失敗的情況。這樣的問題不僅影響了使用者體驗,還可能導致頁面呈現混亂或出現空白的情況。為了解決這個問題,本文將分享一些優化Vue開發中圖片載入失敗顯示的方法。使用預設圖片:在Vue組件中,可以設定預設圖片,

如何解決Edge瀏覽器無法載入圖片的問題 如何解決Edge瀏覽器無法載入圖片的問題 Jan 30, 2024 am 10:54 AM

edge瀏覽器圖片載入不出來怎麼辦? edge瀏覽器是許多小夥伴用於上網的預設瀏覽器,可以提供使用者便利的上網服務。但有些小夥伴在上網的過程中,發現edge瀏覽器的網頁中圖片無法正常載入出來,在排除了網路問題之後,最大的可能是設定的問題,如果你想解決這個問題的話,就隨小編一起來看看圖片無法顯示的解決方法吧。 edge瀏覽器圖片載入不出來怎麼辦1、點擊左下角開始,右鍵點選「Microsoftedge」。 2、選擇“更多”,點選“應用設定”。 3.下滑找到「圖片」。 4.將圖片下方的開關打開即可。

解決網頁圖片無法載入的方法 解決網頁圖片無法載入的方法 Jan 08, 2024 pm 01:45 PM

很多小夥伴在用開啟網頁的時候,發現網頁的圖片載入不出來,顯示一個×的標誌,這是怎麼一回事呢?可能是你的網路速度過低,等待一會就可以了,也可能是設定裡面沒有開啟相關模式,下面就帶來了網頁圖片載入不出來解決方法一起來看看吧。網頁圖片載入不出來:1.網路速度問題網頁顯示不出圖片有可能是因為電腦的網路速度比較慢,電腦中開啟的軟體比較多,而我們造訪的圖片比較大,這就可能因為載入超時,導致圖片顯示不出來,可以將比較佔網速的軟體將關掉,可以去任務管理器查看一下。 2.造訪人數過多網頁顯示不出圖片還有可能是因為我們造訪的網頁

Vue懶載入圖片失敗問題解決方案 Vue懶載入圖片失敗問題解決方案 Jun 29, 2023 pm 10:42 PM

Vue開發中如何解決圖片懶載入失敗的問題懶載入(LazyLoad)是現代Web開發中常用的最佳化技術之一,特別在載入大量圖片和資源時,可以有效減輕頁面的負擔,提升使用者體驗。然而,在使用Vue框架進行開發時,有時候我們可能會遇到圖片懶載入失敗的問題。本文將介紹一些常見的問題和解決方案,以便開發者能夠更好地應對這個問題。圖片資源路徑錯誤首先,我們需要確保圖片資源

如何使用PHP開發快取優化圖片載入速度 如何使用PHP開發快取優化圖片載入速度 Nov 08, 2023 pm 05:58 PM

如何使用PHP開發快取優化圖片載入速度隨著網路的快速發展,網頁載入速度成為使用者體驗的重要因素之一。而圖片載入速度是影響網頁載入速度的重要因素之一。為了加速圖片的加載,我們可以使用PHP開發快取來優化圖片載入速度。本文將介紹如何使用PHP開發快取來最佳化圖片載入速度,並提供具體的程式碼範例。一、快取的原理快取是一種儲存資料的技術,透過將資料暫時保存在高速記憶體中

Win11微軟商店圖片載入不出來如何解決 Win11微軟商店圖片載入不出來如何解決 Jun 29, 2023 pm 03:43 PM

  Win11微軟商店圖片載入不出來如何解決?在微軟商店裡,我們可以輕鬆地搜尋下載各種軟體和遊戲,但是近期有部分Win11用戶發現電腦上的微軟商店圖片加載不出來了,十分影響使用體驗,那麼對於這一情況有沒有什麼方法可以解決呢?下面我們就來看看小編是如何解決的吧。  Win11微軟商店圖片載入不出來的解決方法  1、右鍵下方的開始選單進入。  2、點選選擇網路和Internet進入。  3、可以查看自己的網路是否連接正常。  4、可以將網路配置從專用改成公用即可。

win7瀏覽圖片載入不出來怎麼辦 win7瀏覽圖片載入不出來怎麼辦 Jul 19, 2023 pm 02:57 PM

當你瀏覽網頁時,你有沒有遇過圖片無法載入的情況,那麼原因是什麼呢?如果win7瀏覽圖片無法載入怎麼辦?有這個問題的用戶,看看下面小邊為您分享win7瀏覽圖片無法載入的解決方案。 1.首先,我們先確定網頁是否設定了不顯示圖片。我們點擊瀏覽器右上角的工具-Internet選項,然後切換到進階。如果我們把它拖到多媒體上,就會有一個顯示圖片的選項,這需要在前面勾選。 2.接下來,讓我們檢查flashplayer版本是否是最新版本。檢測方法。點選開始,然後選擇控制台,在控制台中找到flashplaye

JavaScript 如何實現頁面滾動到頂部按鈕功能? JavaScript 如何實現頁面滾動到頂部按鈕功能? Oct 19, 2023 am 11:16 AM

JavaScript如何實現頁面滾動到頂部按鈕功能?在網頁設計中,有時我們需要一個可以快速返回頁面頂部的功能,這樣使用者就不需要手動滾動頁面了。這種功能通常透過一個「返回頂部」的按鈕來實現。在本文中,我將向大家介紹如何使用JavaScript來實現這項功能,並提供詳細的程式碼範例。首先,我們需要在HTML檔案中加入一個按鈕元素,用於觸發返回頂部的功能。例如,可

See all articles