首页后端开发其他后端知识HTML图片延迟加载效果怎么实现

HTML图片延迟加载效果怎么实现

时间2024-03-28 11:08:03发布访客分类其他后端知识浏览592
导读:这篇文章给大家介绍了“HTML图片延迟加载效果怎么实现”的相关知识,讲解详细,步骤过程清晰,对大家进一步学习和理解“HTML图片延迟加载效果怎么实现”有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧...
这篇文章给大家介绍了“HTML图片延迟加载效果怎么实现”的相关知识,讲解详细,步骤过程清晰,对大家进一步学习和理解“HTML图片延迟加载效果怎么实现”有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。

做web开发的朋友都应该掌握前端优化这个技巧,其中一个就是滚动延时加载。这个技巧应用在了很多地方,比如新浪微博网页版。

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


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

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

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


我说过,我喜欢以尽可能少的代码以及尽可能简单的demo来为有需要的人展示一些强大的功能,因为所有的东西原理其实都很简单,越简单的demo越容易让人理解和接受。所以代码很少,直接上代码:


!DOCTYPE html>
    
html xmlns="http://www.w3.org/1999/xhtml">
    
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框架是为了让代码更少更简单,如果你可以手写纯js代码来实现这个功能当然最好不过,毕竟是优化,这个小小的功能也不需要使用到任何js框架。

不过个人比较喜欢jquery框架,毕竟在大项目中,手写纯js代码将会严重拖慢整个项目的进度,有一个强大的js框架摆在面前,合理运用还是能提高开发效率的,而且在一个大项目中,jquery不是仅仅能帮你实现这个小小的功能而已,像Ajax,它是能轻轻松松就能帮你搞定的。另外我这里只是写死了加载这一张图片,事实上它应该是使用Ajax来请求新的图片,然后加载到页面里的,因为想尽量简单,就没有涉及后台逻辑,所以只加载这一张图片。


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


到此这篇关于“HTML图片延迟加载效果怎么实现”的文章就介绍到这了,感谢各位的阅读,更多相关HTML图片延迟加载效果怎么实现内容,欢迎关注网络资讯频道,小编将为大家输出更多高质量的实用文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: HTML图片延迟加载效果怎么实现
本文地址: https://pptw.com/jishu/654899.html
JS快速排序和去重怎么实现 HTML中如何对文字居中对齐,方法是什么

游客 回复需填写必要信息