在网页中加入一个瀑布流效果(jQuery)-问答-阿里云开发者社区-阿里云

开发者社区> 小旋风柴进> 正文

在网页中加入一个瀑布流效果(jQuery)

2016-03-17 12:22:07 1846 1
 $( window ).on( "load", function(){
    waterfall();
    var dataInt={'data':[{'src':'1.jpg'},{'src':'2.jpg'},{'src':'3.jpg'},{'src':'4.jpg'}]};
    window.onscroll=function(){
        if (checkScrollSlide()) {
            $.each(dataInt.data,function(index,value){
                var $oPin=$('<div>'),addClass('pin'),appendTo($('#viewlist'));
                var $oBox=$('<div>'),addClass('box'),appendTo($oPin);
                $('<img>').attr('src','<?php bloginfo('template_directory'); ?>/adimgs/' + $( value).attr( 'src') ).appendTo($oBox);
            });
            waterfall();
        };
    }
});

/*
    parend 父级id
    pin 元素id
*/
function waterfall(parent,pin){
    var $aPin = $( "#viewlist>div" );
    var iPinW = $aPin.eq( 0 ).width();// 一个块框pin的宽
    var num = Math.floor( $( window ).width() / iPinW );//每行中能容纳的pin个数【窗口宽度除以一个块框宽度】
    //oParent.style.cssText='width:'+iPinW*num+'px;ma rgin:0 auto;';//设置父级居中样式:定宽+自动水平外边距
    $( "#viewlist" ).css({
        'width:' : iPinW * num,
        'margin': '0 auto'
    });

    var pinHArr=[];//用于存储 每列中的所有块框相加的高度。

    $aPin.each( function( index, value ){
        var pinH = $aPin.eq( index ).height();
        if( index < num ){
            pinHArr[ index ] = pinH; //第一行中的num个块框pin 先添加进数组pinHArr
        }else{
            var minH = Math.min.apply( null, pinHArr );//数组pinHArr中的最小值minH
            var minHIndex = $.inArray( minH, pinHArr );
            $( value ).css({
                'position': 'absolute',
                'top': minH + 10,
                'left': $aPin.eq( minHIndex ).position().left
            });
            //数组 最小高元素的高 + 添加上的aPin[i]块框高
            pinHArr[ minHIndex ] += $aPin.eq( index ).height() + 15;//更新添加了块框后的列高
        }
    });
}

function checkScrollSlide(){
    var $aPin = $( "#viewlist>div" );
    var lastPinH = $aPin.last().get(0).offsetTop + Math.floor($aPin.last().height()/2);//创建【触发添加块框函数waterfall()】的高度:最后一个块框的距离网页顶部+自身高的一半(实现未滚到底就开始加载)
    var scrollTop = $( window ).scrollTop()//注意解决兼容性
    var documentH = $( document ).height();//页面高度
    return (lastPinH < scrollTop + documentH ) ? true : false;//到达指定高度后 返回true,触发waterfall()函数
}

Chrome 报错: Uncaught SyntaxError: Unexpected token ( 第7行
网页样式也没有出来

取消 提交回答
全部回答(1)
  • 小旋风柴进
    2019-07-17 19:05:07
    var $oPin=$('
    
    '),addClass('pin'),appendTo($('#viewlist'));
    var $oBox=$('
    '),addClass('box'),appendTo($oPin);
    逗号改为点
    
    var $oPin=$('
    
    ').addClass('pin').appendTo($('#viewlist'));
    var $oBox=$('
    ').addClass('box').appendTo($oPin);
    
    0 0
相关问答

162

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 222937浏览量 回答数 162

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 157037浏览量 回答数 145

110

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 292222浏览量 回答数 110

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 146740浏览量 回答数 22

31

回答

[@倚贤][¥20]刚学完html/css/js的新手学习servlet、jsp需要注意哪些问题?

弗洛伊德6 2018-10-27 21:52:43 145580浏览量 回答数 31

2

回答

mySQL数据库报错You have an error in your SQL syntax

落地花开啦 2016-02-14 16:09:24 126070浏览量 回答数 2

249

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 302556浏览量 回答数 249

97

回答

Redhat/CentOS一键安装web环境全攻略

xiaofanqie 2011-08-11 14:51:38 123176浏览量 回答数 97

22

回答

【精品问答合集】Redis热门问答

李博 bluemind 2019-05-29 16:36:15 126242浏览量 回答数 22

2

回答

区域选择帮助

fanyue88888 2012-12-07 15:54:30 203977浏览量 回答数 2
2728
文章
6591
问答
问答排行榜
最热
最新
推荐问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载