首页 > 代码库 > 瀑布流,并且解决定位和容器高度自适应问题,随意放哪都可以用。
瀑布流,并且解决定位和容器高度自适应问题,随意放哪都可以用。
css:
#main{ width:956px; height: auto; margin: 10px auto 0px auto; border:2px solid #ccc; float:left; position:relative;}#main .pin{ width:220px; height:auto; padding:15px 0px 0px 15px; float:left;}#main .pin .box{ width:203px; height:auto; padding:10px; border:1px solid #333; box-shadow:0px 0px 5px #333;}#main .pin .box img{ width:100%;}
jquery:如果你想测试请将第一行function waterfall()换成$(function(){})再运行,我这里将其封装成函数;
//瀑布流 function waterfall(){ var apin = $('#main .pin'); var oparent = $('#main'); var pos=[]; apin.each(function(i){ //4是第一排的元素个数 if(i<4){ //将第一排的高度存入到数组中 pos[i] = apin.eq(i).innerHeight(); }else{ //按照瀑布流定位 //获取数组中的最小值 var minh = Math.min.apply({},pos); //获取高度最小的键名 var mink = getMinKey(pos,minh); //获取高度最小的距离左边的距离 var minl = apin[mink].offsetLeft; //定位元素位置 apin.eq(i).css({ position:'absolute', top:minh, left:minl }); //将加入的元素与其上面元素的高度相加,为下面元素排列做准备 pos[mink] +=apin.eq(i).innerHeight(); } }); //设置最外容器的高以适应内容的变化 var maxh = Math.max.apply({},pos)+10; oparent.css('height',maxh) } //获取数组中最小元素的键名 function getMinKey(arr,min){ for(var key in arr){ if(arr[key]==min){ return key; } } }
html:
<div id="main"> <div class="pin"> <div class="box"> <img src=http://www.mamicode.com/"./11.jpg">>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。