瀑布式刷新
2017-04-21 本文已影响135人
Mr绍君
今天来说说页面的瀑布式刷新方法。实现的是一个照片墙效果,然后随着右边滚动条的拉动,图片不断刷新出来,永远也拉不到底。
![](https://img.haomeiwen.com/i2189687/35b0331c58f34f2a.png)
要实现这种效果,我们可以分为两个步骤,先实现照片墙,自动布局效果,然后再实现下拉刷新效果。
照片墙
![](https://img.haomeiwen.com/i2189687/3eed97d154db0275.png)
新建一个页面,我们先添加一些图片内容。
参考上图依次添加,我这里添加了15个。
由于现在我们没有加任何效果,所以图片是依次往下显示的,而且每张图片的大小也不一样。
![](https://img.haomeiwen.com/i2189687/ed5e7324e1ebce9e.png)
所以,我们先给图片添加一些样式。
![](https://img.haomeiwen.com/i2189687/04aedc601994d63b.png)
很简单的一段代码,先给容器设置相对布局,然后给图片固定长度,同时添加一点阴影效果,稍微美化一下。
![](https://img.haomeiwen.com/i2189687/8297bc16e695c024.png)
![](https://img.haomeiwen.com/i2189687/ac9d6e528cca65a4.png)
这样做出来的效果是不会自动布局的,而且也不具备响应式效果。(即页面大小改变时,布局也跟着改变)
所以,我们需要通过JS来实现。(我们先来理一下思路)
之所以页面不具备响应式是因为,当页面宽度改变的时候,我们的容器也跟着页面改变,而图片的大小是固定的,所以我们的页面布局也会发生改变。
因此,我们只需要动态的设置容器的宽度。
![](https://img.haomeiwen.com/i2189687/2401579d54aa8f86.png)
![](https://img.haomeiwen.com/i2189687/1455febfdb27bb0a.png)
接下去,我们要找到第一行中,高度最低的那张图片,然后把后面的图片放到那里去。
![](https://img.haomeiwen.com/i2189687/8649f64bddba2370.png)
![](https://img.haomeiwen.com/i2189687/48943b839410b6cd.png)
现在已经完成了图片的自动布局和响应式功能,我们来看看效果。
![](https://img.haomeiwen.com/i2189687/87f77a4c24cf5896.png)
图片已经实现了自动布局。
- 瀑布式下拉效果
我们也先来理一下思路。想要实现下拉刷新,得在滚轮快要拉到底部的时候,给他动态加载新的图片。
那么,怎么判断页面快要到底部了呢?
我们先来获得几个高度。
![](https://img.haomeiwen.com/i2189687/ef025f3d357e50e8.png)
我们在页面上测试一下。在我轻轻的拉动的时候,三个参数的高度情况。(last_contentheight:scrolltop:pageheight);
![](https://img.haomeiwen.com/i2189687/836e8bb8c6e32b98.png)
所以,我们可以做出如下判断。
![](https://img.haomeiwen.com/i2189687/9277769405797463.png)
当条件达到的时候,我们需要动态的加载图片。
![](https://img.haomeiwen.com/i2189687/85dd7d699002ee5d.png)
图片的数据这里是模拟的json数据。
我们看一下完整代码
![](https://img.haomeiwen.com/i2189687/b7ee1e8e6375ce74.png)
![](https://img.haomeiwen.com/i2189687/d14e574fff430e29.png)