网站前端优化之图片延时加载
来源: 阅读:709 次 日期:2016-06-15 10:14:26
温馨提示: 小编为您整理了“网站前端优化之图片延时加载”,方便广大网友查阅!

做web前端开发的工程师们都应该掌握前端优化这个技巧,下面it技术网就为大家介绍一下滚动延时加载。

首先要搞清楚的是网站为什么要延时加载呢?页面加载的时候就显示全部的图片不就得了?答案是肯定的。当要加载的图片或者内容很多时,如果一次性加载完毕,那么整个页面将会加载很久,意味着要用户等待很久,这是对用户不友好的。或许你还会问,那不就做个分页不就得了?其实这种滚动延时加载的技巧正是用来代替手动点击下一页的分页技术。每换一页都要用户点击一次,这也是对用户不友好的。所以才有了滚动延时加载。

我这里把加载图片作为例子,就好像百度图片里的一样,你往下滚动,它就会继续显示下一页的图片。

要求是这样的,比如我要加载20张图片,在页面加载完毕后我先加载5张(前提是5张已经占满浏览器窗口高度),当滚动条滚动到浏览器底部的时候再加载5张,一共加载4次。

原理是这样的,先获取当前浏览器的窗口高度a,然后给页面绑定一个滚动条滚动事件,当滚动条滚动的时候,首先判断时候已经加载了20张,如果小于20张,再获取当前文档距离顶部的高度b以及图片内容的高度c,如果a+b>=c,继续加载5张图片。下面请看代码:

<!doctype html>

<html xmlns=>

<head>

<meta http-equiv=content-type content=text/html; charset=utf-8 />

<title>页面滚动延迟加载图片</title>

<style type=text/css>

body {

margin: 0px;

}

ul {

list-style: none;

margin: 0px;

padding: 0px;

}

</style>

<script type=text/javascript src=jquery-1.7.2.min.js></script>

<script type=text/javascript>

var n = 0;

var winheight = $(window).height();

$(function () {

loadimg();

$(window).scroll(function () {

if (n < 20) {

var doctop = $(document).scrolltop();

var contentheight = $(#content).height();

if (doctop + winheight >= contentheight - 10) {

loadimg();

}

}

});

});

function loadimg() {

for (i = 0; i < 5; i++) {

$(#content).append(<li><img src='1.jpg'/></li>);

}

n += 5;

}

</script>

</head>

<body>

<ul id=content>

</ul>

</body>

</html>

这里使用了jqury框架,你可能会注意到这句代码:doctop + winheight >= contentheight - 10,这里我为什么要-10呢?如果不-10在ie、firefox下测试时通过的,但是在chrome下就不行了,因为在chrome下,doctop + winheight是永远比contentheight小1的,而在前两个浏览器里,doctop + winheight是比contentheight大1的,这个是浏览器的问题,我们只能去兼容它们,最简单的方法就是不一定要滚动到底部,滚动到距离底部还有10个像素的时候就可以加载新的图片了。

更多信息请查看脚本栏目
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map