zoukankan      html  css  js  c++  java
  • JS_waterfall[说给自己听]

    DEMO

    1.前言:
      瀑布流的难点
        1:数组的操作;
        2:图片的高度;

        

    2.GO:

    /*
    * 代码很短,所以功能只有布局;
    * 但是核心就在这儿了.
    */
    $.ui.waterfall = $.Class.creat(); $.ui.waterfall.prototype = { init:function(){ this.opat = { id:document, node:null, row:1 }; $.Object.extend(this.opat,arguments[0]||{}); this.fire(); }, fire:function(){ var _this = this,_opat = _this.opat; var _id = $(_opat.id); var _lis = _this._lis = _id.find(_opat.node); var _width = _lis.outerWidth(); var _row = _opat.row;
         /*
         这个数组就是我们后面要操作的数组;
         */
    var _arr = []; _lis.each(function(i,o){ if(_arr.length < _row){
              /*
              * 启示的时候是没有别的内容所以[top]值都为0,也不需要考虑别的只要顺的排过来就OK了
              */ $(
    this).css({left:(i%_row)*_width+"px"});
              /*
               * 这里开始操作数组了,第一步是插入前段DOM的高度和遍历值;比如["100.1"];我特意做的手脚这样使用parseInt();就可以直接获取我们要用的number,100
               * 二后面的遍历值是为了要得到left;
               * 第二部是把数组从小到大排列;
               */ $.Use(_arr).push($(
    this).outerHeight()+"."+i).sort(function(_a_,_b_){return parseInt(_a_) - parseInt(_b_);}); }else{
             /*
              * 获取数组的第一个,这个就是最小的值;遍历值我们也有直接写样式就OK了
              */
    var _first = _arr.shift(); var _minheight = parseInt(_first); var _which = +_first.split(".")[1]; $(this).css({ top:_minheight+"px", left:_lis.eq(_which).css("left")+"px" })
              /*
              * 也是数组的操作;上面我们把第一个最小的值给删除了,我们现在后面插一个值;这个值是:这个元素的高+position().top;然后把得到的数组从小到大排列
              */ $.Use(_arr).push($(
    this).outerHeight()+_minheight+"."+i).sort(function(_a_,_b_){return parseInt(_a_) - parseInt(_b_);}); } }); _id.css({ height:parseInt(_arr[_row-1])+"px" }) $.log(_arr) } }

    3.到这一个静态的瀑布流已经出来了可以点这个静态的DEMO;但是如果不设高度呢?我们就要靠php来帮忙了;

    /*
    * 这个是别人给我找的方法;可以帮我们获取图片的高度。
    */
    <?
    php function getImgHeight($img){ return imagesy(imagecreatefromjpeg($img)); } ?> <img src="images/01.jpg" height="<?php echo getImgHeight("images/01.jpg");?>" alt="" />

    DEMO

  • 相关阅读:
    畅通工程(hdu1232)并查集
    qsort函数的用法
    二叉搜索树(hdu3791)
    Binary Tree Traversals(HDU1710)二叉树的简单应用
    Safe Or Unsafe(hdu2527)哈弗曼VS优先队列
    山东省第四届acm解题报告(部分)
    Points on Cycle (hdu1700,几何)
    A计划 hdu2102(bfs一般题)
    杀人游戏(hdu2211)插入法
    hdu1518 Square(dfs)
  • 原文地址:https://www.cnblogs.com/somesayss/p/2917356.html
Copyright © 2011-2022 走看看