类似Pinterest的瀑布流布局

原算法可能会产生一个问题,列之间的高度差会很大。新算法进行了改进,会使得高度差进可能小,达到高度平衡。基本思想是,每次计算一个块的top时,寻找高度最小的那一列。看了实验结果,新算法还不是最优的。

 

 

function buildWaterFall(params) {
	if (! IK.isset(params)) {
		return;
	}

	var colsBlockId = params.id;
	var colCount = params.count;
	var margin = params.margin;

	var container = $("#" + colsBlockId);
	if (container.length == 0) {
		return;
	}
	
	if (colCount < 1) {
		colCount = 1;
	}

	if (! IK.isset(margin)) {
		margin = 20;
	}
	
	var columns = container.children();
	if (columns.length < 1) {
		return;
	}

	var colTops = [];
	for(var i = 0; i < colCount; i++) {
		colTops[i] = 0;
	}
	var colWidth = $(columns[0]).width() + margin;

	function getPosition(colHeight) {
		var diff = 0;
		var index = 0; // 这里其实只需要找高度最小的列就行
		for(var i = 0; i < colCount - 1; i++) {
			for (var j = i + 1; j < colCount; j++) {
				var df = colTops[i] - colTops[j];
				var abDiff = Math.abs(df);
				if (diff < abDiff) {
					diff = abDiff;
					index = df < 0 ? i : j;
				}
			}
		}

		var left = colWidth * index;
		var top = colTops[index];
		if (IK.isset(colHeight)) {
			colTops[index] += colHeight + margin;
		}
		return {'left': left + 'px', 'top': top + 'px'};
	}
	
	for(var i = 0; i < columns.length; i++) {
		var col = $(columns[i]);
		var url = col.attr('url');
		if (IK.isset(url)) {
			col.click(function(){
				Util.redirect($(this).attr('url'));
			});
		}
		
		var style = getPosition(col.height());
		col.css(style).show();
	}

	var maxHeight = 0;
	for(var i = 0; i < colCount; i++) {
		if (maxHeight < colTops[i]) {
			maxHeight = colTops[i];
		}
	}
	container.height(maxHeight + 'px');
}, /* buildWaterFall */
 

 

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
	<title>Water fall demo</title>
	<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
	<style>
		.columns {border: 1px solid blue; float: left; min-height: 200px; position: relative; width: 100%;}
		.column {border: 1px solid red; display: none; margin: 10px; position: absolute; width: 100px;}
	</style>
</head>
<body>
	<div id="columns" class="columns">
		<div class="column" style="min-height: 100px;"></div>
		<div class="column" style="min-height: 200px;"></div>
		<div class="column" style="min-height: 150px;"></div>
		<div class="column" style="min-height: 180px;"></div>
		<div class="column" style="min-height: 130px;"></div>
		<div class="column" style="min-height: 140px;"></div>
		<div class="column" style="min-height: 120px;"></div>
	</div>

<script type="text/javascript">
	function buildWaterFall(colsBlockId, colCount, margin) {
		if (colCount < 1) {
			colCount = 1;
		}
		
		if (typeof margin == 'undefined' || margin < 0) {
			margin = 10;
		}

		var container = $("#" + colsBlockId);
		var columns = container.children();
		var left = 0, top = 0;
		var i = 0;
		var maxHeight = 0;
		while(i < columns.length) {
			var col = $(columns[i]);
			col.attr('id', i);
			col.css({
				'left': left + 'px',
				'top': top + 'px'
			}).show();
			
			var mh = computeScrollTop(col) + margin;
			if (maxHeight < mh) {
				maxHeight = mh;
			}
			
			i++;
			
			if (i % colCount == 0) {
				left = 0;
			} else {
				left += col.scrollLeft() + margin + col.width();
			}

			var aboveIndex = i - colCount;
			if (aboveIndex >= 0) {
				top = computeScrollTop($(columns[aboveIndex])) + margin;
			}
		}
		
		container.height(maxHeight + margin + 'px');
	}
	
	function computeScrollTop(elem) {
		// the JQuery method 'scrollTop()' sometimes can't get the expected result,
		// especially when the columns is less than 3.
		var h = elem.css('top');
		if (typeof h != 'undefined') {
			h = parseInt(h.replace('/px/', ''));
		} else {
			h = 0;
		}
		return h + elem.height();
	}
	
	buildWaterFall('columns', 4);
</script>
</body>
</html>
SoC设计中的RDC陷阱:如何避免异步复位导致的亚稳态问题 本文深入探讨了SoC设计中由异步复位引发的复位域交叉(RDC)陷阱及其导致的亚稳态风险。通过分析实际案例,文章系统性地提出了以同步复位优先、异步复位同步释放为核心的设计原则,并介绍了电路级加固与验证策略,为构建稳健的SoC复位架构提供了实用指南。 阅读详情

相关推荐

THUCNews新闻文本分类-tfidf+sklearn

本文使用的是和鲸社区现有数据集,代码也在和鲸社区公开,fork之后可以直接运行。 本文中所用的数据集清华NLP组提供的THUCNews新闻文本分类数据集的一个子集(原始的数据集大约74万篇文档,训练起来需要花较长的时间)。 本次训练使用了其中的体育, 财经, 房产, 家居, 教育, 科技, 时尚, 时政, 游戏, 娱乐10个分类,每个分类6500条,总共65000条新闻数据。项目在和鲸社区的平台上跑的,数据集直接引用了和鲸的数据集,每个分类6500条,总共65000条新闻数据。 数据集划分如下: cnews

wmq104的博客 4591

Mosaic布局(类似于瀑布流)

在Custom Collection View Layout讲到了一个mosaic布局,类似于常见的瀑布流最终的效果如下:Mosaic布局(类似于瀑布流)文档摘录官方文档内容Creating Custom Layouts理解核心布局的过程在布局处理的过程中,collectionview调用布局对象指定方法,其调用的顺序如下:1.使用prepareLayout方法执行提供布局信息所需的前期计算 2.

了凡 2100

RV1126B SDK移植实战:从DDR配置到USB烧写全解析

本文详细解析了RV1126B SDK移植的核心实战流程,重点攻克了DDR初始化失败与USB烧写两大难题。文章从理解启动流程入手,提供了DDR配置错误的排查步骤、SDK编译配置要点,并深入讲解了USB烧写的完整操作与常见问题解决方案,旨在帮助开发者高效完成系统移植与稳定运行。

weixin_29164497的博客 542

仿pinterest实现瀑布流布局效果

在张鑫旭的博客里,有一片文章介绍 瀑布流 实现的文章,(要查看演示,请单击DEMO)本文是在其基础上进行的二次开发,使其更具实用性。     这里,主要涉及数据从数据库里读取,单击图片可以缩放等。 本文附件附带的源代码,有兴趣可以下载看看 下载的程序打开pic.aspx页面显示图片列表(您需要手动输入测试数据)。   单击图片会出现缩放等,除此外,还可以分页,(排序),以及设...

weixin_33859844的博客 374

UNITE真菌数据库使用避坑指南:从下载到注释的完整流程

本文提供了UNITE真菌数据库从下载到注释的完整实战指南。针对真菌ITS序列分析,重点解析了数据库版本选择、格式转换的常见陷阱,并详细介绍了如何训练优化的sklearn分类器以提升物种注释的精度和可靠性,帮助用户构建高效稳定的本地工作流。

weixin_29240343的博客 199

试读源码在这里下载

试读文章的源码在这里下载。源码不做任何修改,重点重点重点:为了代码运行不报错,安装matlab 版本为 2021 及以上版本。matlab安装教程大家可以参考这个教程:手把手教你安装matlab软件。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 4302

8款网页瀑布流布局插件(很不错的效果)

1、waterfall-Jquery瀑布流插件,Jquery瀑流式插件 瀑布流布局在目前貌似很火爆,因为自己用jquery比较多,便萌生了把瀑布流做成插件的想法,图片就借用迅雷UED上的那些美图吧。 2、基于JQuery的自动下拉滚动式瀑布流插件 基于JQuery的自动下拉滚动式瀑布流插件 3、Vanilla Masonry一款JQuery瀑布流插件

相信一切皆有可能 1万+

FFmpeg + Qt 实现摄像头采集与 MP3 背景音乐 RTSP 推流

在直播或视频监控场景中,我们经常需要将摄像头画面与背景音乐混合后推送到 RTSP 服务器。本文将详细介绍如何使用Qt框架结合摄像头实时采集(Windows 下使用dshow,Linux 使用v4l2视频预览(显示为 QImage)视频 H.264 编码 + RTSP 推流从 MP3 文件读取音频,重采样为 AAC 编码并推流循环播放音频文件解决中文文件路径打开失败的问题文章将剖析每个技术环节的关键代码,并给出完整的类实现。

weixin_45397344的博客 504

jQuery制作瀑布流(转)

“瀑布流布局”随着pinterest网的流行而出名,现在国内使用这种风格布局的网站也越来越多,比如说Mark之,蘑菇街,点点网,哇哦等等。我第一次听到这个布局名称是来自于“乔花写的《瀑布流布局浅析一文”,之后在群里也时不时有同学会问有关于这种布局的使用方法。今天我老话重谈,主要向大家介绍一些相关的制作插件,以及成功的案例,希望能给大家今后的工作有所帮助。 制作瀑布流布局的优秀插件 ...

weixin_34202952的博客 575

游戏大厂射击游戏无缝大世界游戏DS服务器架构设计方案详解

摘要: 本文深入解析游戏大厂无缝大世界射击游戏的分布式服务器(DS)架构设计方案。以《和平精英》《量子特攻》为例,阐述如何通过动态分区、兴趣管理、弹性扩缩等核心技术应对高并发、低延迟、无缝切换等挑战。架构分为世界协调层、分区计算层、物理判定层等模块,结合微服务化、快照同步和Kubernetes调度,实现玩家跨区无感知迁移与一致判定。重点优化动态负载均衡、状态同步算法及容灾备份,依托分布式数据库与多云部署保障高可用性,为同类游戏提供可扩展的技术范本。(149字) 关键词: 无缝大世界、分布式服务器、动态分区、

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 563

项目经理必看:如何建立高效的相关方沟通机制?

你是否遇到过这样的场景?客户突然说“这不是我要的”,开发团队抱怨“需求总变”,高层追问“进度滞后为什么不早说”?这些问题的根源往往是——相关方沟通机制失效。本文聚焦“如何建立高效沟通机制”,覆盖从识别相关方到持续优化的全流程,适用于IT、产品、工程等各类项目。本文将按“理解问题→拆解核心概念→掌握工具方法→实战落地→未来趋势”的逻辑展开,重点讲解“相关方分析矩阵”“沟通计划表”等实用工具,并用“组织生日派对”的案例贯穿全文,让抽象概念变得可感知。相关方识别:用“权力/利益矩阵”找对人(像派对邀请关键客人)

项目管理的博客 1295

微信小程序中实现瀑布流布局和无限加载

瀑布流布局是一种比较流行的页面布局方式,最典型的就是Pinterest.com,每个卡片的高度不都一样,形成一种参差不齐的美感。 在HTML5中,我们可以找到很多基于jQuery之类实现的瀑布流布局插件,轻松做出这样的布局形 ... 瀑布流布局是一种比较流行的页面布局方式,最典型的就是Pinterest.com,每个卡片的高度不都一样,形成

大灰狼的小绵羊哥哥的博客 4990

OGRE 3D----2. QGRE + QQuickView

将 OGRE(面向对象图形渲染引擎)集成到使用 QQuickView 的 Qt Quick 应用程序中,可以在现代灵活的 UI 框架中提供强大的 3D 渲染功能。本文将指导您如何在 QQuickView 环境中设置 OGRE。

charce_you的专栏 913

快速集成CHTCollectionViewWaterfallLayout:打造优雅瀑布流布局的终极指南

想要为你的iOS应用添加像Pinterest那样美观的瀑布流布局吗?CHTCollectionViewWaterfallLayout正是你需要的解决方案!这个强大的UICollectionViewLayout子类专门为创建多列、高度自适应的瀑布流界面而设计,让你的应用瞬间提升视觉体验。🎯 ## 什么是CHTCollectionViewWaterfallLayout? CHTCollectio

gitblog_00504的博客 918

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

瀑布流布局 vue.js_Vue.js的瀑布式布局组件

瀑布流布局 vue.js Vue瀑布 (vue-waterfall) 演示版 (Demo) Vertical line 垂线 Horizontal line 水平线 翻译自: https://vuejsexamples.com/a-waterfall-layout-component-for-vue-js/瀑布流布局 vue.js...

cuk5239的博客 562

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

瀑布流布局

瀑布流布局最近做项目的时候,发现好多的人的都是用jquery插件做这个效果的 本来我也打算用jquery插件的,但是我的demo有一插件是zepto.js的插件 再要是载入jquery 的话,有冲突了 报各种的错误,只能用css3了。 用CSS3属性来做 是先从上到下 然后才从左到右排序的 而传统排序是的从左到右的 ,pinterest的瀑布流布局 能用到 电商 新闻 图片集等<!DOCTYPE

u010688943的博客 295

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

如果你也想做一个Pinterest?

文章来源:http://www.chuangyejia.com/index.php?m=content&c=index&a=show&catid=23&id=5626&page=3 如果你也想做一个Pinterest?   如果你也想做一个Pinterest,我认为你可以考虑先从以下几件事开始:   先注册Pinterest(理论上现在应该是登记邀请马...

weixin_34128501的博客 512

iOS瀑布流布局终极指南:CHTCollectionViewWaterfallLayout完全解析

CHTCollectionViewWaterfallLayout是一个专门为UICollectionView设计的瀑布流布局库,能够实现类似Pinterest的图片展示效果。本文将为你提供完整的iOS瀑布流布局实现教程。 ## 🚀 快速入门:5分钟搭建瀑布流 ### 环境准备 首先需要获取项目源码: ```bash git clone https://gitcode.com/gh_mirro

gitblog_01179的博客 443

iPhone瀑布流实现

在网上有现成的瀑布流实现方法,但我还是犯贱,自己写了一个WaterfallView。 总体思路: 瀑布流视图继承于UIScrollView,在其中创建一个普通的UIView对象waterView,然后再在waterView中创建瀑布流的各个显示图像的元素,即WaterfallCell的对象。 实现方法: 首先实现瀑布流元素类WaterfallCell,这个类可以

hornetyq的专栏 1376

关于瀑布流

最近公司新上线的O2O网站,首页就是大量的图片和简单的介绍。我总感觉自己做了个瀑布流,可是上网查了一下,感觉还是不一样的,主要可能我这个就是太简单了。呵呵 我的伪瀑布流的图片的像素没有要求很高,所以瀑布流的照片首先就要漂亮,可能就达不到。其次瀑布流的图片都规定宽度,但不限制高度的。我的宽度,高度都规定成一致的, 其实比较像团购那样,一列一列,但是列的数量是没有限制的,可以适应屏幕。最少两列,最

木木子的web乐趣世界 1012

瀑布流

https://github.com/huewu/PinterestLikeAdapterViewhttps://github.com/GDG-Korea/PinterestLikeAdapterView 转载于:https://blog.51cto.com/caifly/1561049

weixin_34261739的博客 120

android中最好的瀑布流控件PinterestLikeAdapterView

使用方法类似于ListView下面是我使用该控件实现一个显示系统图片的简单应用: xml中: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 "1.0" encoding="utf-8"?> "http://schemas.android.com/apk/res/andro

Botolf Wang的博客 831

【jQuery插件】用jQuery Masonry快速构建一个pinterest网站布局

转自:http://www.css88.com/archives/3321前段时间领导给我看了一个网站:http://pinterest.com/,Pinterest 这个名字还算容易理解:「Pin」就是用图钉往墙上钉东西,「interest」就是趣味。通过 Pinterest ,你可以:1) 发现有趣的图片——设计、摄影、产品、新闻——并刺激灵感;2) 将有趣的图片归类——tag、board、category、source——并分享给好友。一打开Pinterest你会被那些漂亮的图片和网站的杂志风格所吸引

meikidd的专栏 1009

Metro风兼搭HTML5瀑布流布局效果

<!doctype html> <html> <head> <meta charset="UTF-8" /> <title>Metro风兼搭HTML5瀑布流布局效果丨</title> <style> body{background:#000;} ...

weixin_30908649的博客 186

html+css 实现文字超过两行隐藏并三个点表示更多...

<div class="info"><p>瀑布流布局有一个专业的英文名称Masonry Layouts。简言之像Pinterest网站这样的布局就称之为瀑布流布局,也有人称之</p></div> .info{ width:100px; word-break:break-all; display:-webkit-bo...

Fting 1万+
上一篇: 手机Web版浏览产品分类
下一篇: Loading bar made in Canvas
ucdream
博客等级 码龄21年 11粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值