首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

多栏布局JS实现瀑布

css3属性之多栏布局JS实现瀑布    背景:之前打算自己总结一下flex布局的知识点,发现自己无从下手,原因在何处:我反思了一下,其实原因很简单,使用的次数少,更多的时间使用了百分比,浮动和定位解决...column-width宽度时,同时设置盒子的width,否则宽度默认为100%,每栏宽度按栏数平均分;盒子每栏宽度必须大于等于column-width设定的值,否则就会减少栏数来增加每栏宽度 css3多列和JS...实现瀑布  给自己安利一波吧,看到网上很多瀑布的效果,哇,简直棒极了有没有;于是我迫不及待的打开V**,打开了pinterest的官网。...自己也梳理梳理逻辑: 我们都不陌生瀑布是同宽的,但是高度不一,js主要的工作就是根据高度来进行布局, 1)当一行排满后,准备排第二行的时候,....box .pic img { display: block; width: 100%; } 梳理完了逻辑,该动手写js

2.9K90
您找到你想要的搜索结果了吗?
是的
没有找到

分享:纯 css 瀑布js 瀑布

博客地址:https://ainyi.com/60 分享一次纯 css 瀑布  和 js 瀑布 纯 css 写瀑布 1.multi-columns 方式: 通过 Multi-columns 相关的属性... column-count、column-gap 配合 break-inside 来实现瀑布布局。...看到这里,我们可以发现,使用纯 css 写瀑布,每一块 item 都是从上往下排列,不能做到从左往右排列: ? 这样子若是动态加载图片的瀑布,体验就会很不好 我们想要的是这样: ?...这样做只能通过 js 来写瀑布 js瀑布: html 结构与上面类似,这里我用图片来做示例: 1 2 <...瀑布实现方式: css 的绝对定位方式:根据每张图片的位置设置 top 和 left 值: 1 //瀑布效果 2 //这里有一个坑(已经修复): 3 //因为是动态加载远程图片,在未加载完全无法获取图片宽高

8.7K40

iOS 瀑布之栅格布局

:1)、纵长方形(1:2),动态的根据服务器下发模块样式绘制布局,可以横向滑动,限定为两行的高度。...答案当然是用UICollectionView了,然后自定义流水布局UICollectionViewLayout,主要代码如下:计算记录每一个cell对应的布局属性。...这个样式的栅格布局我已封装集成在WSLWaterFlowLayout 中,详情可以前往下载。...CGRectMake(x, y, w, h); } 后台下发字段格式示意图 功能描述:WSLWaterFlowLayout 是在继承于UICollectionViewLayout的基础上封装的带头脚视图的瀑布控件...目前支持竖向瀑布(item等宽不等高、支持头脚视图)、水平瀑布(item等高不等宽 不支持头脚视图)、竖向瀑布( item等高不等宽、支持头脚视图)、栅格布局瀑布 4种样式的瀑布布局

1.7K10

分享一次纯 css 瀑布js 瀑布

博客地址:https://ainyi.com/60 现在百度图片,360 图片搜索,都是以一种瀑布的形式展示,那么接下来,分享一波纯 css 瀑布js 瀑布 纯 css 写瀑布 multi-columns...方式 通过 Multi-columns 相关的属性 column-count、column-gap 配合 break-inside 来实现瀑布布局。...同样的,响应式设置,使用 Flexbox 实现响应式布局比多列布局 Multi-columns 要来得容易,他天生就具备这方面的能力,只不过我们这里需要对容器的高度做相关的处理。...要实现如上,只能通过 js 来写瀑布 js瀑布 html 结构与上面类似,但这里我用图片来做示例 ...瀑布实现方式 css 的绝对定位方式:根据每张图片的位置设置 top 和 left 值 // 瀑布效果 // 这里有一个坑(已经修复): // 因为是动态加载远程图片,在未加载完全无法获取图片宽高

2.3K40

Swift 自定义布局实现瀑布视图

瀑布视图的惊艳之处就在于它的每个 Cell 的尺寸都是不一致的,那如何生成动态高度的 Cell 呢!...了解完需要实现的函数后,接下来就开始计算瀑布视图的布局属性了,在这里我先讲一下我实现的大概思路吧!...由于我们瀑布视图的每个 Cell 的高度是动态的,为了实现这个需求,我们可以声明一个 protocol 并提供一个返回动态高度的方法,来为每个 Cell 提供动态的高度,代码如下: protocol...,然后并把相交的属性返回 好了,到这里关于瀑布视图的布局就讲完了,附上 WaterFallFlowLayout 的全部代码,供大家参考: import UIKit protocol WaterFallLayoutDelegate...50) } } 将上述代码添加到 Xcode 工程中编译并运行,你就会看到 Cell 根据照片的高度正确放置并设置了大小: 好了, 利用 UICollectionView 控件与自定义布局实现瀑布的内容到此就结束了

2.2K30

分享 1个原生 JS 瀑布案例

瀑布布局中的图片有一个核心特点 —— 等宽不定等高,瀑布布局在国内网网站都有一定规模的使用,比如pinterest、花瓣网等等。那么接下来就基于这个特点开始瀑布探索之旅。...waterfall-box { float: left; width: 200px; padding-left: 10px; padding-bottom: 10px; } 至此完成了瀑布的基本布局...联想到业务场景中瀑布中下拉加载的图片一般都来自 Ajax 异步获取,那么加载的数据必然不能写死在库里,期望能实现如下调用(此处借鉴了 waterfall 的使用方式), const waterfall...waterfall.on("load", function () { // 此处进行 ajax 同步/异步添加图片 }) 观察调用方式,不难联想到使用发布/订阅模式来实现它,关于发布/订阅模式,之前在Node.js

1.8K20

瀑布流式布局怎么实现(什么是瀑布布局)

JS 实现瀑布布局 前言 一、JS 实现瀑布 二、column 多行布局实现瀑布 三、flex 弹性布局实现瀑布 四、3种方式对比 前言 今天逛闲鱼的时候观察到每一行的高度不是相同的,经了解才知道原来这是一种瀑布布局...,感觉挺有意思,于是决定研究一下,在网上也找了一些方案,实现瀑布大概有3种方式。...一、JS 实现瀑布 思路分析 瀑布布局的特点是等宽不等高。 为了让最后一行的差距最小,从第二行开始,需要将图片放在第一行最矮的图片下面,以此类推。...(); } 效果如下 二、column 多行布局实现瀑布 思路分析: column 实现瀑布主要依赖两个属性。...class="item"> 效果如下: 三、flex 弹性布局实现瀑布

1.4K40

原生 JS 实现一个瀑布插件

瀑布布局中的图片有一个核心特点 —— 等宽不定等高,瀑布布局在国内外网站都有一定规模的使用,比如pinterest、花瓣网等等。那么接下来就基于这个特点开始瀑布探索之旅。...waterfall-box { float: left; width: 200px; padding-left: 10px; padding-bottom: 10px; } 至此完成了瀑布的基本布局...联想到业务场景中瀑布中下拉加载的图片一般都来自 Ajax 异步获取,那么加载的数据必然不能写死在库里,期望能实现如下调用(此处借鉴了 waterfall 的使用方式), const waterfall...waterfall.on("load", function () { // 此处进行 ajax 同步/异步添加图片 }) 观察调用方式,不难联想到使用发布/订阅模式来实现它,关于发布/订阅模式,之前在 Node.js

2.3K40

浅析瀑布布局及其原理视频_jquery瀑布布局

一、什么是瀑布 很多时候我们会看到一些Vlog网站或者展示图片的网站,它们的图片明明每一张的高度大小都不同,但是却能自动地适应,排成一行一行地展示,并且下拉到底的时候,加载的图片也会自动适应,这就是瀑布...二、实现原理 要做到每一张图片都根据上面的高度自动适应排列,那么我们就不能单纯地靠html+css布局了,需要用到js来帮助计算位置(其实用CSS3也能布局)。那么计算什么呢?...四、瀑布的核心 实现瀑布的核心其实就两个: 找出图片高度最小的那一列,再那一列插入,然后继续找下一个高度最小的,一直循环直到插满图片为止; 计算出每一列距离浏览器整体的距离,也就是position里的...true:false; } // 追加瀑布效果 function appendBox(wrap,boxes){ // 先判断是否展示到了底部 if(getBottom(wrap)){ for (i in...div>" wrap.append(addstr) } }else{ return false } waterfall(wrap,wrap.children('div')) } 注意:这里面我还加入了瀑布追加的效果

1.4K20

瀑布布局方案

调研: 1、蘑菇街/堆糖/花瓣:absolute 2、手淘:flex,但不算瀑布,每个card高度一样 一、使用flex布局(最妥当) 核心: 1、div分两列 2、遍历数据分两组 3、每次渲染完...) this.data2 = JSON.parse(JSON.stringify(data2)) }, ---- 二、使用column(最先进——纯css) 1、核心 multi-column实现瀑布主要依赖以下几个属性...列数由总宽度与每列宽度计算得出 column-gap: 设置列与列之间的间距 2、避免断层 1)表现: 最后一个元素的文本内容被自动断开,一部分在当前列尾,一部分在下一列的列头 2)原因: multi-column布局会将其内的元素自动进行流动和平衡...兼容性一般:column-fill: balance 只在firefox下支持,大部分浏览器只支持默认的column-fill: fill,就只能先渲染完第一列再渲染第二列 2、不适合需要顺序展示的双瀑布...---- 三、使用absolute布局(最古早) 利: 1、一般不会出错的方案 弊: 1、代码繁琐 ---- 参考: https://juejin.cn/post/6844904142058553358

1.3K20

iOS 瀑布封装

[瀑布.gif] 功能描述:WSLWaterFlowLayout 是在继承于UICollectionViewLayout的基础上封装的带头脚视图的瀑布控件。...目前支持竖向瀑布(item等宽不等高、支持头脚视图)、水平瀑布(item等高不等宽 不支持头脚视图)、竖向瀑布( item等高不等宽、支持头脚视图)三种样式的瀑布布局。...下面是WSLWaterFlowLayout.h中的属性方法和代理方法,含义注释的还算清晰: typedef enum { WSLVerticalWaterFlow = 0, /** 竖向瀑布...item等宽不等高 */ WSLHorizontalWaterFlow = 1, /** 水平瀑布 item等高不等宽 不支持头脚视图*/ WSLVHWaterFlow = 2, /...** 竖向瀑布 item等高不等宽 */ WSLLineWaterFlow = 3 /** 线性布局 待完成,敬请期待 */ } WSLFlowLayoutStyle;//样式 @class

1.6K80

iOS 瀑布封装

瀑布.gif 功能描述:WSLWaterFlowLayout 是在继承于UICollectionViewLayout的基础上封装的带头脚视图的瀑布控件。...目前支持竖向瀑布(item等宽不等高、支持头脚视图)、水平瀑布(item等高不等宽 不支持头脚视图)、竖向瀑布( item等高不等宽、支持头脚视图)三种样式的瀑布布局。...下面是WSLWaterFlowLayout.h中的属性方法和代理方法,含义注释的还算清晰: typedef enum { WSLVerticalWaterFlow = 0, /** 竖向瀑布...item等宽不等高 */ WSLHorizontalWaterFlow = 1, /** 水平瀑布 item等高不等宽 不支持头脚视图*/ WSLVHWaterFlow = 2, /...** 竖向瀑布 item等高不等宽 */ WSLLineWaterFlow = 3 /** 线性布局 待完成,敬请期待 */ } WSLFlowLayoutStyle;//样式 @class

2K80

iOS---UICollectionView自定义流布局实现瀑布效果

自定义布局,实现瀑布效果 自定义流水布局,继承UICollectionViewLayout 实现一下方法 // 每次布局之前的准备 - (void)prepareLayout; // 返回所有的尺寸...- (CGSize)collectionViewContentSize; // 返回indexPath这个位置Item的布局属性 - (UICollectionViewLayoutAttributes...:(CGRect)rect; 思路:默认有三列,添加图片时,往三列中最大长度最小的那一列添加, 主要工作就在计算最大Y值,然后布局图片 用一个字典用来存储每一列最大的Y值(每一列的高度) 遍历字典找出最短的那一列...minColumn] floatValue]) { minColumn = column; } }]; 服务端返回的数据,必须包含图片的高度和宽度,以此可以根据宽高比布局...* 这个字典用来存储每一列最大的Y值(每一列的高度) */ @property (nonatomic, strong) NSMutableDictionary *maxYDict; /** 存放所有的布局属性

2K100

Objectiv-c - UICollectionViewLayout自定义布局-瀑布Demo地址

写在前面 弄了下个人站...防止内容再次被锁定...所有东西都在这里面 welcome~ 个人博客 最近刚写的一个简单的瀑布. 整体思路可能不是很完善. 不过也算是实现效果了....瀑布.gif 思路: 自定义UICollectionViewLayout实际上就是需要返回每个item的fram就可以了....UIEdgeInsets edge;//设置边距 @property(nonatomic,strong)iddelegate; @end 由于我们的自定义布局继承...每次布局都会调用 //准备布局做一些准备工作,例如初始化 - (void)prepareLayout; //这个方法在prepareLayout后调用.每次拖动都会调用,有点类似scrollview...CGRectMake(x, y, width, heightAtt); return attrs; } 计算完了就可以让layoutAttributesForElementsInRect设置回布局

49640
领券