博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用JQuery和CSS3两种方法实现瀑布流布局
阅读量:7199 次
发布时间:2019-06-29

本文共 2291 字,大约阅读时间需要 7 分钟。

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()); //获取滚动条到左边的垂直宽度*/

转载于:https://www.cnblogs.com/jiaoli/p/5890068.html

你可能感兴趣的文章
Unity3D教程:扫描全盘获取文件路径
查看>>
Windows 8 消费者预览版体验
查看>>
linux 运行级别和chkconfig的用法
查看>>
PHP的$_SERVER数组字段详解
查看>>
tomcat 管理界面无法登陆
查看>>
胜者树与败者树
查看>>
java中的常量定义
查看>>
Linux中目录操作命令
查看>>
Linux下的touch命令及时间戳
查看>>
安装如Epson LQ-300K等老式打印机方法和心得
查看>>
菜鸟的第一次编程感受
查看>>
对代码命名的一点思考和理解
查看>>
shell监测mysql是否启动
查看>>
ThinkPad E40无线网卡驱动安装 FOR CENTOS6.3
查看>>
多站点配置
查看>>
JS学习随记_day04
查看>>
变态工作之修改hibernate让其支持null主键
查看>>
搜索引擎的分片(shard)和副本(replica)机制
查看>>
pcb中的电子学基础
查看>>
笔记本wifi灯不亮了怎么办?
查看>>