首页 > 代码库 > 使用JQuery和CSS3两种方法实现瀑布流布局
使用JQuery和CSS3两种方法实现瀑布流布局
JQ实现瀑布流图片定位
1、jQuery是继prototype之后又一个优秀的Javascript框架
2、$(window).width() 浏览器视窗的宽度
outerWidth() = padding+border+width;
width() = width
/*在jQuery中,width()方法用于获得元素宽度;innerWidth()方法用于获得包括内边界(padding)的元素宽 度,outerWidth()方法用于获得包括内边界(padding)和边框(border)的元素宽度,如果outerWidth()方法的参数为 true则外边界(margin)也会被包括进来,即获得包括外边框(margin)、内边界(padding)和边框(border)的元素宽度。同 理,innerHeight方法与outerHeight方法也是用同样的方法计算相应的高度。
所以说:对于同一个元素应该是:width()<=innerWidth()<=outerWidth()<=outerWidth(true);*/
3、$.inArray(所找元素,数组) 该方法用于获取元素的索引
4.jQuery遍历的函数
each $boxs.each(function(index,value){
}); index 索引值,value对应的值
5.eq(n),从结果集中选取第n的元素
6.$.inArray(value,arr)工具函数,用来判断某个值在数组中的索引
7.each遍历的value是DOM对象。将value DOM对象转换为jQuery对象才能使用其方法 :$(value)
jQuery的$.inArray()方法直接可以得到一个数在数组中的索引
$(dom) 将Dom对象转换成jQuery对象
$(window).on("load",function(){
waterfall();
})
function waterfall(){
var $boxs=$("#main>div");
var w=$boxs.eq(0).outerWidth();
var cols=Math.floor($(window).width()/w);
$("#main").width(w*cols).css("margin","0 auto");
var hArr=[];
$boxs.each(function(index,value){
var h=$boxs.eq(index).outerHeight();
if(index<cols){
hArr[index]=h;
}else{
var minH=Math.min.apply(null,hArr);
var minHIndex=$.inArray(minH,hArr);
$(value).css({
"position":"absolute",
"top":minH+"px",
"left":minHIndex*w+"px"
})
hArr[minHIndex]+=$boxs.eq(index).outerHeight();
}
})
}
【原理】css3多栏布局column
【知识点】
①column的浏览器兼容问题,不同内核要写其前缀
-webkit Google浏览器内核
-ms IE
-o 欧朋opera
-moz 火狐FireFox
②column-width 和column-count没有必要同时出现
③column-rule设置列与列之间的边框
④column-gap 设置列间距,不一定定义多少,实际就显示多少。其计算规则:用当前浏览器宽口宽除以定义的列宽,剩下的距离平均分配
【css3和js实现方法比较】
--css3方式--
1:不需要计算,浏览器自动计算,只需设置1列宽,性能高
2:列宽随着浏览器宽口大小进行改变,用户体验不好;
3:图片排序按照垂直顺序排列,打乱图片显示顺序
4.图片加载还是需要js
--js方式--
js实现的瀑布流不会有上面的缺点,但是性能相对要差!
/*alert($(window).height()); //浏览器时下窗口可视区域高度
alert($(document).height()); //浏览器时下窗口文档的高度
alert($(document.body).height());//浏览器时下窗口文档body的高度
alert($(document.body).outerHeight(true));//浏览器时下窗口文档body的总高度 包括border padding margin
alert($(window).width()); //浏览器时下窗口可视区域宽度
alert($(document).width());//浏览器时下窗口文档对于象宽度
alert($(document.body).width());//浏览器时下窗口文档body的高度
alert($(document.body).outerWidth(true));//浏览器时下窗口文档body的总宽度 包括border padding margin
alert($(document).scrollTop()); //获取滚动条到顶部的垂直高度
alert($(document).scrollLeft()); //获取滚动条到左边的垂直宽度*/
使用JQuery和CSS3两种方法实现瀑布流布局