瀑布流 - 原声JAVACRIPT + Jquery 实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了瀑布流 - 原声JAVACRIPT + Jquery 实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7209字,纯文字阅读大概需要11分钟。
内容图文
![瀑布流 - 原声JAVACRIPT + Jquery 实现](/upload/InfoBanner/zyjiaocheng/1315/565347472dfd4310b940efbfb5a9c414.jpg)
<!Doctype>
<html>
<head>
<title>瀑布流布局</title>
<meta charset="utf-8" />
</head>
<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
<style type="text/css">
*{padding: 0;margin:0;}
#main{
position: relative;
}
.pin{
padding: 15px 0 0 15px;
float:left;
}
.box{
padding: 10px;
border:1px solid #ccc;
box-shadow: 0 0 6px #ccc;
border-radius: 5px;
}
.box img{
width:162px;
height:auto;
}
</style>
<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/10.jpg"/>
</div>
</div>
<div class="pin">
<div class="box">
<img src="./images/11.jpg"/>
</div>
</div>
<div class="pin">
<div class="box">
<img src="./images/12.jpg"/>
</div>
</div>
<div class="pin">
<div class="box">
<img src="./images/13.jpg"/>
</div>
</div>
<div class="pin">
<div class="box">
<img src="./images/14.jpg"/>
</div>
</div>
<div class="pin">
<div class="box">
<img src="./images/15.jpg"/>
</div>
</div>
<div class="pin">
<div class="box">
<img src="./images/16.jpg"/>
</div>
</div>
<div class="pin">
<div class="box">
<img src="./images/17.jpg"/>
</div>
</div>
<div class="pin">
<div class="box">
<img src="./images/18.jpg"/>
</div>
</div>
<div class="pin">
<div class="box">
<img src="./images/19.jpg"/>
</div>
</div>
<div class="pin">
<div class="box">
<img src="./images/20.jpg"/>
</div>
</div>
<div class="pin">
<div class="box">
<img src="./images/21.jpg"/>
</div>
</div>
</div>
</body>
<script type="text/javascript">
$(window).on(‘load‘, function(){
onLoad();
$(window).on(‘scroll‘, function(){
var data = {‘data‘:[{‘src‘:‘images/1.jpg‘},{‘src‘:‘images/2.jpg‘},{‘src‘:‘images/3.jpg‘},{‘src‘:‘images/4.jpg‘}]};
if(isOnLoad()){
$.each(data.data, function(index, item){
// var html = html + ‘<div class="pin"><div class="box"><img src="‘+$(item).attr(‘src‘)+‘" /></div></div>‘;
// $(‘#main‘).html(html);
var $oPin = $(‘<div>‘).addClass(‘pin‘).appendTo($("#main"));
var $oBox = $(‘<div>‘).addClass(‘box‘).appendTo($oPin);
$(‘<img>‘).attr(‘src‘, $(item).attr(‘src‘)).appendTo($oBox);
});
onLoad();
}
})
})
function onLoad(){
var parentNode = $(‘#main‘),
nodeChilds = $(‘#main div.pin‘);
var clientWidth = $(window).width();
var nodeWidth = nodeChilds.eq(0).outerWidth();
var num = Math.floor(clientWidth / nodeWidth);
parentNode.css({
‘width‘: num*nodeWidth + ‘px‘,
‘margin‘: ‘0 auto‘
});
var childsArr = [];
nodeChilds.each(function(index, item){
var nodeHeight = nodeChilds.eq(index).outerHeight();
if(index < num){
childsArr[index] = nodeHeight;
}else{
var minH = Math.min.apply(null, childsArr);
var minHIndex = $.inArray(minH, childsArr);
$(item).css({
‘position‘: ‘absolute‘,
‘top‘: minH,
‘left‘: nodeChilds.eq(minHIndex).position().left
});
childsArr[minHIndex] += nodeChilds.eq(index).outerHeight();
}
});
}
function isOnLoad(){
var clientHeight = $(window).height();
var nodeChilds = $(‘#main div.pin‘);
var nodeChildTop = nodeChilds.last().get(0).offsetTop + Math.floor(nodeChilds.last().outerHeight() / 2);
var scrollTop = $(window).scrollTop();
return (nodeChildTop < clientHeight + scrollTop) ? true : false;
}
// window.onload = function(){
// onloadImg(‘main‘, ‘pin‘);
// window.onscroll = function(){
// var data = {‘data‘:[{‘src‘:‘images/1.jpg‘},{‘src‘:‘images/2.jpg‘},{‘src‘:‘images/3.jpg‘},{‘src‘:‘images/4.jpg‘}]};
// var mainId = document.getElementById(‘main‘);
// if(isLoadImg()){
// for(var i = 0, len = data.data.length; i < len; i++){
// var divHtml = ‘<div class="pin"><div class="box"><img src="‘+data.data[i].src+‘" /></div></div>‘;
// // var oPinDiv = document.createElement(‘div‘);
// // oPinDiv.className = ‘pin‘;
// // mainId.appendChild(oPinDiv);
// // var oPinBoxDiv = document.createElement(‘div‘);
// // oPinBoxDiv.className = ‘box‘;
// // oPinDiv.appendChild(oPinBoxDiv);
// // var oImg = document.createElement(‘img‘);
// // oImg.src = ‘images/‘ + data.data[i].src;
// // oPinBoxDiv.appendChild(oImg);
// mainId.innerHTML += divHtml;
// }
// onloadImg(‘main‘, ‘pin‘);
// }
// }
// }
// function onloadImg(parent, classBox){
// var documentWidth = document.documentElement.clientWidth || document.body.clientWidth;
// var oparent = document.getElementById(parent);
// var oPin = getClassName(oparent, classBox);
// var oPinWidth = oPin[0].offsetWidth;
// var num = Math.floor(documentWidth / oPinWidth);
// oparent.style.cssText = oPinWidth*num + ‘px; margin:0 auto;‘;
// var oPinArr = [];
// for(var i = 0, len = oPin.length; i < len; i++){
// var oPinHeight = oPin[i].offsetHeight;
// if(i < num){
// oPinArr[i] = oPinHeight;
// }else{
// var minHeight = Math.min.apply(null, oPinArr);
// var minIndex = getMinHeightIndex(oPinArr, minHeight);
// oPin[i].style.position = ‘absolute‘;
// oPin[i].style.top = minHeight + ‘px‘;
// oPin[i].style.left = oPin[minIndex].offsetLeft + ‘px‘;
// oPinArr[minIndex] += oPin[i].offsetHeight;
// }
// }
// }
// function getClassName(parent, className){
// var classNames = [];
// var nodes = parent.getElementsByTagName(‘*‘);
// for(var i = 0, len = nodes.length; i < len; i++){
// if(nodes[i].className == className ){
// classNames.push(nodes[i]);
// }
// }
// return classNames;
// }
// function getMinHeightIndex(arr, minH){
// for(var i in arr){
// if(arr[i] == minH){
// return i;
// }
// }
// }
// function isLoadImg(){
// var mainId = document.getElementById(‘main‘);
// var clientHeight = document.documentElement.clientHeight || document.body.clientHeight;
// var oPin = getClassName(mainId,‘pin‘);
// var oLast = oPin[oPin.length - 1];
// var oLastHeight = oLast.offsetTop + Math.floor(oLast.offsetHeight / 2);
// var scroTop = document.documentElement.scrollTop || document.body.scrollTop;
// return (oLastHeight < scroTop + clientHeight) ? true : false;
// }
</script>
</html>
原文:http://www.cnblogs.com/sunhw360/p/4139783.html
内容总结
以上是互联网集市为您收集整理的瀑布流 - 原声JAVACRIPT + Jquery 实现全部内容,希望文章能够帮你解决瀑布流 - 原声JAVACRIPT + Jquery 实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。