瀑布流
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>Waterfall代码</title> 6 </head> 7 <body> 8 <style type="text/css"> 9 .wf-main{ 10 position: relative; 11 margin: 0 auto; 12 width: 990px; 13 overflow: hidden; 14 } 15 .wf-main .wf-cld{ 16 position: absolute; 17 margin-bottom: 10px; 18 padding:5px 8px; 19 width: 214px; 20 left: -9999px; 21 top: -9999px; 22 line-height:18px; 23 border: 1px solid #999; 24 border-radius: 4px; 25 background-color: #ccc; 26 overflow: hidden; 27 } 28 .wf-cld .inner{ 29 position: absolute; 30 left: -9999px; 31 top: -9999px; 32 margin-bottom: 5px; 33 width: 73px; 34 overflow: hidden; 35 border: 1px solid #f00; 36 border-radius: 3px; 37 } 38 .wf-cld .title{ 39 margin: 0 0 5px; 40 padding: 5px; 41 width: 63px; 42 color: #f00; 43 font-size: 14px; 44 } 45 </style> 46 <div class="wf-main" id="wf-main"> 47 <div class="wf-cld"><h2 style="color:#f50">1、瀑布流</h2></div> 48 <div class="wf-cld">2<br>2</div> 49 <div class="wf-cld">3<br>4<br>4</div> 50 <div class="wf-cld">4<br>4<br>4<br>4</div> 51 <div class="wf-cld">5<br>4<br>4<br>4<br>4</div> 52 <div class="wf-cld">6<br>4<br>4<br>4<br>4<br>4</div> 53 <div class="wf-cld">7<br>4<br>4<br>4<br>4<br>4<br>4</div> 54 <div class="wf-cld">8<br>4<br>4<br>4<br>4<br>4<br>4<br>4</div> 55 <div class="wf-cld">9<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4</div> 56 <div class="wf-cld">10<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4</div> 57 <div class="wf-cld">18<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4</div> 58 <div class="wf-cld">19<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4</div> 59 <div class="wf-cld">20<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4</div> 60 <div class="wf-cld" id="wf-inner"> 61 <h2 class="inner title">21、内部瀑布流</h2> 62 <div class="inner">21-1<br>1</div> 63 <div class="inner">21-2</div> 64 <div class="inner">21-3</div> 65 <div class="inner">21-4</div> 66 <div class="inner">21-5<br></div> 67 <div class="inner">21-6</div> 68 <div class="inner">21-7</div> 69 <div class="inner">21-8</div> 70 <div class="inner">21-9</div> 71 </div> 72 <div class="wf-cld">22<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4</div> 73 <div class="wf-cld">23<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4</div> 74 <div class="wf-cld">24<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4</div> 75 <div class="wf-cld">11<br>2<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4</div> 76 <div class="wf-cld">12<br>2<br>2<br>3<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4</div> 77 <div class="wf-cld">13<br>4<br>4<br>3<br>3<br>1<br>2<br>4<br>4<br>4<br>4<br>4<br>4</div> 78 <div class="wf-cld">14<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4</div> 79 <div class="wf-cld">15<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4</div> 80 <div class="wf-cld">16<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4</div> 81 <div class="wf-cld">17<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4<br>4</div> 82 </div> 83 <script type="text/javascript"> 84 function Waterfall(param){ 85 this.id = typeof param.container == 'string' ? document.getElementById(param.container) : param.container; 86 this.colWidth = param.colWidth; 87 this.colCount = param.colCount || 4; 88 this.cls = param.cls && param.cls != '' ? param.cls : 'wf-cld'; 89 this.init(); 90 } 91 Waterfall.prototype = { 92 getByClass:function(cls,p){ 93 var arr = [],reg = new RegExp("(^|\\s+)" + cls + "(\\s+|$)","g"); 94 var nodes = p.getElementsByTagName("*"),len = nodes.length; 95 for(var i = 0; i < len; i++){ 96 if(reg.test(nodes[i].className)){ 97 arr.push(nodes[i]); 98 reg.lastIndex = 0; 99 } 100 } 101 return arr; 102 }, 103 maxArr:function(arr){ 104 var len = arr.length,temp = arr[0]; 105 for(var ii= 1; ii < len; ii++){ 106 if(temp < arr[ii]){ 107 temp = arr[ii]; 108 } 109 } 110 return temp; 111 }, 112 getMar:function(node){ 113 var dis = 0; 114 if(node.currentStyle){ 115 dis = parseInt(node.currentStyle.marginBottom); 116 }else if(document.defaultView){ 117 dis = parseInt(document.defaultView.getComputedStyle(node,null).marginBottom); 118 } 119 return dis; 120 }, 121 getMinCol:function(arr){ 122 var ca = arr,cl = ca.length,temp = ca[0],minc = 0; 123 for(var ci = 0; ci < cl; ci++){ 124 if(temp > ca[ci]){ 125 temp = ca[ci]; 126 minc = ci; 127 } 128 } 129 return minc; 130 }, 131 init:function(){ 132 var _this = this; 133 var col = [],//列高 134 iArr = [];//索引 135 var nodes = _this.getByClass(_this.cls,_this.id),len = nodes.length; 136 for(var i = 0; i < _this.colCount; i++){ 137 col[i] = 0; 138 } 139 for(var i = 0; i < len; i++){ 140 nodes[i].h = nodes[i].offsetHeight + _this.getMar(nodes[i]); 141 iArr[i] = i; 142 } 143 144 for(var i = 0; i < len; i++){ 145 var ming = _this.getMinCol(col); 146 nodes[i].style.left = ming * _this.colWidth + "px"; 147 nodes[i].style.top = col[ming] + "px"; 148 col[ming] += nodes[i].h; 149 } 150 151 _this.id.style.height = _this.maxArr(col) + "px"; 152 } 153 }; 154 new Waterfall({ 155 "container":"wf-main", 156 "colWidth":244, 157 "colCount":4 158 }); 159 </script> 160 </body> 161 </html>