Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >同位素-尝试按原始顺序对项目进行排序。

同位素-尝试按原始顺序对项目进行排序。
EN

Stack Overflow用户
提问于 2015-03-14 09:45:55
回答 1查看 2.5K关注 0票数 1

我是一个新手,在堆叠溢出,也使用Codepen;所以请温和地对待我!

在找到大卫DeSandro的精彩砖石之后,我发现了惊人的同位素。我一直在努力完成(我认为)应该是非常简单的任务,维持项目的原始顺序。在把我的头发扯掉几天(也尝试了Vit‘tasuki’Brunner的砌体)之后--显然我的语法出了问题,请给我任何帮助。

基本上,我有很多页,每个页面都包含一个(不同的)数目的“方框”。每个盒子将有相同的宽度,但不同的高度。这些框需要保持原来的顺序,并在调整窗口大小时保留该顺序。

示例CODEPEN:同位素-尝试按原始顺序对项目进行排序。

这些箱子不会编号--它们只在我的笔里编号以作说明。

HTML:

代码语言:javascript
运行
AI代码解释
复制
<div id="container">

    <div class="prod one"><h1>One</h1></div>
    <div class="prod two"><h1>Two</h1></div>
    <div class="prod three"><h1>Three</h1></div>    
    <div class="prod four"><h1>Four</h1></div>
    <div class="prod five"><h1>Five</h1></div>  
    <div class="prod six"><h1>Six</h1></div>
    <div class="prod seven"><h1>Seven</h1></div>    
    <div class="prod eight"><h1>Eight</h1></div>    
    <div class="prod nine"><h1>Nine</h1></div>
    <div class="prod ten"><h1>Ten</h1></div>
    <div class="prod eleven"><h1>Eleven</h1></div>
    <div class="prod twelve"><h1>Twelve</h1></div>
    <div class="prod thirteen"><h1>Thirteen</h1></div>
    <div class="prod fourteen"><h1>Fourteen</h1></div>
    <div class="prod fifteen"><h1>Fifteen</h1></div>
    <div class="prod sixteen"><h1>Sixteen</h1></div>
    <div class="prod seventeen"><h1>Seventeen</h1></div>        

</div>  <!-- /end container -->

CSS (我在这里道歉-尽管我多次尝试,我的帖子似乎不允许我把它作为代码--尽管它是有效的--请参阅我的CodePen示例)。

联署材料:

代码语言:javascript
运行
AI代码解释
复制
var $container = $('#container');
    // init
    $container.isotope({
    // options
    itemSelector: '.prod',
    layoutMode: 'masonry'
    });

下面的JS工作,但使所有的盒子都一样大小和彼此之间的距离:

代码语言:javascript
运行
AI代码解释
复制
        $('.prod').isotope({
    getSortData: {
    sortBy: 'original-order'
    }
    });

我也尝试使用砖石排序,但得到了同样的结果。我试图复制来自Vit 'tasuki‘Brunner的图片库演示的代码,并尝试为此做笔,但似乎无法使它发挥作用。

我还尝试过在HTML中引导同位素,并认为我的语法没有问题,使用了有效的JSON --但同样没有成功:

代码语言:javascript
运行
AI代码解释
复制
<div id="container" class="js-isotope" data-isotope-options='{ "itemSelector": ".prod", "layoutMode": "masonry", "sortBy": "original-order" }'>

总之,我已经唠叨了很久了。如果有人能向我指出显而易见的事情,我会非常感激的!

谢谢Webbo

EN

回答 1

Stack Overflow用户

发布于 2015-03-16 15:12:36

不幸的是,当使用同位素时,这是一个常见的误解。排序设置仅指定插入元素的顺序。原始顺序意味着元素1放在DOM中的第一个位置,元素2秒等等。每次插入后,算法试图找到最合适的位置。

同位素使用贪婪的第一拟合算法,它将元素从左到右,从上到下。所发生的情况是,在第一行元素(算法到达右侧末尾)之后,它将检查下一行中是否有空闲空间。一旦它找到了一个有空闲空间的行,它就会在那里放置下一个元素(由原始顺序指定)。

这会导致你感知到错误的顺序,这在同位素的意义上是正确的。

示例:

代码语言:javascript
运行
AI代码解释
复制
a  +---+  +---+  +---+
b  | 1 |  | 2 |  | 3 |
c  |   |  |   |  |   |
d  |   |  +---+  |   |
e  |   |  +---+  +---+
f  +---+  | 4 |  +---+
g  +---+  |   |  | 5 |
h  | 6 |  +---+  |   |
   |   |         |   |
   +---+         +---+
  1. 前三个元素是直接向前的,直线a被耗尽。
  2. 元素4被插入到DOM中,同位素搜索适合它的位置。bcd行已经没有空间了。
  3. 算法检查行e,找到空闲空间,并将元素4放在那里。
  4. e行已耗尽,因此元素5将放在下一行。
  5. 最后,元素6放置在具有空闲空间的第一行(g)中。这个位置留给元素45,这些元素看起来像是被洗牌了。

所有算法都能感知到完全相同的情况,这些算法尽可能地填充空间。其原因是,垃圾箱包装(空间最小化的问题)和订单在本质上是完全正交的。

如果你想两者兼而有之,你必须做出妥协。幸运的是,同位素实现了这样的妥协。例如,布局模式fitRows保持排序,同时仍然最小化水平空间。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29052151

复制
相关文章
【QT】QT文件处理
QFile类用于文件操作,它提供了读写文件的接口,可以读写文件、二进制文件和Qt资源文件。
半生瓜的blog
2023/05/13
1.6K0
【QT】QT文件处理
Python Qt GUI设计:QCalendar日历类和QDateTimeEdit时间类(基础篇—20)
QCalendar是一个日历控件,它提供了一个基于月份的视图,允许用户通过鼠标或键盘选择日期,默认选中的是今天的日期。也可以对日历的日期范围进行规定。
不脱发的程序猿
2021/10/26
2.5K0
Qt编写自定义控件65-光晕日历
操作系统的更新迭代速度非常快,基本上三五年就有个新版本出来,WIN10操作系统还是一个比较成功的系统,据说现在市场份额越来越大,XP的份额已经很小,WIN7的份额也在逐步减少,在最新的WIN10系统中,右下角有个日历控件,还是自带农历的,这个本地化做的蛮好的,鼠标移上去还有光晕背景效果,体验非常赏心悦目,于是打算用Qt也高仿一个。
feiyangqingyun
2019/10/16
2.3K0
Qt编写自定义控件65-光晕日历
Python高级进阶#018 pyqt5日历控件QCalendarWidget应用
问题是在我们的槽方法中无法对日期进行代码提示,关键的技巧就是对参数重新格式化为QDate类型就可以了。
刘金玉编程
2019/11/09
1.4K0
Python高级进阶#018 pyqt5日历控件QCalendarWidget应用
PyQt5 文档打印
本篇通过Python3+PyQt5实现《python Qt Gui 快速编程》这本书13章文档打印功能。本文共通过三种方式: 1,使用HTML和QTextDOcument打印文档,最简单 2,使用QTextCusor和QTextDocument打印文档 3,使用QPainter打印文档 使用Qpainter打印文档比QTextDocument需要更复杂的计算,但是QPainter确实能够对输出赋予完全控制。
用户6021899
2019/08/14
1.4K0
PyQt5 日历控件(QCalendarWidget)
点击日期时会发射.clicked 信号,信号参数类型为PyQt5.QtCore.QDate
用户6021899
2019/08/14
2K0
python pyqt5 QCalendar
setDateRange() setMinimumDate() setMaxmumDate() setSelectedDate()
用户5760343
2019/07/05
5540
Qt Designer基本控件介绍——Display Widgets(显示小部件)
Label : 标签 QLabel的作用: 占位符 显示文本 显示图片 放置gif动画 超链接 提示标记 常用方法: text():获得Qlabel的文本内容 setText():设置Qlabel的文本内容 selectedText():返回所选择的字符 信号: linkActiveted:当单击标签中的超链接,希望在新窗口打开这个超链接时,setOpenExternalLinks特性必须设置为True,即setOpenExternalLinks(True) linkHovered:当鼠标指针滑过标签中
Elsa_阿尼
2021/07/12
8.7K0
Qt Designer基本控件介绍——Display Widgets(显示小部件)
Qt日期时间类相关知识
1. 获取当前日期时间: QDateTime::currentDateTime(); 2. 格式化输出指定格式时间: QDateTime().toString("yyyy.MM.dd hh:mm:ss.zzz") yyyy表示年; MM表示月; dd表示日; hh表示小时; mm表示分; ss表示秒; zzz表示毫秒 3. 输出制定值: QDate().year();//年 QDate().month();//月 QDate().day();//日 QTime().hour()
Qt君
2019/07/15
9310
04 qt功能类、对话框类和文件操作
对于Qt而言,在实际的开发过程中, 1)开发者可能知道所要使用的类 ---- >帮助手册 —>索引 -->直接输入类名进行查找 2)开发者可能不知道所要使用的类,只知道开发需求文档 ----> 帮助 手册,按下图操作:
天天Lotay
2023/10/15
2550
04 qt功能类、对话框类和文件操作
toString和遍历
ha_lydms
2023/08/10
1720
toString和遍历
qtcpsocket编程_qtcpsocket判断连接状态
QTcpSocket 和 QTcpServer类实现了Qt的Tcp客户端和服务器。
全栈程序员站长
2022/10/01
2.5K0
Qt 实现视频监控系统
二、功能特点 (一)软件模块 视频监控模块,各种停靠小窗体子模块,包括设备列表、图文警情、窗口信息、云台控制、预置位、巡航设置、设备控制、悬浮地图、网页浏览等。 视频回放模块,包括本地回放、远程回放、设备播放、图片回放、视频上传等。 电子地图模块,包括图片地图、在线地图、离线地图、路径规划等。 日志查询模块,包括本地日志、设备日志等。 系统设置模块,包括系统设置(基本设置、视频参数、数据库设置、地图配置、串口配置等)、录像机管理、摄像机管理、轮询配置、用户管理等。 (二)基础功能 支持各种视频流(rtsp、
派大星在吗
2021/12/15
3K0
Qt开源作品22-运行时间记录类
在早期开发的软件中,尤其是初学者入门者写的软件,软件运行久了,难免遇到意外崩溃的时候,可是大部分的运行设备可能在现场客户那,需要记住每一次从软件启动后到软件意外关闭前的运行时间,需要记录的信息包括:编号+开始时间+结束时间+已运行时间,每次完整的运行过程只产生一条记录,每次运行时间改变以后更新当前这条记录即可。这样就可以确切的了解到软件在现场的真实运行情况是否糟糕,如果没有这个记录(当然可以选择记录存储到数据库),程序又重启恢复了,也不知道到底每次运行了多久,从几点到几点。为了写的简单点,不干扰原有的数据库文件,我一般选择输出到文本文件。
feiyangqingyun
2020/05/28
7190
Qt开源作品22-运行时间记录类
PyQt 中心窗口、停靠窗口和状态栏
self.setCentralWidget(widget)#self是主窗口子类的实例
用户6021899
2019/08/14
2.3K0
Pyqt 主窗口(QMainWindow)简介
下面我写了一个简单的例子,只实现了极少数的功能,仅供参考。后续会详细介绍主窗口(QMainWindow)程序各个部分的写法。推荐在浏览器中打开并横屏查看代码。
用户6021899
2019/08/14
1.9K0
python pyqt5 QDateTimeEdit 常用
setDisplayFormat() yyyy MM dd HH mm ss setMinimumDate() setMaximumDate() time() 返回编辑的时间 date() 返回编辑的日期
用户5760343
2019/07/05
1.6K0
QT应用编程: Qt数据类型和(ActiveX)COM接口数据类型对应关系
QT调用COM组件方式示例: https://blog.csdn.net/xiaolong1126626497/article/details/113127300?spm=1001.2014.3001
DS小龙哥
2022/01/07
1.1K0
Java String的intern方法 在JDK6和JDK7的不同行为
java 内存模型中存在一个叫做 String常量池的区域,其中存放着字符串常量。
用户1212940
2022/04/13
5240
点击加载更多

相似问题

在这些社交媒体按钮中产生的利润是什么?

11

推荐人(如社交网络)

24

停止统计网站速度报告中的社交媒体

22

社交媒体如profile页面URL's in Spring

11

从社交媒体网络中提取数据

35
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档