前言
首先,图片瀑布流我看到网上主要有两种,等高不等宽(代表:百度图片)和等宽不等高(代表:LOFTER)。
对于要保证图片顺序的情况,推荐等高不等宽的形式。
对于一个高逼格的照片墙来说,推荐等宽不登高的形式。
PS: 对于需要按照顺序显示的图片,不适合使用图片瀑布流的形式,因为图片瀑布流需要打乱图片顺序。
个人思考实现两种形式
等高不等宽
这里我是直接使用了flex布局,但是有个缺陷是图片会被失去比例缩放。我真正希望实现的百度图片里面的效果,后面再研究下。
1 |
|
等宽不等高
众所周知,网页都是横向排列,有一个叫“基线”的东西,类似英语作业本,不管是行内元素还是块级元素都是只能和在英语本上写字一样,一行一行写,这叫做文档流。而打破的文档流的方式就是定位,所以方法一就是使用定位的方式,算出每个元素的位置。这种方式太不优雅了,所以我放弃。方法二就是改变排版的方向,这里就想到了flex布局和column布局。我这里使用flex布局举个例子,代码如下:
改变排版方向也可以使用:writing-mode: vertical-lr; 但是把里面的元素作为inline了,无法设置宽高,所以需要等宽不能用这个css属性。
1 |
|
总结
我上面的两种方式都有很大的局限性,除了上面所述的问题,也有兼容性的问题。关于等宽不等高的column布局的方式和纯js实现的方式我懒没有自己写了,之后有空再补充。
另外,关于flex语法的详细说明,见:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html
本文链接: http://www.ionluo.cn/blog/posts/21d87fcc.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!