数据瀑布流

<script type="text/javascript" src="{$static_domain}/js/template.js"></script><style>
    .a_load_more {
        height: 20px;
        line-height: 20px;
        text-align: center;
    }

    .visib {
        visibility: hidden;
    }

    .review_list .list .list_con {
        overflow: hidden;
        text-overflow: ellipsis;
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        max-height: 32px;
    }
</style>
<script id="test" type="text/html">
    <li class="item">
     <span class="img">
        <a href="/pro-shots/{{image_id+‘.html‘}}" rel="nofollow" alt="{{image_title}}">
            <img src="{{image_url}}"/>
        </a>
     </span>
        <span class="user">
         <a href="javascript:void(0);">
          <img src="{{if avatars_url && op_type==1}}{{avatars_url}}{{else}}/templates/default/images/touxiang.png{{/if}}"/>
         </a>
         <b class="ellipsis">{{if op_type==2}}{{more_customers_name}}{{else}}{{customers_name}}{{/if}}</b>
         <strong>{{add_date}}</strong>
     </span>
        <div class="btn" id="{{image_id}}" type="image">
            <b><i></i>{{$LP_REVIEW_IMAGE_LIST}} (<s>{{diggs}}</s>)</b>
            <b><i></i>{{$LP_FEEDBACK}} (<s>{{comments_count}}</s>)</b>
        </div>

        <div class="review_list">
            {{each comments as value i}}
            <div class="list">
                <i><img src="{{comments[i].avatars_url}}"/></i>
                <span class="list_con">
                    <b>{{comments[i].customers_nikename}}</b> {{comments[i].post_content}}
                </span>
                <span class="time">{{comments[i].post_add_datetime}}</span>
            </div>
            {{/each}}
            {{if comments_count > 3}}
            <span class="more"><a href="/pro-shots/{{image_id+‘.html‘}}">More &gt;&gt;</a></span>
            {{/if}}
        </div>
    </li>
</script>
<script>
    ;(function (window, $) {
        /*contentBox存放的容器
         *loadBtn 加载更多的按钮
         *ajaxUrl 服务器地址
         * pageIndex 页码
         * pedding 是否正在发ajax请求
         * */
        var scrollPages = function (opt) {
            this.option = {
                contentBox: ‘‘,
                loadBtn: ‘‘,
                ajaxUrl: ‘‘,
                pageIndex: 1,
                pageMaX: ‘‘,
                pedding: 0
            }
            this.option = $.extend(this.option, opt);
        }
        scrollPages.prototype.init = function () {
            var me = this;
            // 先获取窗口的高度
            var wp = $(window).height();
            // 为滚动条绑定一个滚动事件
            $(window).bind(‘scroll‘, function () {
                // 如果当前正在发请求中就不再响应事件
                if (me.option.pending == 1)
                    return;
                // 获取加载更多按钮所在的位置
                var p = me.option.loadBtn.offset();
                if (p == 0)
                    return;
                // 获取滚动了多高
                var sh = $(window).scrollTop();
                // 如果窗口的高度加上滚动的高度大于按钮距离上面的距离就说明按钮出现在了屏幕上
                if ((sh + wp - 40) > p.top) {
                    me.option.pending = 1;  // 标记为当前正在发AJAX请求
                    me.option.loadBtn.trigger("click");
                }
            })
            me.option.loadBtn.bind(‘click‘, function () {
                me.ajaxPage();
            })
            me.option.loadBtn.trigger("click");
        }
        scrollPages.prototype.ajaxPage = function () {
            var me = this;
            $.ajax({
                url: me.option.ajaxUrl + ‘&page=‘ + me.option.pageIndex,
                type: "GET",
                dataType: "json",
                beforeSend: function () {
                    me.option.loadBtn.removeClass(‘visib‘);
                },
                success: function (result) {
                    // 把数据放到页面上;
                    if (result.data.data.length > 0) {
                        var newData = [];
                        (function () {
                            newData.push(result.data.data.splice(0, 5));
                            if (result.data.data.length) {
                                arguments.callee();
                            }
                        })();
                        for (var i = 0; i < newData.length; i++) {
                            for (var k = 0; k < newData[i].length; k++) {
                                var $item = newData[i][k];
                                var html = template(‘test‘, $item);
                                me.option.contentBox.find(‘ul‘).eq(k).append(html);
                            }
                        }
                        me.option.pageMaX = result.data.total_page;
                        me.option.pageIndex++;  // 下一次取下一页
                        if (me.option.pageMaX < me.option.pageIndex) {
                            // 如果没有数据
                            $(window).unbind("scroll");
                            me.option.loadBtn.removeClass(‘visib‘).unbind(‘click‘).html(‘‘);
                            return false;
                        }
                        me.option.loadBtn.addClass(‘visib‘);
                        me.option.pending = 0; // 可以发下一个AJAX请求了
                    } else {
                        $(window).unbind("scroll");
                        me.option.loadBtn.removeClass(‘visib‘).unbind(‘click‘).html(‘Stay Tuned !‘);
                        return false;
                    }

                },
                complete: function () {
                    me.option.loadBtn.addClass(‘visib‘);
                }
            });
        }
        window.scrollPage = function (opt) {
            return new scrollPages(opt);
        }
    })(window, jQuery);
    var addpage = scrollPage({
        contentBox: $(‘.images_water‘),
        loadBtn: $(‘.a_load_more‘),
        ajaxUrl: ‘/index.php?com=shots&cat_id=‘ + $(‘#shots_cat‘).val(),
    })
    addpage.init();
</script>
时间: 2024-10-24 13:19:05

数据瀑布流的相关文章

ASP.NET仿新浪微博下拉加载更多数据瀑布流效果

闲来无事,琢磨着写点东西.貌似页面下拉加载数据,瀑布流的效果很火,各个网站都能见到各式各样的展示效果,原理大同小异.于是乎,决定自己写一写这个效果,希望能给比我还菜的菜鸟们一点参考价值. 在开始之前,先把实现的基本原理说一下.当夜幕下拉到底部的时候,js可以判断滚动条的位置,到达底部触发js方法,执行jquery的ajax方法,向后台一般处理程序夜幕ashx文件请求数据源,得到json格式的数据源.然后,遍历json数据源,拼接一个li标签,再填充到页面上去. 首先,我们来做个简单的html页面

代码: 两列图片瀑布流(一次后台取数据,图片懒加载。下拉后分批显示图片。图片高度未知,当图片onload后才显示容器)

代码: 两列图片瀑布流(一次后台取数据,无ajax,图片懒加载.下拉后分批显示图片.图片高度未知,当图片onload后才显示容器) [思路]: 图片瀑布流,网上代码有多种实现方式,也有各类插件.没找到合意的,所以根据网上找的一段代码,进行了较大改动. 需引用 zepto 或 jquery. 我这个是应用于手机上的,两列瀑布流,图片高度未知——等图片的onloaded事件触发后,才对容器进行计算和定位. 大容器是 $("#imgList"),容器格子是$(".pin"

iOS开发UI篇—自定义瀑布流控件(蘑菇街数据刷新操作)

iOS开发UI篇—自定义瀑布流控件(蘑菇街数据刷新操作) 一.简单说明 使用数据刷新框架: 该框架提供了两种刷新的方法,一个是使用block回调(存在循环引用问题,_ _weak),一个是使用调用. 问题:在进行下拉刷新之前,应该要清空之前的所有数据(在刷新数据这个方法中). 移除正在显示的cell: (1)把字典中的所有的值,都从屏幕上移除 (2)清除字典中的所有元素 (3)清除cell的frame,每个位置的cell的frame都要重新计算 (4)清除可复用的缓存池. 该部分的代码如下: 1

分页数据的新展示方式---瀑布流

最近老大让我做一个js效果,要求页面开始展示(比方说40条数据),当鼠标滚动到页面底部时,再加载后面的数据.开始没有半点头绪,想到过jQuery插件,但是也没怎么用起来,还是自己写吧:可以肯定的一条思路是:当滚动页面底部时,肯定是去加载下一页的数据了,这个时候页面应该没有刷新的操作,所以想到了异步Ajax. 代码部分,首先在SQL server中写了一个存储过程, ALTER proc [dbo].[proc_Nav]@pageSize int,                        

瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据

瀑布流加载显示数据,在当下已经用的很普遍,尤其是我们在做网上商城时,在产品列表页面已经被普遍使用. 对于实现瀑布流布局的解决方案主要有以下两种方式: 1.对每一条显示数据使用绝对定位+浮动的方式,这样也会有一个问题----必须要知道每一条信息的具体高宽度 2.采用列布局,将每一条数据依次放置到每一列 其实两者的实现原理都是大同小异,现在我将针对第二种解决方案,用一个具体的事例来说明 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2

sessionStorage用于分页,瀑布流和存储用户数据等

在手机网页开发中,会用到分页和瀑布流来分量显示数据.这里会遇到一个问题.当点击某条数据进入详情后,再按手机的返回键会到上一个页面,该页面是重新加载的. 本人在微信里用内置的qq浏览器打开页面,window.history.back(),window.history.go()这些不说参数会重置,但a标签的target _blank,都无法办法,根本没有新开页面. 于是只要用到sessionStorage了. sessionStorage是html5中类似于session,cookie的东西,能存储

jquery实现瀑布流并与php实现数据交互

以前js 实现过一个瀑布流,jquery 也来实现一个 主要思路: 1  先显示出来大概20张图片,使界面出现滚动条 2 设置显示出来图片父id 设置为relative 定位,图片定位方式为float 定位 3 使刚显示出来的图片作为折叠出现,呈现为瀑布流 4 当滚动 滚动条时,判断是否进行加载图片 5 使新加载的图片重新进行瀑布流排序 重点: 1 判断什么时间进行加载新图片 2 实现瀑布流式排序 怎样确定加载哪部分图片那,在后台limit 一下位置就ok啦 好,上代码: 1 先显示出来部分图片

PSCollectionView瀑布流实现

[-] 一基本原理 二具体实现 相关数据结构 视图更新方式 relayoutViews方法 removeAndAddCellsIfNecessary方法 select方法 重用数据块视图机制 三使用方法 四其他瀑布流实现 PSCollectionView是一个实现较简洁的仿Pinterest瀑布流iOS版实现,使用UIScrollView做容器,每列列宽固定,高度可变,使用方式类似UITableView.其效果如图: 一.基本原理 其基本实现原理为: 列数固定,根据列数每列存储一个当前列的高度值

1、网页后退 2、瀑布流 3、上下左右的阿斯科码值 4、加密技术

1.网页后退 /前进  <a href="javascript:history.go(-1);">后退</a><a href="javascript:history.go(1);">前进</a> 2.瀑布流              瀑布流是目前一种比较流行的页面布局和加载效果.百度,花瓣等一些好的网站都广泛用了这样一种效果,适用于单页面展示对内容的页面.这几天就跟着一些资料学习了一下瀑布流效果的制作.其原理是利用js