zoukankan      html  css  js  c++  java
  • 随滚动条位置动态加载页面图片

    一、展示页面

    <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>无忧移动-测试</title>
        <script src="/Scripts/jquery-1.4.4.min.js" type="text/javascript"></script>
        <style type="text/css">
            img{border:0;}
            a{cursor:pointer;color:#014ccc;text-decoration:underline;}
            a:hover{text-decoration:none;}
            .clear{clear:both;height:0px;overflow:hidden;}
            .img_list{margin:0 auto;}
            .img_list li{list-style:none}
            .img_list .items{300px;margin:0 auto;}
            .img_list .item{float:left;margin-bottom:5px;font-size:14px;}
            .img_list .item .order{display:inline-block;*display:inline;*zoom:1;28px;color:#f30;}
            .img_list .item .i_thumb{300px;height:280px;}
            .img_list .item .i_title{100%;height:20px;}
            .showmore{height:35px;background:#f8f8f8;border-bottom:1px solid #cccccc;cursor:pointer;tetx-align:center;margin-bottom:25px;}
            .showmore .handle{display:block;height:35px;text-align:center;color:#909090;font-size:14px;text-decoration:none;line-height:35px;}
            .showmore .handle:hover{text-decoration:none;background:#e6e6e6;}
        </style>
    </head>
    <body>
        <center>
            <h1>
                图片动态加载示例</h1>
        </center>
        <div class="img_list" id="img_list">
            <div class="items" id="items">
                <ul class="item">
                    <li class="i_thumb"><a href="#" target="_blank" title="图片一">
                        <img src="/Themes/Default/Images/images_test/1.jpg" alt="图片一" /></a></li>
                    <li class="i_title"><span class="order">1</span><a href="#"
                        target="_blank" title="图片一">图片一</a></li>
                </ul>
                <ul class="item">
                    <li class="i_thumb"><a href="#" target="_blank" title="图片二">
                        <img src="/Themes/Default/Images/images_test/2.jpg" alt="图片二" /></a></li>
                    <li class="i_title"><span class="order">2</span><a href="#"
                        target="_blank" title="图片二">图片二</a></li>
                </ul>
                <ul class="item">
                    <li class="i_thumb"><a href="#" target="_blank" title="图片三">
                        <img src="/Themes/Default/Images/images_test/3.jpg" alt="图片三" /></a></li>
                    <li class="i_title"><span class="order">3</span><a href="#"
                        target="_blank" title="图片三">图片三</a></li>
                </ul>
                <ul class="item">
                    <li class="i_thumb"><a href="#" target="_blank" title="图片四">
                        <img src="/Themes/Default/Images/images_test/4.jpg" alt="图片四" /></a></li>
                    <li class="i_title"><span class="order">4</span><a href="#"
                        target="_blank" title="图片四">图片四</a></li>
                </ul>
                <div class="clear">
                </div>
            </div>
            <div class="showmore" id="showmore">
                <a class="handle" href="javascript:show()">显示更多结果</a></div>
        </div>
        <script type="text/javascript">
            var timespan = 5  //检测间隔时间(秒)
            var iHeight = 0;
            var iTop = 0;
            var clientHeight = 0;
            var iIntervalId = null;
            var pageNo = 1;   // 当前页数,默认设为第 1 页
            var pageSize = 4; // 每页显示的数量

            getPageHeight();

            // 添加定时检测事件,每2秒检测一次
            iIntervalId = setInterval("_onScroll();", timespan * 1000);

            // 取得当前页面显示所占用的高度
            function getPageHeight() {
                if (document.body.clientHeight && document.documentElement.clientHeight) {
                    clientHeight = (document.body.clientHeight < document.documentElement.clientHeight) ? document.body.clientHeight : document.documentElement.clientHeight;
                } else {
                    clientHeight = (document.body.clientHeight > document.documentElement.clientHeight) ? document.body.clientHeight : document.documentElement.clientHeight;
                }

                iHeight = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);

            }

            // 调用ajax取服务端数据
            function show() {
                pageNo++;

                $.ajax({
                    url: '/Test/Img?p=' + pageNo + '&r=' + Math.random(),
                    type: 'GET',
                    dataType: 'text',
                    timeout: 4000,
                    beforeSend: showLoadingImg,
                    error: showFailure,
                    success: showResponse
                });
            }

            function showLoadingImg() {
                $('#showmore').html('<a class="handle" href="javascript:show()"><img src="images_test/loading.gif" height="32px" />显示更多结果</a>');
            }

            function showFailure() {
                $('#showmore').html('<font color=red> 获取查询数据出错 </font>');
            }

            // 根据ajax取出来的json数据转换成html
            function showResponse(responseData) {
                var returnjson = eval("(" + responseData + ")");
                var itemsSize = returnjson.items.length;

                var nextpagehtml = '';
                var pageOffset = (pageNo - 1) * pageSize + 1;
                for (i = 0; i < itemsSize; i++) {
                    nextpagehtml += '<ul class="item">';
                    nextpagehtml += '<li class="i_thumb"><a href="#" target="_blank" title="' + returnjson.items[i].name + '"><img src="/Themes/Default/Images/' + returnjson.items[i].pic + '" alt="' + returnjson.items[i].name + '" /></a></li>';
                    nextpagehtml += '<li class="i_title"><span class="order">' + (pageOffset + i) + '</span><a href="#" target="_blank" title="' + returnjson.items[i].name + '">' + returnjson.items[i].name + '</a></li>';
                    nextpagehtml += '</ul>';
                }
                nextpagehtml += '<div class="clear"></div>';
                $(nextpagehtml).appendTo($("#items"));

                // 当前页码数小于3页时继续显示更多提示框
                if (pageNo < 3) {
                    $('#showmore').html('<a class="handle" href="javascript:show()">显示更多结果</a>');
                } else {
                    clearInterval(iIntervalId);
                    $('#showmore').hide();
                }
            }

            // 判断滚动条是否到达底部
            function reachBottom() {
                var scrollTop = 0;
                if (document.documentElement && document.documentElement.scrollTop) {
                    scrollTop = document.documentElement.scrollTop;
                } else if (document.body) {
                    scrollTop = document.body.scrollTop;
                }
                if ((scrollTop > 0) && (scrollTop + clientHeight == iHeight)) {
                    return true;
                } else {
                    return false;
                }
            }

            // 检测事件,检测滚动条是否接近或到达页面的底部区域,0.99是为了更接近底部时
            function _onScroll() {
                iTop = document.documentElement.scrollTop + document.body.scrollTop;
                getPageHeight();
                if (((iTop + clientHeight) > parseInt(iHeight * 0.99)) || reachBottom()) {
                    if (pageNo >= 3) {
                        clearInterval(iIntervalId);
                        $('#showmore').hide();
                        return;
                    }
                    show();
                }
            };
        </script>
    </body>
    </html>

    二、Ajax后端页面

    public ActionResult Img(string p)
            {
                p = DataTypeHelper.GetString(p, "2");
                if (p.Equals("2"))
                {
                    return Content("{\"items\":[{\"name\":\"图片名\",\"pic\":\"images_test/5.jpg\"},{\"name\":\"图片名\",\"pic\":\"images_test/6.jpg\"}, {\"name\":\"图片名\",\"pic\":\"images_test/7.jpg\"}, {\"name\":\"图片名\",\"pic\":\"images_test/8.jpg\"}]}");
                }
                else if (p.Equals("3"))
                {
                    return Content("{\"items\":[{\"name\":\"图片名\",\"pic\":\"images_test/9.jpg\"},{\"name\":\"图片名\",\"pic\":\"images_test/10.jpg\"}, {\"name\":\"图片名\",\"pic\":\"images_test/11.jpg\"}, {\"name\":\"图片名\",\"pic\":\"images_test/12.jpg\"}]}");
                }
                return Content("");
            }

  • 相关阅读:
    jquery使用
    网站重构?
    WEB应用从服务器主动推送Data到客户端有那些方式?
    异步加载和延迟加载?
    平时如何管理你的项目?
    对前端界面工程师这个职位是怎么样理解的?它的前景会怎么样?
    约定优于配置(convention over configuration)
    JavaEE的13种核心技术
    The Spring Framework ConfigurableListableBeanFactory.java
    mySQL的boolean类型为tinyint(1)
  • 原文地址:https://www.cnblogs.com/gzgccsu/p/2092891.html
Copyright © 2011-2022 走看看