真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何使用JavaScript和jQuery實(shí)現(xiàn)瀑布流

這篇文章給大家分享的是有關(guān)如何使用JavaScript和jQuery實(shí)現(xiàn)瀑布流的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)城關(guān)免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

用JavaScript實(shí)現(xiàn)

基本結(jié)構(gòu):


 
  
 
    
    ...   ...   ...  

基本樣式:

*{
 margin: 0px;
 padding: 0px;
 }
 #main{
 position: relative;
 }
 .box{
 padding: 15px 0 0 15px;
 float: left;
 }
 .pic{
 padding: 10px;
 border: 1px solid #ccc;
 border-radius: 5px;
 box-shadow: 0 0 5px #ccc;
 }

思路:

1、獲取#main下的所有.box

2、計(jì)算頁面中圖片有幾列,并設(shè)置頁面的寬度

3、找出這幾列中高度最小的列

4、從第二行開始,設(shè)置圖片為相對定位,把一張圖片放到高度最小列的下面

5、更新列的高度,重復(fù)3、4、5步驟,直至圖片加載完

6、根據(jù)最后一張圖片的位置確定是否繼續(xù)加載圖片(懶加載)

實(shí)現(xiàn):

1、獲取#main下的所有.box

  //將main下的所有class為box的元素取出來
  var oParent = document.getElementById(parent);
  var oBox = getByClass(oParent,box);
// 根據(jù)class獲取元素
 function getByClass(parent,clsname){
  var arr = [];//用來存儲獲取到的所有class為box的元素
  var oElement = parent.getElementsByTagName('*');
  for(var i=0;i

2、計(jì)算頁面中圖片有幾列,并設(shè)置頁面的寬度

  //計(jì)算整個頁面顯示的列數(shù)(頁面寬/box的寬)
  var oBoxW = oBox[0].offsetWidth;
  var cols = Math.floor(document.documentElement.clientWidth/oBoxW);
  //設(shè)置main的寬
  oParent.style.cssText = 'width:' + oBoxW*cols + 'px;margin:0 auto;';

3、找出這幾列中高度最小的列

4、從第二行開始,設(shè)置圖片為相對定位,把一張圖片放到高度最小列的下面

5、更新列的高度,重復(fù)3、4、5步驟,直至圖片加載完

//存儲每列的高度
  var hArr = [];
  for(var i=0;i
//獲取每列高度最小的索引值
 function getMinIndex(arr,value){
  for(var i in arr){
  if(arr[i] == value){
   return i;
  }
  }
 }

6、根據(jù)最后一張圖片的位置確定是否繼續(xù)加載圖片(懶加載)

假設(shè)是后臺給的數(shù)據(jù)

  //數(shù)據(jù)
  var dataInt = {'data':[{'src':'1.jpg'},{'src':'2.jpg'},{'src':'3.jpg'},{'src':'4.jpg'}]};  

當(dāng)滾動條滾動時執(zhí)行

  //滾動條滾動時
  window.onscroll = function(){
  scrollSlide(dataInt);
  }  

根據(jù)最后一張圖片的位置,來判斷是否進(jìn)行加載

//判斷是否具有了滾條加載數(shù)據(jù)塊的條件
 function checkScrollSlide(parent,clsname){
  var oParent = document.getElementById(parent);
  var oBox = getByClass(oParent,clsname);
  var lastBoxH = oBox[oBox.length-1].offsetTop + Math.floor(oBox[oBox.length-1].offsetHeight/2);
  var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
  var height = document.documentElement.clientHeight || document.body.clientHeight;
  return (lastBoxH < scrollTop + height)? true:false;
 }

加載圖片

//滾動條滾動時執(zhí)行
 function scrollSlide(dataInt){
  ////判斷是否具有了滾條加載數(shù)據(jù)塊的條件
  if(checkScrollSlide('main','box')){
  var oParent = document.getElementById('main');
  //將數(shù)據(jù)塊渲染到當(dāng)前頁面的尾部
  for(var i=0;i

用jQurey實(shí)現(xiàn)

用jQuery實(shí)現(xiàn)的思路都是一樣的,就直接放代碼

$(window).on('load',function(){
  waterfall();
  var dataInt={'data':[{'src':'1.jpg'},{'src':'2.jpg'},{'src':'3.jpg'},{'src':'4.jpg'}]};
  $(window).on('scroll',function(){
  scrollSlide(dataInt);
  })
 });
 function waterfall(){
  var $oBox = $('#main>div');
  var oBoxW = $oBox.eq(0).outerWidth();
  var cols = Math.floor($(window).width()/oBoxW);
  $('#main').css({
  'width' : cols * oBoxW,
  'margin' : '0 auto'
  });
  var hArr = [];
  $oBox.each(function(index,value){
  var oBoxH = $oBox.eq(index).height();
  if(indexdiv').last();
  var lastBoxH = $lastBox.offset().top + Math.floor($lastBox.height()/2);
  var scrollTop = $(window).scrollTop();
  var clientH = $(window).height();
  return (lastBoxH < scrollTop + clientH) ? true : false;
 }
 function scrollSlide(dataInt){
  if(checkScrollSlide()){
  $.each(dataInt.data,function(index,value){
   var $Box = $('
').addClass('box').appendTo('#main');    var $Pic = $('
').addClass('pic').appendTo($Box);    $('').attr('src','images/' + $(value).attr('src')).appendTo($Pic);   })   waterfall();   }  }

感謝各位的閱讀!關(guān)于“如何使用JavaScript和jQuery實(shí)現(xiàn)瀑布流”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!


名稱欄目:如何使用JavaScript和jQuery實(shí)現(xiàn)瀑布流
文章出自:http://weahome.cn/article/pdocje.html

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部