利用jQuery来扩展一个瀑布流插件

 

 

 

 

简单了解jQuery.fn.extend()

jQuery.fn.extend()函数用于为jQuery扩展一个或多个实例属性和方法(主要用于扩展方法)

(截图来自jQuery文档)

为了更清晰的理解我将需求写成了注释

扩展代码如下

 1 (function($){
 2 
 3     $.fn.WaterFall = function () {
 4 
 5         /*
 6          * 瀑布流插件
 7          * 容器的宽度固定
 8          * 子容器的宽度也固定
 9          * 显示多少列固定
10          * */
11 
12         /*初始化的元素 设定的是大容器*/
13         var $parentBox = $(this);/*这里this指向的是设置瀑布流的容器*/
14         var parentWidth = $parentBox.width();/*大容器的宽度*/
15         var $itemsBox = $parentBox.children();/*所有的子容器*/
16         var itemWidth = $itemsBox.width();/*子容器的宽度*/
17         var col = 5 ;/*列数*/
18         var space = (parentWidth - col*itemWidth)/(col-1);/*间距*/
19 
20         /*布局 定位*/
21 
22         /*记录每一列的高度*/
23 
24         var arrHeight = [];
25         $itemsBox.each(function (index, item) {
26             /*每一个子容器*/
27             var $item = $(item);
28             //console.log(index,item);
29             /*前五个*/
30             if(index < col){
31                 /*记录arrHeight*/
32                 arrHeight[index] = $item.height();
33                 $item.css({top:'0',left:(itemWidth+space)*index});
34             }else{
35                 /*其他的子容器*/
36                 /*找到最矮的一列*/
37                 /*当前这列的高度 和 索引*/
38                 var minHeight = arrHeight[0];
39                 var minIndex = 0;
40                 for(var i=0;i<arrHeight.length;i++){
41                     if(minHeight > arrHeight[i]){
42                         minHeight = arrHeight[i];
43                         minIndex = i;
44                     }
45                 }
46                 /*定位*/
47                 $item.css({top:minHeight+space,left:minIndex*(itemWidth+space)});
48                 arrHeight[minIndex] = minHeight + space + $item.height();
49             }
50         });
51         /*赋值高度*/
52         var maxHeight = arrHeight[0];
53         for(var i = 0 ; i < arrHeight.length ; i++){
54             if(maxHeight < arrHeight[i]){
55                 maxHeight = arrHeight[i];
56             }
57         }
58      $parentBox.height(maxHeight);
59     }
60 
61 })(jQuery);

调用方法的时候记得引入jQuery和扩展好的插件

调用代码如下

 

 1 <!--引入jQuery-->
 2 <script src="js/jquery.min.js"></script>
 3 <!--引入刚刚扩展的瀑布流插件-->
 4 <script src="js/jquery.waterfall.js"></script>
 5 <!--调用方法-->
 6 <script>
 7     window.onload  = function () {
 8         $('要选择的容器').WaterFall();/*js代码里面的this指向的就是这个容器*/
 9     }
10 </script>

需要注意的是必须要在文档加载完成之后调用,否则会造成图片重叠。

 

样式和布局的代码如下,有兴趣的可以看一下(静态的页面,想看用ajax动态添加的可以给我发消息 - -,)

  1 <!doctype html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>Document</title>
  6     <style>
  7         body{
  8             margin: 0;
  9             padding: 0;
 10             font-family: "Microsoft Yahei";
 11             background: #f5f5f5;
 12         }
 13         .container{
 14             width: 1200px;
 15             margin: 0 auto;
 16             padding-top: 40px;
 17         }
 18         .container > .items {
 19             position: relative;
 20         }
 21         .container > .items > .item {
 22             width: 232px;
 23             position: absolute;
 24             box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
 25         }
 26         /*目的是固定高度且不一样*/
 27         .container > .items > .item > img {
 28             width: 100%;
 29             display: block;
 30             height: 250px/*目的是固定高度且不一样*/
 31         }
 32         .container > .items > .item > p {
 33             margin: 0;
 34             padding: 10px;
 35             background: #fff;
 36         }
 37         .container > .btn {
 38             width: 280px;
 39             height: 40px;
 40             margin: 30px auto;
 41             text-align: center;
 42             line-height: 40px;
 43             background-color: #CCC;
 44             border-radius: 6px;
 45             font-size: 24px;
 46             cursor: pointer;
 47         }
 48         .container > .loading {
 49             background-color: transparent;
 50         }
 51 
 52     </style>
 53 </head>
 54 <body>
 55 <div class="container">
 56     <div class="items">
 57         <div class="item">
 58             <img src="images/1.jpg" alt="">
 59             <p>花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。</p>
 60         </div>
 61         <div class="item">
 62             <img src="images/2.jpg" alt="">
 63             <p>花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。</p>
 64         </div>
 65         <div class="item">
 66             <img src="images/3.jpg" alt="">
 67             <p>花非花,雾非雾,夜半来,天明去,来如春梦来如春梦不多时,去似朝云无觅处。</p>
 68         </div>
 69         <div class="item">
 70             <img src="images/4.jpg" alt="">
 71             <p>花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。花非花,雾非雾,去,来如春梦不多时,去似朝云无觅处。</p>
 72         </div>
 73         <div class="item">
 74             <img src="images/5.jpg" alt="">
 75             <p>花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。花非花,雾非雾,夜半来,天明去,,夜半来,天明去,,夜半来,天明去,来如春梦不多时,去似朝云无觅处。</p>
 76         </div>
 77         <div class="item">
 78             <img src="images/6.jpg" alt="">
 79             <p>花非花,雾非雾,夜半来,天明去,来如春梦来如春梦不多时,去似朝云无觅处。</p>
 80         </div>
 81         <div class="item">
 82             <img src="images/7.jpg" alt="">
 83             <p>花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。花非花,雾非雾,去,来如春梦不多时,去似朝云无觅处。</p>
 84         </div>
 85         <div class="item">
 86             <img src="images/8.jpg" alt="">
 87             <p>花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。花非花,雾非雾,夜半来,天明去,,夜半来,天明去,,夜半来,天明去,来如春梦不多时,去似朝云无觅处。</p>
 88         </div>
 89         <div class="item">
 90             <img src="images/9.jpg" alt="">
 91             <p>花非花,雾非雾,夜半来,天明去,来如春梦来如春梦不多时,去似朝云无觅处。</p>
 92         </div>
 93         <div class="item">
 94             <img src="images/10.jpg" alt="">
 95             <p>花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。花非花,雾非雾,去,来如春梦不多时,去似朝云无觅处。</p>
 96         </div>
 97         <div class="item">
 98             <img src="images/11.jpg" alt="">
 99             <p>花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。花非花,雾非雾,夜半来,天明去,,夜半来,天明去,,夜半来,天明去,来如春梦不多时,去似朝云无觅处。</p>
100         </div>
101         <div class="item">
102             <img src="images/12.jpg" alt="">
103             <p>花非花,雾非雾,夜半来,天明去,来如春梦来如春梦不多时,去似朝云无觅处。</p>
104         </div>
105         <div class="item">
106             <img src="images/13.jpg" alt="">
107             <p>花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。花非花,雾非雾,去,来如春梦不多时,去似朝云无觅处。</p>
108         </div>
109         <div class="item">
110             <img src="images/14.jpg" alt="">
111             <p>花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。花非花,雾非雾,夜半来,天明去,,夜半来,天明去,,夜半来,天明去,来如春梦不多时,去似朝云无觅处。</p>
112         </div>
113         <div class="item">
114             <img src="images/15.jpg" alt="">
115             <p>花非花,雾非雾,夜半来,天明去,来如春梦来如春梦不多时,去似朝云无觅处。</p>
116         </div>
117         <div class="item">
118             <img src="images/16.jpg" alt="">
119             <p>花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。花非花,雾非雾,去,来如春梦不多时,去似朝云无觅处。</p>
120         </div>
121         <div class="item">
122             <img src="images/17.jpg" alt="">
123             <p>,雾非雾,夜半来,天明去,,夜半来,天明去,,夜半来,天明去,来如春梦不多时,去似朝云无觅处。</p>
124         </div>
125         <div class="item">
126             <img src="images/18.jpg" alt="">
127             <p>花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。花非花,雾非雾,夜半来,天明去,,夜半来,天明去,,夜半来,天明去,来如春梦不多时,去似朝云无觅处。</p>
128         </div>
129         <div class="item">
130             <img src="images/19.jpg" alt="">
131             <p>花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。花非花,雾非雾,夜半来,天明去,,夜半来,天明去,,夜半来,天明去,来如春梦不多时,去似朝云无觅处。</p>
132         </div>
133         <div class="item">
134             <img src="images/20.jpg" alt="">
135             <p>花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。花非花,雾非雾,夜半来,天明去,,夜半来,天明去,,夜半来,天明去,来如春梦不多时,去似朝云无觅处。</p>
136         </div>
137         <div class="item">
138             <img src="images/21.jpg" alt="">
139             <p>花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。花非花,雾非雾,夜半来,天明去,,夜半来,天明去,,夜半来,天明去,来如春梦不多时,去似朝云无觅处。</p>
140         </div>
141         <div class="item">
142             <img src="images/22.jpg" alt="">
143             <p>花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。花非花,雾非雾,夜半来,天明去,,夜半来,天明去,,夜半来,天明去,来如春梦不多时,去似朝云无觅处。</p>
144         </div>
145         <div class="item">
146             <img src="images/23.jpg" alt="">
147             <p>花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。花非花,雾非雾,夜半来,天明去,,夜半来,天明去,,夜半来,天明去,来如春梦不多时,去似朝云无觅处。</p>
148         </div>
149         <div class="item">
150             <img src="images/23.jpg" alt="">
151             <p>花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。花非花,雾非雾,夜半来,天明去,,夜半来,天明去,,夜半来,天明去,来如春梦不多时,去似朝云无觅处。</p>
152         </div>
153         <div class="item">
154             <img src="images/25.jpg" alt="">
155             <p>花非花云无觅处。花非花,雾非雾,夜半来,天明去,,夜半来,天明去,,夜半来,天明去,来如春梦不多时,去似朝云无觅处。</p>
156         </div>
157         <div class="item">
158             <img src="images/26.jpg" alt="">
159             <p>花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。花非花,雾非雾,夜半来,天明去,,夜半来,天明去,,夜半来,天明去,来如春梦不多时,去似朝云无觅处。</p>
160         </div>
161         <div class="item">
162             <img src="images/27.jpg" alt="">
163             <p>花非花,雾非雾,夜半来,天明去,来如春梦不多时,去似朝云无觅处。花非花,雾非雾,夜半来,天明去,,夜半来,天明去,,夜半来,天明去,来如春梦不多时,去似朝云无觅处。</p>
164         </div>
165     </div>
166     <div class="btn loading">正在加载中...</div>
167 </div>
168 <script src="js/jquery.min.js"></script>
169 <script src="js/jquery.waterfall.js">
170 
171 </script>
172 <script>
173 window.onload  = function () {
174     $('.items').WaterFall();
175 }
176 </script>
177 </body>
178 </html>
点击查看(静态)

 

整体效果如下:

 

 

 

 

注:简单扩展,仅供学习参考

需要更好更全面的插件可以去  ----->>>   http://www.jq22.com/

 

posted @ 2016-12-16 20:03  Red丶  阅读(1003)  评论(0编辑  收藏  举报