亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解照片瀑布流效果(js,jquery分別實(shí)現(xiàn)與知識點(diǎn)總結(jié))

 更新時(shí)間:2017年01月01日 13:47:37   作者:normol  
本篇文章主要介紹了照片瀑布流效果,實(shí)現(xiàn)圖片自動(dòng)加載的瀑布流效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。

看了網(wǎng)上的瀑布流教程,自己跟著寫了遍,然后總結(jié)了下知識點(diǎn)

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<script type="text/javascript" src="jquery-1.8.3.min.js"/></script> 
<script type="text/javascript" src="script2.js"/></script> 
<title></title> 
<style type="text/css"> 
 *{padding: 0;margin:0;} 
 #main{ 
  margin-top: 10px; 
  position: relative; 
 
 } 
 .pin{ 
  margin:0; 
  padding:0 0 5px 3px; 
  float:left; 
 } 
 .box{ 
  padding: 10px 5px 0 5px; 
  border:1px solid #ccc; 
  box-shadow: 0 0 6px #ccc; 
  border-radius: 5px; 
 } 
 .box img{ 
  border:0; 
  margin:0; 
  width:200px; 
  height:auto; 
 } 
</style> 
</head> 
<body> 
<div id="main"> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/1.jpg"/> 
  </div> 
 </div> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/2.jpg"/> 
  </div> 
 </div> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/3.jpg"/> 
  </div> 
 </div> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/4.jpg"/> 
  </div> 
 </div> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/5.jpg"/> 
  </div> 
 </div> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/6.jpg"/> 
  </div> 
 </div> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/7.jpg"/> 
  </div> 
 </div> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/8.jpg"/> 
  </div> 
 </div> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/9.jpg"/> 
  </div> 
 </div> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/1.jpg"/> 
  </div> 
 </div> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/2.jpg"/> 
  </div> 
 </div> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/3.jpg"/> 
  </div> 
 </div> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/4.jpg"/> 
  </div> 
 </div> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/5.jpg"/> 
  </div> 
 </div> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/6.jpg"/> 
  </div> 
 </div> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/7.jpg"/> 
  </div> 
 </div> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/8.jpg"/> 
  </div> 
 </div> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/9.jpg"/> 
  </div> 
 </div> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/1.jpg"/> 
  </div> 
 </div> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/2.jpg"/> 
  </div> 
 </div> 
 <div class="pin"> 
  <div class="box"> 
   <img src="images/3.jpg"/> 
  </div> 
 </div> 
</div> 
</body> 
</html> 

用js實(shí)現(xiàn)部分:

window.onload=function(){ 
  
 waterfall('main','box'); 
  var dataimg={'data':[{'src':'1.jpg'},{'src':'2.jpg'},{'src':'3.jpg'},{'src':'4.jpg'},{'src':'5.jpg'},{'src':'6.jpg'},{'src':'7.jpg'},{'src':'8.jpg'},{'src':'9.jpg'}]}; 
  
  window.onscroll=function() 
  { 
   if(checkscrollside()) 
   { 
    var main= document.getElementById('main'); 
    for(var i=0;i<dataimg.data.length;i++) 
    { 
     var pin=document.createElement('div'); 
     pin.className='pin';     
     main.appendChild(pin);    
     var box=document.createElement('div'); 
     box.className='box'; 
     pin.appendChild(box); 
     var img=document.createElement('img'); 
     img.src='images/'+dataimg.data[i].src; 
     box.appendChild(img); 
    } 
    waterfall('main','box'); 
   }; 
  } 
}   
 
function $$(clsName,ele) 
{ 
 //如果當(dāng)前瀏覽器支持通過類名獲取元素,直接返回 
 if(document.getElementsByClassName) 
 { 
  return(ele||document).getElementsByClassName(clsName); 
 } 
 else 
 { 
  //盡量把這些量存放在變量中,否則 
  //例如循環(huán)不用len,而用nodes.length,會每一次循環(huán)都遍歷一次 
  var nodes=(ele||document).getElementsByTagName("*"), 
  eles=[], 
  len=nodes.length 
  i, 
  j, 
  currNode, 
  clsNames, 
  clsLen; 
  for(i=0;i<len;i++) 
  { 
   currNode=nodes[i]; 
   clsNames=currNode.className.split(' '); 
   clsLen=clsNames.length; 
   for(j=0;j<clsLen;j++) 
   { 
    if(clsNames[j]==clsName) 
    { 
  eles.push(currNode); 
      break; 
    } 
   } 
  } 
  return eles; 
 } 
} 
//知識點(diǎn)一:js中通過屬性offset--等,但padding,margin等只能獲取在內(nèi)聯(lián)html中有的樣式, 
//因此,下面這個(gè)函數(shù)是獲取css樣式的通用函數(shù)。 
var getStyle = function(dom, attr) 
{ 
 return dom.currentStyle ? dom.currentStyle[attr] : getComputedStyle(dom, false)[attr]; 
} 
 function waterfall(parent,box){ 
  var main=document.getElementById(parent); 
  var boxes=$$(box,main); 
   var pins=$$('pin',main); 
  //console.log(boxes.length); 
   var pinw=pins[0]; 
  var boxw=boxes[0].offsetWidth+parseInt(getStyle(pinw,'paddingLeft')); 
  console.log(boxes[0].clientWidth); 
  //console.log(boxw+','+main.clientWidth+','+main.offsetWidth+','+getStyle(boxes[0],'margin')); 
  var cols=Math.floor(document.documentElement.clientWidth/boxw); 
   console.log(cols); 
  main.style.width=cols*boxw+'px'; 
  var boxesh=[]; 
  for(var i=0;i<boxes.length;i++){ 
   if(i<cols){ 
    boxesh.push(boxes[i].offsetHeight+parseInt(getStyle(pinw,'paddingBottom'))); 
   } 
   else{ 
    var minh=Math.min.apply(null,boxesh); 
    var index=getMinIndex(boxesh,minh); 
    boxes[i].style.position='absolute'; 
    boxes[i].style.top=minh+'px'; 
    boxes[i].style.left=index*boxw+'px'; 
    boxesh[index]+=boxes[i].offsetHeight+parseInt(getStyle(pinw,'paddingLeft')); 
   } 
  } 
 } 
 
 function getMinIndex(arr,val){ 
  for(var i=0;i<arr.length;i++){ 
   if(arr[i]==val) 
    return i; 
  } 
 } 
 
 function checkscrollside(){ 
 var main=document.getElementById('main'); 
 var aPin=$$('pin',main); 
 console.log(aPin.length); 
 var lastPinH=aPin[aPin.length-1].offsetTop+Math.floor(aPin[aPin.length-1].offsetHeight/2); 
 var scrollTop=document.documentElement.scrollTop||document.body.scrollTop; 
 var documentH=document.documentElement.clientHeight;//頁面高度 
 return (lastPinH<scrollTop+documentH)?true:false; 
} 

用jQuery實(shí)現(xiàn)部分:

//知識點(diǎn)一:jquery事件綁定 
$(window).on('load',function(){ 
 waterfall(); 
 var dataimg={'data':[{'src':'1.jpg'},{'src':'2.jpg'},{'src':'3.jpg'},{'src':'4.jpg'},{'src':'5.jpg'},{'src':'6.jpg'},{'src':'7.jpg'},{'src':'8.jpg'},{'src':'9.jpg'}]}; 
 $(window).on('scroll',function(){ 
  if(checkScrollSlide()){ 
   //知識點(diǎn)二:數(shù)組遍歷 
   //知識點(diǎn)三:value參數(shù)是DOM對象 
   $.each(dataimg.data,function(key,value){ 
    //知識點(diǎn)四:創(chuàng)建DOM元素,不需要createElement('div'); 
    //知識點(diǎn)五:為元素綁定class,不再是className=''; 
    //知識點(diǎn)六:往元素中填充元素,不再是obj.appendChild(obj); 
    //知識點(diǎn)七:屬性的獲取和設(shè)置,可以直接用attr (注意這是針對jquey對象的方法); 
    var oBox=$('<div>').addClass('pin').appendTo($('#main')); 
    var oPic=$('<div>').addClass('box').appendTo($(oBox)); 
    $('<img>').attr('src','images/'+value.src).appendTo($(oPic)); 
   }) 
   waterfall(); 
  } 
 }) 
}) 
 
function waterfall(){ 
 var $boxs=$('#main>.pin'); 
 //知識點(diǎn)八:jquery中的outerWidth(false)方法==js中的offsetWidth屬性 
 //innerWidth()==clientWidth; 
 //width()==width; 
 var w=$boxs.eq(0).outerWidth(false); 
 //console.log(w); 
 var cols=Math.floor($(window).width()/w); 
 //知識點(diǎn)九:jquery可以直接css(),js是obj,style.margin: ect; 
 $('#main').width(cols*w).css('margin','10px auto'); 
 var hArr=[]; 
 //注意,這兒value是DOM對象 
 $boxs.each(function(index,value){ 
  var h=$boxs.eq(index).outerHeight(false); 
  if(index<cols){ 
   hArr.push(h); 
  }else{ 
   var minH=Math.min.apply(null,hArr); 
   //知識點(diǎn)十:jquey中直接封裝了一個(gè)數(shù)組中找取某個(gè)值對應(yīng)下標(biāo)的方法 
   var minHIndex=$.inArray(minH,hArr); 
   $(value).css({ 
    'position':'absolute', 
    'top':minH+'px', 
    'left':minHIndex*w+'px', 
   }); 
   hArr[minHIndex]+=$boxs.eq(index).outerHeight(false); 
  } 
 }) 
 //console.log(hArr); 
} 
 
function checkScrollSlide(){ 
 //知識點(diǎn)十一:可以直接last()方法獲取最后一個(gè)元素 
 var $lastBox=$('#main>div').last(); 
 //知識點(diǎn)十二:js中的一系列offsetTop等屬性,變成了jquey中的offset().top ect; 
 var lastBoxDis=$lastBox.offset().top+Math.floor($lastBox.outerHeight(false)/2); 
 var scrollTop=$(window).scrollTop(); 
 var documentH=$(window).height(); 
 return (lastBoxDis<scrollTop+documentH)?true:false; 
} 

 以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解JavaScript表單驗(yàn)證(E-mail 驗(yàn)證)

    詳解JavaScript表單驗(yàn)證(E-mail 驗(yàn)證)

    這篇文章主要為大家詳細(xì)介紹了JavaScript表單驗(yàn)證,重點(diǎn)介紹了E-mail驗(yàn)證,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-03-03
  • javascript中如何快速獲取數(shù)組最后一個(gè)值

    javascript中如何快速獲取數(shù)組最后一個(gè)值

    這篇文章主要介紹了javascript中如何快速獲取數(shù)組最后一個(gè)值問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • js 得到文件后綴(通過正則實(shí)現(xiàn))

    js 得到文件后綴(通過正則實(shí)現(xiàn))

    使用js獲取文件的后綴,有個(gè)不錯(cuò)的正則,大家可以借用下,具體如下,感興趣的朋友可以參考下哈,希望對大家有所幫助
    2013-07-07
  • Math.js解決js中小數(shù)精度丟失問題

    Math.js解決js中小數(shù)精度丟失問題

    在JavaScript中進(jìn)行小數(shù)運(yùn)算時(shí),會容易出現(xiàn)精度丟失的問題,例如在進(jìn)行兩個(gè)小數(shù)相加時(shí),結(jié)果并不是預(yù)期的精確值,而是一個(gè)近似值,,使用第三方庫Math.js可以避免精度丟失的問題,本文導(dǎo)入Math.js庫和使用Math.js的方法來進(jìn)行小數(shù)運(yùn)算,同時(shí)還可以指定格式來保留小數(shù)位數(shù)
    2023-12-12
  • javascript獲取表格 td 中的內(nèi)容

    javascript獲取表格 td 中的內(nèi)容

    可以獲取html table中的td中的內(nèi)容。非常的不錯(cuò)。
    2009-07-07
  • 如何給JS中的數(shù)組開頭添加元素

    如何給JS中的數(shù)組開頭添加元素

    這篇文章主要介紹了如何給JS中的數(shù)組開頭添加元素,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • javascript斷點(diǎn)調(diào)試心得分享

    javascript斷點(diǎn)調(diào)試心得分享

    javascript中程序是怎么可以中斷執(zhí)行,然后一步一步走下去。而且debug的時(shí)候,可以看到變量,調(diào)用棧等東西。這個(gè)是如何實(shí)現(xiàn)的?
    2016-04-04
  • 關(guān)于JS Lodop打印插件打印Bootstrap樣式錯(cuò)亂問題的解決方案

    關(guān)于JS Lodop打印插件打印Bootstrap樣式錯(cuò)亂問題的解決方案

    關(guān)于Lodop打印是個(gè)很牛的打印插件,但是打印Bootstrap的樣式的時(shí)候就容易錯(cuò)亂,下面通過本文給大家分享下這方面的問題
    2016-12-12
  • JavaScript中丟失精度的問題及避免方法

    JavaScript中丟失精度的問題及避免方法

    JavaScript?是一門動(dòng)態(tài)類型的腳本語言,用于在瀏覽器中創(chuàng)建交互式的網(wǎng)頁,然而,由于其使用?IEEE?754?浮點(diǎn)數(shù)表示數(shù)字,可能會導(dǎo)致丟失精度的問題,本文將探討?JavaScript?中的丟失精度問題,以及如何避免這些問題,需要的朋友可以參考下
    2023-11-11
  • JavaScript 巧學(xué)巧用

    JavaScript 巧學(xué)巧用

    本文主要給大家分享一下在編寫JavaScript代碼的時(shí)候存在的一些方法和技巧,雖然有時(shí)候條條大路都通向羅馬,但是也許總會有那么一條最短的路徑可走。希望通過以下幾點(diǎn)JavaScript技巧讓大家的代碼“化繁為簡,化簡為精”
    2017-05-05

最新評論