强迫症带来的矛盾
今天更新了一下本站的文章列表功能,因为。。。
两个圆形图标叠在一起,个人看着很不喜欢,于是就想办法改进,首先介绍一下以前的机制。以前的机制是,将两边的高度计算出来,然后新的一块插入时插入在较低的一块。
那么首先,显而易见的是最上面两块必然重叠:所以新的设计里面,让这两块强行错开30像素。
然后接下来的模块也有可能会重合,怎么办呢?一开始是想通过合理排序的方式进行错开,但是想想也是完全不可能的事情:假设所有块的高度都相同,那么可能会无解。于是现在的模式:
$lefth=0; $righth=30; $left=Array(); $right=Array(); foreach ($arr as $time=>$posts){ $hei=64+26*(count($posts)); if ($lefth<=$righth){ if ($lefth+30>$righth){ $right[]=$lefth+30-$righth; $righth=$lefth+30; } $left[$time]=$posts; $lefth+=$hei; }else{ if ($righth+30>$lefth){ $left[]=$righth+30-$lefth; $lefth=$righth+30; } $right[$time]=$posts; $righth+=$hei; } }
也就是在无法排列的地方插入空格。。。
虽然可能一些剪枝搜索算法可以做出更好的效果,但是由于此法的复杂度非常低,因此可能还是更可用一些吧。。。
2016
04 10
上一篇
Older
下一篇
Newer
评论
0
点击
2124