原理:
1.给页面绑定滚动事件;
2.加载页面的时候把真正的图片地址放在某属性中;
3.然后再滚动过程中判断元素是否进入当前浏览器窗口内;
4.最后加载图片,当然加载什么,用什哪种用户体验都得由你决定;
难点:
浏览器兼容是造成难点的原因所在,DOM标准和IE标准,每天前端的工作都在和它们打交道。思考下面的几段代码
目的:获得当前页面相对于窗口显示区左上角的 Y 位置.
DOM标准:window.pageYOffset;
IE标准:window.document.documentElement.scrollTop
目的:声明了窗口的文档显示区的高度和宽度,以像素计.
DOM标准:innerheight 和 innerwidth;
IE标准:document.documentElement 或 ducument.body (与 DTD 相关)的 clientWidth 和 clientHeight 属性作为替代
目的:获取页面元素的位置.
当浏览器为 非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 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 < _len; 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 < offsetWindow) || (postWindow > offsetPage && postWindow < offsetWindow)) {
if (tag === "img" && attrSrc !== null) {
o.setAttribute("src", attrSrc);
}
o = null;
}
}
};
window.onscroll = function () {
setTimeout(function () {
_init();
}, defaults.time);
}
};
return _init();
});
scrollLoad();
可传递一个参数设置src原地址和响应时间
time: 100 //数字型
})
最后,祝大家工作愉快,学习进步,哈哈..
如果觉得此文还算用心,请劳驾点右下角 的推荐 ^.^ 。
相关推荐
优化页面很实用的方法,技术实现不难; 2.搜索了相关内容的文章,好像都是用jQuery的方法,可是如果不用jQuery的站长难道就不能用这种方法了么; 3.做技术分享也是在让更多人帮自己测试,因为这个本人木有在项目中...
另外,JavaScript(通常与jQuery库一起使用)是实现滚动加载特效的关键。通过监听滚动事件,如`$(window).scroll()`,我们可以检测用户何时接近预设的图片区域。一旦满足条件,JavaScript可以触发加载动画,并使用...
基于JavaScript开发的滚动加载页面图片+源码 基于JavaScript开发的滚动加载页面图片+源码 基于JavaScript开发的滚动加载页面图片+源码 基于JavaScript开发的滚动加载页面图片+源码 基于JavaScript开发的滚动加载...
网页图片随滚动条加载是一种优化网页性能的技术,它主要针对含有大量图片的页面,通过只在用户滚动到可视区域时加载图片,来提高网页的加载速度和用户体验。这种技术也被称为懒加载(Lazy Loading)或者延迟加载(On...
1. **预加载图片**:在JavaScript中,`new Image()`对象用于创建一个新的图像对象并预加载图片资源。这确保了图片在需要时已经加载完成,避免了滚动过程中可能出现的延迟。在代码中,我们有五张图片(img1到img5)和...
在滚动图片加载特效中,可以利用canvas预加载图片,然后在用户滚动到相应位置时,用canvas绘制出已经加载的图片,从而实现平滑的动画过渡。 其次,CSS3的transform和transition属性是创建滚动动画的关键。transform...
标题中的“拖动滚动条自动加载图片页面”指的是网页设计中的一个常见技术,通常被称为“无限滚动”或“滚动监听加载”。这种技术允许用户在滚动页面时,内容(如图片)会随着滚动条的移动而逐步加载,而不是一次性...
压缩包中的"滚动加载图片"可能包含一个简单的JavaScript示例代码,用于演示如何实现这一功能。这个文件可能包括如何创建Observer,如何定义加载条件,以及如何处理加载事件的代码。如果你需要更深入地了解或实现滚动...
总结起来,"聂微东-页面滚动图片加载"是一个关于利用JavaScript在网页中实现延迟加载图片的技术,这种技术提高了网页性能,优化了用户体验,特别是在内容丰富的网站如QQ空间中。通过监听滚动事件、计算元素位置和...
这种技术能够显著提升网页加载速度,改善用户体验,因为它只在用户实际需要时才加载图片,而不是一次性加载整个页面。下面将详细介绍这个知识点。 首先,理解基本原理:当用户滚动页面时,浏览器会触发滚动事件。...
当图片元素进入视口时,我们调用`loadImage`函数来实际加载图片。`loadImage`可以是一个简单的函数,将图片的`data-src`属性(预设的图片URL)替换为`src`属性,从而触发图片加载。 ```javascript function ...
JavaScript实现的图片懒加载是一种高效的网页优化策略,尤其在处理大量图片或高分辨率图像的页面时,能够显著提升页面的加载速度和用户体验。这一技术基于滚动事件,只有当图片进入浏览器的视口(即用户能看到的区域...
图片懒加载是一种优化技术,用于延迟加载图片,直到用户滚动到图片所在的位置。在本示例代码中,我们使用懒加载来加载用户的头像。 5. 结合原生 js 来写 scroll 事件 在本示例代码中,我们使用原生 js 来写 scroll...
本文将介绍如何使用JavaScript实现一个简单的无穷滚动加载数据的功能。 首先,要实现无穷滚动加载数据,我们需要监听滚动条事件(onscroll),以检测用户何时滚动到了页面底部,这是触发数据加载的关键时机。页面底部...
总结来说,jQuery无限滚动加载图片瀑布流技术是结合了jQuery库、瀑布流布局和无限滚动加载的网页设计技巧,通过精心设计的插件,可以轻松地实现在网页上动态加载和展示图片,为用户提供流畅、无阻隔的浏览体验。
页面滚动到底部自动加载数据,也被称为无限滚动或滚动加载,是现代网页设计中常见的一种交互方式。这种技术允许用户在浏览网页时无需点击分页按钮,只需将页面滚动到最底部,更多内容就会自动加载出来,提高了用户...
通过创建一个观察器实例,设置阈值和回调函数,当图片进入视口时,回调函数会被调用,从而加载图片。 三、示例代码(使用Intersection Observer API) ```javascript const images = document.querySelectorAll('...
水平滚动动态加载是一种常见的网页优化技术,特别是在展示大量图片或者内容时,能够有效提升用户体验和网站性能。在传统的网页设计中,所有页面元素在页面加载时一次性加载完成,这可能导致加载时间过长,特别是当...