- 浏览: 313134 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (243)
- Core Java (13)
- Java (12)
- Android (2)
- Lucene (3)
- J2EE (3)
- Hibernate (2)
- Jsp & Servlet (3)
- Struts2 (3)
- Spring (5)
- JSF (6)
- RichFaces (2)
- HTML & JS & DOM & CSS (87)
- browser (1)
- Ajax & A4J (2)
- Workflow (1)
- Maven (3)
- Linux (2)
- VM & VBOX (1)
- Tomcat (1)
- Cache (3)
- Others (36)
- design (1)
- PHP (1)
- Try.js (1)
- HTML5 && CSS3 && ECMAScript5 (26)
- 疯言疯语 (5)
- mongodb (2)
- Hardware Common Sence (1)
- RESTful (3)
- Nginx (2)
- web安全 (8)
- Page Design (1)
- web performance (1)
- nodejs (4)
- python (1)
最新评论
-
New_Mao_Er:
求最新的版本破解啊!!!
Omondo eclipseUML插件破解 -
konglx:
讲得仔细,谢了
全面分析 Spring 的编程式事务管理及声明式事务管理 -
cilendeng:
对所有post有效只能使用过滤器
说说Tomcat的Server.xml的URIEncoding=‘UTF-8’配置 -
jiulingchen:
mark了,灰常感谢!
JAVA中最方便的Unicode转换方法 -
anlaetion:
这算法可以有
js 字符串搜索算法
又到了这个月的博客时间了,原计划是打算在这个月做一个的功能较炫的拖拽类,可是感觉想的太容易,实现起来遇见不少问题,如果技术分享做不到有助于人反而害人,那就歇菜了,所以还是等本人多找些资料研究研究,“拖拽类“先放放吧,下面开始正题...
为什么写这篇文章?
1.优化页面很实用的方法,技术实现不难;
2.搜索了相关内容的文章,好像都是用jQuery的方法,可是如果不用jQuery的站长难道就不能用这种方法了么;
3.做技术分享也是在让更多人帮自己测试,因为这个本人木有在项目中实际用到,都是自己琢磨的,所有如果有问题请大家指出,先谢谢了;
4.这个月的博客还没写;
5.刚好木有工作任务,此时不写更待何时...
现在的页面大多都具有的特点 - 内容丰富,图片较多;像我们经常浏览的淘宝,京东,团购网站之类的(本人网购控,属于一个月不在网上花点钱就不痛快),一个页面几十张图片那叫毛毛雨,所以现在流行起了一个方法 - 滚动动态加载。这个方法能解决很大程度的HTTP请求,首先页面只加载窗口显示区的图片,只有等到页面滚动,且滚动到相应位置的时候再去加载图片,这样做网页加载快了(请求少了,加载的东西少了能不提快么)。在《高性能网站建设指南》第一章就说到,减少HTTP请求的重要性,这是提高网页前端性能,优化页面加载速度很实用的做法。
原理:
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 //数字型
})
最后,祝大家工作愉快,学习进步,哈哈..
如果觉得此文还算用心,请劳驾点右下角 的推荐 ^.^ 。
- ScrollLoad.rar (1.7 KB)
- 下载次数: 4
发表评论
-
循环数组的逻辑怎么写
2015-03-23 10:24 650应用场景这样的: var imgUrls = [ ... -
发布`代码生成器`
2014-11-17 00:45 589闲话不说,直接上地址 npm: https://www. ... -
MutationObserver
2014-10-27 15:29 1102MutationObserver MutationObse ... -
a simple mvvm library - bird
2014-10-09 18:26 733see here:https://github.com/i ... -
遍历dom tree是一件相当耗时的事情
2014-09-23 01:15 780遍历dom tree是一件相当耗时的事情,尤其是在遍历的同时 ... -
今天再讲下js里的继承
2014-09-18 00:27 700js的继承说简单也很简单,请看: function ... -
Text 类型
2014-09-05 18:52 849文本节点由Text类型表 ... -
JavaScript插入动态脚本
2014-09-05 18:47 647动态脚本指的是在页面加载时不存在,但将来的某一时刻通过修改该 ... -
innerHTML插入<style>元素
2014-09-05 18:37 1167通过innerHTML写入<style>元素没 ... -
CSS实现相对浏览器窗口定位彻底研究
2014-09-05 18:33 3732Web Developer / Designer 经常需要将 ... -
JavaScript插入动态样式
2014-09-05 18:07 613能够把CSS样式包含到HTML页面中的元素有两个。其中,& ... -
再理解jQuery;delete原型属性
2014-05-13 22:05 1869以前用jQuery的时候曾粗略看了它的源码,但却不求甚解。 ... -
javascript &&和||
2012-07-23 00:38 704一直以为 && 和 || ... -
undefined 和 void 0 的区别
2012-07-20 11:15 705在读backbone源码时看见这么一段代码: if ( ... -
Fiddler - 前端开发值得拥有
2012-07-16 14:41 838最近换了新工作,搬了新家,换了新室友,一切都在重新开始。 ... -
说说我的web前端之路,分享些前端的好书
2012-07-16 14:38 796WEB前端研发工程师,在国内算是一个朝阳职业,这个领域没 ... -
JavaScript 操作 Cookie
2012-07-16 11:18 691从事web开发也有些日 ... -
Javascript定义类(class)的三种方法
2012-07-12 12:35 590程序员们做了很多探索,研究如何用Javascript模拟”类” ... -
服务端解决跨源共享
2012-06-21 10:18 4521跨源资源共享是web开发领域中一个非常有趣的话题,互联网 ... -
利用CORS实现跨域请求
2012-06-21 10:12 1859跨域请求一直是网页编程中的一个难题,在过去,绝大多数人都 ...
相关推荐
优化页面很实用的方法,技术实现不难; 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('...
水平滚动动态加载是一种常见的网页优化技术,特别是在展示大量图片或者内容时,能够有效提升用户体验和网站性能。在传统的网页设计中,所有页面元素在页面加载时一次性加载完成,这可能导致加载时间过长,特别是当...