瀑布流布局

简介: 瀑布流布局


瀑布流原理:


  

瀑布流是为了解决一次性加载数据比较慢而设计的。其原理类似于数据列表分页,但是事件对象不一样,一个是click事假,另一个是mousescroll事件。瀑布流是当用户滚动一定距离时向服务端请求数据加载进来。下面是一个瀑布流的Demo:


1 <!DOCTYPE html>
  2 <html>
  3     <head>
  4         <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
  5         <style>
  6             .content {
  7                 width: 230px;
  8                 height: 300px;
  9                 margin: 0 auto;
 10                 border: 1px solid;
 11                 overflow-y: auto;
 12             }
 13             .content ul li {
 14                 list-style: none;
 15             }
 16         </style>
 17     </head>
 18     <body>
 19         <div class="content">
 20             <ul id="list">
 21                 <li>
 22                     这是一条模拟数据
 23                 </li>
 24                 <li>
 25                     这是一条模拟数据
 26                 </li>
 27                 <li>
 28                     这是一条模拟数据
 29                 </li>
 30                 <li>
 31                     这是一条模拟数据
 32                 </li>
 33                 <li>
 34                     这是一条模拟数据
 35                 </li>
 36                 <li>
 37                     这是一条模拟数据
 38                 </li>
 39                 <li>
 40                     这是一条模拟数据
 41                 </li>
 42                 <li>
 43                     这是一条模拟数据
 44                 </li>
 45                 <li>
 46                     这是一条模拟数据
 47                 </li>
 48                 <li>
 49                     这是一条模拟数据
 50                 </li>
 51                 <li>
 52                     这是一条模拟数据
 53                 </li>
 54                 <li>
 55                     这是一条模拟数据
 56                 </li>
 57                 <li>
 58                     这是一条模拟数据
 59                 </li>
 60                 <li>
 61                     这是一条模拟数据
 62                 </li>
 63                 <li>
 64                     这是一条模拟数据
 65                 </li>
 66                 <li>
 67                     这是一条模拟数据
 68                 </li>
 69                 <li>
 70                     这是一条模拟数据
 71                 </li>
 72                 <li>
 73                     这是一条模拟数据
 74                 </li>
 75                 <li>
 76                     这是一条模拟数据
 77                 </li>
 78                 <li>
 79                     这是一条模拟数据
 80                 </li>
 81             </ul>
 82         </div>
 83         <script src="js/jquery.min.js"></script>
 84         <script>
 85             $(".content").scroll(function() {
 86                 //滚动到距离底部h高度时加载
 87                 var h = 269,i=0;
 88                 //滚动条距离底部还有多少像素的时候加载
 89                 console.log($("#list").height() - $(".content").scrollTop());
 90                 if ($("#list").height() - $(".content").scrollTop() < h) {
 91                     // 如果请求服务器端数据,执行下面这段代码,传入的参数代表页数
 92                     /*remoteload(++i);*/
 93                     //如果是本地模拟,执行下面代码
 94                     for(var j = 0; j < 10; j++) {
 95                         $('<li>这是一条模拟数据</li>').appendTo($('#list'));
 96                     }
 97                 }
 98             });
 99 
100             function remoteload(page) {
101                 $.ajax({
102                     url: 你的接口+'?page='+page
103                 })
104                 .done(function() {
105                     //和本地模拟处理一样
106                 });
107             }
108         </script>
109     </body>
110 </html>


瀑布流布局:


  

有两种样式的布局,一种像蘑菇街这种高宽固定的


image.png

  另一种就像淘宝高度不统一的

image.png


 

对于上面那种高宽都统一的,有几种实现方式:


  • 将各列固定宽度,并且左浮动就可以了
  • 绝对定位
  • CSS3,如下


1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
 5         <style>
 6             #content {
 7                 -webkit-column-count: 3; /* 列数 */
 8                 -webkit-column-gap: 20px; /* 列间隔 */
 9                 -webkit-column-rule: 1px solid red; /* 间隔边线 */
10                 -webkit-column-width: 150px; /* 列宽 */
11 
12                 -moz-column-count: 3;
13                 -moz-column-gap: 20px;
14                 -moz-column-rule: 1px solid red;
15                 -moz-column-width: 150px;
16 
17                 column-count: 3;
18                 column-gap: 20px;
19                 column-rule: 1px solid red;
20                 column-width: 150px;
21             }
22         </style>
23     </head>
24     <body>
25         <div id="content">
26             <div>
27                 瀑布流布局1
28             </div>
29             <div>
30                 瀑布流布局2
31             </div>
32             <div>
33                 瀑布流布局3
34             </div>
35             <div>
36                 瀑布流布局4
37             </div>
38             <div>
39                 瀑布流布局5
40             </div>
41             <div>
42                 瀑布流布局6
43             </div>
44             <div>
45                 瀑布流布局7
46             </div>
47             <div>
48                 瀑布流布局8
49             </div>
50             <div>
51                 瀑布流布局9
52             </div>
53         </div>
54     </body>
55 </html>


相关文章
|
7月前
|
前端开发 JavaScript
前端必看的8个HTML+CSS技巧 (八)瀑布流布局
前端必看的8个HTML+CSS技巧 (八)瀑布流布局
161 0
|
前端开发 容器
前端CSS居中布局
前端CSS居中布局
90 0
|
4月前
瀑布流布局
瀑布流布局
39 0
|
7月前
|
Android开发
Android布局——帧布局、表格布局、网格布局
Android布局——帧布局、表格布局、网格布局
|
7月前
|
前端开发
两栏布局的实现
两栏布局的实现
|
7月前
|
前端开发
前端三栏布局(包括圣杯,双飞翼)
前端三栏布局(包括圣杯,双飞翼)
圣杯布局和双飞翼布局
圣杯布局和双飞翼布局
|
安全 容器
由圣杯布局引发的思考
今天在MDN看到块格式化上下文有点不以为然,关键是它写的高深莫测,读不懂... 于是下午想试试圣杯布局的时候,终究还是逃不过它。🤣 这里不介绍圣杯布局的历史,这样的文章网上不知道多少篇,我来写写千篇一律中的亮点吧,哈哈。
58 0
|
前端开发 开发者 容器
前端CSS居中布局(下)
前端CSS居中布局
72 0
|
前端开发 容器
前端CSS居中布局(上)
前端CSS居中布局
64 0