登录 注册

强迫症带来的矛盾

今天更新了一下本站的文章列表功能,因为。。。

两个圆形图标叠在一起,个人看着很不喜欢,于是就想办法改进,首先介绍一下以前的机制。以前的机制是,将两边的高度计算出来,然后新的一块插入时插入在较低的一块。

那么首先,显而易见的是最上面两块必然重叠:所以新的设计里面,让这两块强行错开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
点击
1980
发布
我是标题
我是文字
我是标题
我是文字
用户名
密码
用户名
密码
重复密码
努力的加载中.....