一个页面分布几十张图,图片都是用户的头像,点击图片进去后是该用户的个人页面。一个用户刚发完日志后就会出现在首页上

解决方案 »

  1.   

    我只能给你一个大概的示意。比如说画布被分割为m行列的网格,每一个(矩形)图片占有一个或者多个网格。假设我们用public class 网格
    {
        public int 行;
        public int 列;
        public bool 是否被占;
    }来描述单个网格,而用List<网格> canvas;来描述画布。假设要从画布上找出一个可以容纳m行n列的空间,大致可以写:var 目标位置 = (from lt in canvas
                from i in Enumerable.Range(lt.行, m)
                from j in Enumerable.Range(lt.列, n)
                let cell = canvas.FirstOrDefault(c => c.行 == i && c.列 == j)
                where cell != null && cell.是否被占 == false
                select lt).First();
    实际上如果你需要排序,例如距离0行0列越近的空间优先级越高,那么还可以在select之前加上一个order by语句。学会linq吧。不然许多程序员会再将来被一些软件公司作为“算法傻瓜”而看待来的。
      

  2.   

    比如说画布被分割为m行列的网格  -->  比如说画布被分割为“行列”的网格
      

  3.   

    每当要向画布放入一个m行n列的图片(例如windows8的“磁贴”那种布局),使用上诉一行语句计算出“目标位置”,这就是要放置图片的左上角的网格坐标。然后把图片放到实际的画布的这个坐标位置,并且在canvas中将这个m行n列所遮盖的网格
        foreach(var cell in from i in Enumerable.Range(lt.行, m) 
                           from j in Enumerable.Range(lt.列, n)
                           select canvas.First(c=>c.行==i && c.列==j))
       {  
           .........
       }
    设置上“被占用”的标记防止以后被覆盖。
      

  4.   

    一个用户刚发完微博就显示出来可以使用ajax无刷新更新,配合滚动。
      

  5.   

    一个页面分布几十张图,图片都是用户的头像 ->可以去看看JQ瀑布流一个用户刚发完日志后就会出现在首页上 ->这个具体看你流量了。一般ajax 处理会好些
      

  6.   

    瀑布流布局,请参考http://www.school51.com/Sell/guang.aspx;这里是官网demo:http://masonry.desandro.com