zoukankan      html  css  js  c++  java
  • 基于jQuery的简易瀑布流实现

    <!doctype html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>简易瀑布流(基于多栏列表流体布局实现)</title>
        <style type="text/css">
        .WSCWaterfall{
            width: 960px;
            margin: 0 auto;
        }
        .WSCWaterfallCell{
            margin-bottom: 10px;
            padding: 5px 8px;
            line-height: 18px;
            width: 214px;
            border: 1px solid #999;
            border-radius: 4px;
            background-color: #ccc;
            overflow: hidden;
        }
        .WSCWaterfallColumn{
            display: inline-block;
            vertical-align: top;
        }
        .template_div{
            display: none;
        }
        </style>
    </head>
    <body>
        <div class="WSCWaterfall">
        </div>
        <div class="template_div">
            <div class="WSCWaterfallColumn"></div>
            <div class="WSCWaterfallCell"></div>
        </div>
    <script type="text/javascript" src="jquery-2.1.0.min.js"></script>
    <script type="text/javascript">
        
    function WSCWaterFall(arg_obj){
        var data_arr = arg_obj["data_arr"] || [];
        var columnNum = arg_obj["columnNum"] || 4;
        var $WSCWaterfallCell_template = arg_obj["WSCWaterfallCell_template"] || $('.template_div').find(".WSCWaterfallCell");
        var $WSCWaterfallColumn_template = arg_obj["WSCWaterfallColumn_template"] || $('.template_div').find(".WSCWaterfallColumn");
        var $WSCWaterfall =arg_obj["WSCWaterfall_outer"] || $(".WSCWaterfall");
        var waterFallCell = arg_obj["waterFallCell_fn"] ;
    
        var columnArr = [];
        var cellArr = [];
        
    
        // 生成列数组
        for(var j=0; j<columnNum; j++){
            var $WSCWaterfallColumn = $WSCWaterfallColumn_template.clone(true);
            columnArr.push($WSCWaterfallColumn);
        }
    
        // 生成瀑布流单元,用户可自定义
        waterFallCell(data_arr, $WSCWaterfallCell_template, cellArr);
    
        // 列数组和单元数组筛选配对
        for(var k = 0; k < cellArr.length; k++){
            var $WSCWaterfallCell = cellArr[k];
            var index = (k % columnNum);
            try{
                columnArr[index].append($WSCWaterfallCell);
            }
            catch(e){
                console.log(e);
                console.log(index);
            }
        }
    
        // 渲染html页面
        for(var i=0; i< columnArr.length; i++){
            // 可优化的地方,一次append进去,而不是循环append
            $WSCWaterfall.append(columnArr[i]);
        }
    }
    
    // 初始化测试数据
    var data_arr = [];
    for(var i=0; i<50; i++){
        data_arr.push(i);
    }
    
    // data_arr是数据源
    // columnNum 是列数
    // WSCWaterfallCell_template 是 瀑布流单元格的模板jQuery引用
    // WSCWaterfallColumn_template 是 瀑布流列的模板jQuery引用
    // WSCWaterfall_outer 是 包裹瀑布流的jQuery引用
    // waterFallCell_fn 是 渲染瀑布流单元格的方法,其中第三个参数cellArr是指单元格的jQuery引用数组,它根据data_arr和WSCWaterfallCell_template计算出来
    WSCWaterFall({
        "data_arr":data_arr,
        "columnNum":4,
        "WSCWaterfallCell_template" : $('.template_div').find(".WSCWaterfallCell"),
        "WSCWaterfallColumn_template" :$('.template_div').find(".WSCWaterfallColumn"),
        "WSCWaterfall_outer" : $(".WSCWaterfall"),
        "waterFallCell_fn" : function(data_arr, $WSCWaterfallCell_template, cellArr){
            for (var i = 0; i < data_arr.length; i++) {
                var $WSCWaterfallCell = $WSCWaterfallCell_template.clone(true);
                $WSCWaterfallCell.append(i);
                cellArr.push($WSCWaterfallCell);
            }
        }
    });
    
    
    
    </script>
    </body>
    </html>

    封装成jQuery插件如下

    <!doctype html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>封装成jQuery插件,简易瀑布流(基于多栏列表流体布局实现)</title>
        <style type="text/css">
        .WSCWaterfall{
            width: 960px;
            margin: 0 auto;
        }
        .WSCWaterfallCell{
            margin-bottom: 10px;
            padding: 5px 8px;
            line-height: 18px;
            width: 214px;
            border: 1px solid #999;
            border-radius: 4px;
            background-color: #ccc;
            overflow: hidden;
        }
        .WSCWaterfallColumn{
            display: inline-block;
            vertical-align: top;
        }
        .template_div{
            display: none;
        }
        </style>
    </head>
    <body>
        <div class="WSCWaterfall">
        </div>
        <div class="WSCWaterfall">
        </div>
        <div class="template_div">
            <div class="WSCWaterfallColumn"></div>
            <div class="WSCWaterfallCell"></div>
        </div>
    <script type="text/javascript" src="jquery-2.1.0.min.js"></script>
    <script type="text/javascript">
        
    
    
    
    
    // data_arr是数据源
    // columnNum 是列数
    // WSCWaterfallCell_template 是 瀑布流单元格的模板jQuery引用
    // WSCWaterfallColumn_template 是 瀑布流列的模板jQuery引用
    // WSCWaterfall_outer 是 包裹瀑布流的jQuery引用
    // waterFallCell_fn 是 渲染瀑布流单元格的方法,其中第三个参数cellArr是指单元格的jQuery引用数组,它根据data_arr和WSCWaterfallCell_template计算出来
    /*
    WSCWaterFall({
        "data_arr":data_arr,
        "columnNum":4,
        "WSCWaterfallCell_template" : $('.template_div').find(".WSCWaterfallCell"),
        "WSCWaterfallColumn_template" :$('.template_div').find(".WSCWaterfallColumn"),
        "WSCWaterfall_outer" : $(".WSCWaterfall"),
        "waterFallCell_fn" : function(data_arr, $WSCWaterfallCell_template, cellArr){
            for (var i = 0; i < data_arr.length; i++) {
                var $WSCWaterfallCell = $WSCWaterfallCell_template.clone(true);
                $WSCWaterfallCell.append(i);
                cellArr.push($WSCWaterfallCell);
            }
        }
    });
    */
    
    // 初始化测试数据
    var data_arr = [];
    for(var i=0; i<50; i++){
        data_arr.push(i);
    }
    
    (function($){
        $.extend($.fn, {
            "WSCWaterFall": function(options){
                var options = $.extend({
                    "data_arr":[],
                    "columnNum": 4
                }, options);
    
                return this.each(function(index,element){
                    options["WSCWaterfall_outer"] = $(element);
                    WSCWaterFall(options);
                });
            }
        });
    
    
        function WSCWaterFall(arg_obj){
            var data_arr = arg_obj["data_arr"] ;
            var columnNum = arg_obj["columnNum"];
            var $WSCWaterfallCell_template = arg_obj["WSCWaterfallCell_template"] ;
            var $WSCWaterfallColumn_template = arg_obj["WSCWaterfallColumn_template"] ;
            var $WSCWaterfall =arg_obj["WSCWaterfall_outer"] ;
            // var $WSCWaterfall = $(this);
            var waterFallCell = arg_obj["waterFallCell_fn"] ;
    
            var columnArr = [];
            var cellArr = [];
            
    
            // 生成列数组
            for(var j=0; j<columnNum; j++){
                var $WSCWaterfallColumn = $WSCWaterfallColumn_template.clone(true);
                columnArr.push($WSCWaterfallColumn);
            }
    
            // 生成瀑布流单元,用户可自定义
            waterFallCell(data_arr, $WSCWaterfallCell_template, cellArr);
    
            // 列数组和单元数组筛选配对
            for(var k = 0; k < cellArr.length; k++){
                var $WSCWaterfallCell = cellArr[k];
                var index = (k % columnNum);
                try{
                    columnArr[index].append($WSCWaterfallCell);
                }
                catch(e){
                    console.log(e);
                    console.log(index);
                }
            }
    
            // 渲染html页面
            for(var i=0; i< columnArr.length; i++){
                // 可优化的地方,一次append进去,而不是循环append
                $WSCWaterfall.append(columnArr[i]);
            }
        }
    })(jQuery);
    
    $(".WSCWaterfall").WSCWaterFall({
        "data_arr":data_arr,
        "columnNum": 3,
        "WSCWaterfallCell_template" : $('.template_div').find(".WSCWaterfallCell"),
        "WSCWaterfallColumn_template" :$('.template_div').find(".WSCWaterfallColumn"),
        "waterFallCell_fn" : function(data_arr, $WSCWaterfallCell_template, cellArr){
            for (var i = 0; i < data_arr.length; i++) {
                var $WSCWaterfallCell = $WSCWaterfallCell_template.clone(true);
                $WSCWaterfallCell.append(i);
                cellArr.push($WSCWaterfallCell);
            }
        }
    });
    </script>
    </body>
    </html>
  • 相关阅读:
    利用API对OWLS描述的服务进行操作 转贴
    转arcgis server部署 自己安装的体会
    最后一次的温柔
    JUDDI安装完整版 (转帖W3CHINA)
    jUDDI安装总结
    Protege中安装owls editor、graphviz插件
    改完了开题报告 舒口气
    服务组合的QoS信息
    owls editor
    一、性能测试术语
  • 原文地址:https://www.cnblogs.com/samwu/p/3642908.html
Copyright © 2011-2022 走看看