폭포 흐름, 폭포 흐름 레이아웃이라고도 합니다. 이는 인기 있는 웹 사이트 페이지 레이아웃입니다. 페이지 스크롤 막대가 아래로 스크롤됨에 따라 이 레이아웃은 지속적으로 데이터 블록을 로드하고 현재 꼬리에 추가합니다. 이 레이아웃을 채택한 첫 번째 웹사이트는 Pinterest였으며 중국에서 점차 인기를 얻었습니다. 국내 신규 사이트는 대부분 이런 스타일을 기본으로 하고 있습니다.
폭포 흐름 레이아웃은 웹 사이트에서 널리 사용되는 레이아웃 방법입니다. 이 사례에서는 폭포 흐름 레이아웃을 구현하는 세 가지 주요 방법인 JavaScript, jQurey 및 CSS3에 대해 심층적으로 설명합니다. JavaScript 방법을 사용하여 이미지를 배치하고 정렬하는 방법, 이미지를 지속적으로 로드하는 두 가지 방법, 그리고 여러 가지 방법을 배우게 됩니다. CSS3의 메소드. 열 레이아웃에서 폭포 흐름 레이아웃을 구현하는 방법.
영상 재생 주소 : http://www.php.cn/course/301.html
학습 난이도 :
$( window ).on( "load", function(){ waterfall('main','box'); //模拟数据json var dataJson = {'data': [{'src':'30.jpg'},{'src':'31.jpg'},{'src':'32.jpg'},{'src':'33.jpg'},{'src':'34.jpg'},{'src':'35.jpg'},{'src':'36.jpg'},{'src':'37.jpg'},{'src':'38.jpg'},{'src':'39.jpg'},{'src':'40.jpg'},{'src':'41.jpg'},{'src':'42.jpg'},{'src':'43.jpg'},{'src':'44.jpg'},{'src':'45.jpg'}]}; window.onscroll=function(){ var isPosting = false; if(checkscrollside('main','box') && !isPosting){ isPosting = true; $.each(dataJson.data,function(index,dom){ var $box = $('<div class="box"></div>'); $box.html('<div class="pic"><img src="./images/'+$(dom).attr('src')+'" alt="폭포 흐름 레이아웃 영상 자료 공유" ></div>'); $('#main').append($box); waterfall('main','box'); isPosting = false; }); } } }); /* parend 父级id clsName 元素class */ function waterfall(parent,clsName){ var $parent = $('#'+parent);//父元素 var $boxs = $parent.find('.'+clsName);//所有box元素 var iPinW = $boxs.eq( 0 ).width()+15;// 一个块框box的宽 var cols = Math.floor( $( window ).width() / iPinW );//列数 $parent.width(iPinW * cols).css({'margin': '0 auto'}); var pinHArr=[];//用于存储 每列中的所有块框相加的高度。 $boxs.each( function( index, dom){ if( index < cols ){ pinHArr[ index ] = $(dom).height(); //所有列的高度 }else{ var minH = Math.min.apply( null, pinHArr );//数组pinHArr中的最小值minH var minHIndex = $.inArray( minH, pinHArr ); $(dom).css({ 'position': 'absolute', 'top': minH + 15, 'left': $boxs.eq( minHIndex ).position().left }); //添加元素后修改pinHArr pinHArr[ minHIndex ] += $(dom).height() + 15;//更新添加了块框后的列高 } }); } //检验是否满足加载数据条件,即触发添加块框函数waterfall()的高度:最后一个块框的距离网页顶部+自身高的一半(实现未滚到底就开始加载) function checkscrollside(parent,clsName){ //最后一个块框 var $lastBox = $('#'+parent).find('.'+clsName).last(), lastBoxH = $lastBox.offset().top + $lastBox.height()/ 2, scrollTop = $(window).scrollTop(), documentH = $(document).height(); return lastBoxH < scrollTop + documentH ? true : false; }
위 내용은 폭포 흐름 레이아웃 영상 자료 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!