当前位置:首页 > 日记 > 正文

原生Javascript+实现瀑布

原生Javascript+实现瀑布
HTML(注意包,js调用)

复制代码代码如下所示:


















少(少预编译)

复制代码代码如下所示:

{ *

保证金:0;

填充:0;

}

{ #主要

职位:相对;
}

{。箱

Padding:15px 00 15px;

浮点数:左;

}

{。PIC

填料:10px;

边境:1px solid # CCC;

边界半径:5px;

盒子的影子:0px 0px 5px # CCC;

{ IMG

宽度:165px;

高度:自动;

}

}
Javascript(对自己理解的注释)

(函数有一些缺陷,仅用于学习理解)。

复制代码代码如下所示:

在window.onload =函数(){

瀑布()

调用自定义函数;

无功dataint = {数据:{ {src:7。jpg},{src:8。jpg},{src:9。jpg},{src :6。jpg} } }

JSON数据模拟;

window.onscroll =函数(){

如果(checkscrollslide){

调用自定义函数;根据函数返回值判断滚动是否超出范围;

无功oparent = document.getelementbyid(主要);

对于(var i = 0;i < dataint.data.length;i++){

无功obox = document.createelement(div);

obox.classname =盒子;

oparent.appendchild(obox);

创建一个框块

VaR OPIC = document.createelement(div);

opic.classname =PIC;

obox.appendchild(OPIC);

创建一个PIC块

无功oimg = document.createelement(IMG);

/ /创建img元素

oimg.src = 图片 / + dataint。数据{我},SRC;

设置图片/参考;

opic.appendchild(oimg);

};

瀑布()

将动态生成数据块流布局;

};

};

};

/ /容器的主要功能,自动调整数据块;

函数瀑布(父,框){

在主删除项下的所有框元素;父代表父元素,Box代表Box元素;

无功oparent = document.getelementbyid(母);

/ /父元素赋给变量oparent;

无功oboxs = getbyclass(oparent,箱);

通过自定义函数,对父元素下的每个框元素;是所有框元素的集合;

这又会 / /箱元集分配给oboxs;(因为范围,变量不共享);

/ / console.log(oboxs。长度);

打印控制台中的Box元素的数量,用于调试;

无功oboxw = oboxs { 0 }。offsetwidth;

/ /每列的宽度计算;offsetwidth包含填充,宽度;

/ / console.log(oboxw);测试;

var列= math.floor(文档。文档元素}。clientwidth / oboxw);

整个页面的计算显示列的数量(页面宽度/框宽度);

oparent.style.csstext =宽度+ oboxw *一+PX;保证金:0汽车;

主宽度的父=每个列的宽度*列的数目;以及;

VaR Harr = { };

每个列高度存储数组;

对于(var i = 0;i < oboxs.length;i++){

/ /导线oboxs阵列;

如果(我<列){

这里是满足第一列每个列第一行的条件;

HArr.push(oboxs {我}。offsetheight);

获取数组中每个列的高度;

其他{ }

这里的box元素不是第一行元素;

var胡志明= math.min.apply(null,Harr);

最小高度第一行,并赋给变量;

/ / console.log(明);

VaR指标= getminhindex(Harr,Minh);

调用自定义函数获取索引的变量值;

oboxs {我}。style.position =绝对;

oboxs {我}。style.top =胡志明+PX;

oboxs {我}。style.left = oboxw *指数+PX;

设置当前元素的位置;

当前元素 =索引元素的顶部元素值,每个列的宽度;

/ / oboxs {我}。style.left = oboxs {指数}。offsetleft +PX;

获取左元素的当前值;

在第一列索引中的这一点;

Harr {指数} + = oboxs {我}。offsetheight;

框元素高度=每列更新后的每一列的原始高度+稍后添加的高度;

};

};

};

js是通过类获取元素的本机;

功能getbyclass(父母,claname){

通过课堂上获得 / /元素;(父父元素;在容器中的claname)

无功boxarr =新的数组();

语句/所有类存储数组,用于访问框的元素;

无功oelements = parent.getelementsbytagname(*)

用于存储(*)父元素的所有子元素的语句变量;

对于(var i = 0;i < oelements.length;i++){

/ / oelements遍历数组;

如果(oelements {我},{ claname classname = =)

/ /如果类在同一claname数组的一个元素的一些参数;

BoxArr.push(oelements {我});

这个盒子 / /分为boxarr数组元素遍历;

};

};

返回boxarr;

调用数组,通过一系列函数遍历,将返回到调用函数数组中;

};

获取数组元素索引;

功能getminhindex(ARR,Val){

/ / ARR是父母阵列;瓦迩是当前元素;

对于(var i在ARR){

从0开始/遍历;

如果(ARR {我} = = val){

查找数组索引中当前对应的元素;

还我;

函数返回值是索引元素的值;

};

};

};

是否检测滚动负载数据块条件;

功能checkscrollslide(){

无功oparent = document.getelementbyid(主要);

无功oboxs = getbyclass(oparent,盒);

无功lastboxh = oboxs { oboxs。length-1 }。offsettop + math.floor(oboxs { oboxs。length-1 }。offsetheight / 2);

/ /最后框元素从页面顶端高度(找到最后一盒(oboxs。lenght-1)offsettop)+自己的一半;

VaR scrollTop = document.body.scrolltop document.documentelement.scrolltop | |;

浏览器/滚动距离;

/ / console.log(scrollTop);

VaR高度= document.body.clientheight document.documentelement.clientheight | |;

浏览器视口高度;

/ / console.log(高度);

返回(lastboxh < scrollTop +高)真的假的;

/ /页面滚动距离大于offsettop盒的最后一个元素;

};
总结:

用瀑布流显示图片要好得多。下面是瀑布流的实现(每行的长度等于浏览器窗口的长度)。它也可以通过CSS3,这很简单,你就知道谷歌一下。

我的想法可能是一幅画的图片插入。当这张线的图片保持长宽比和高度小于250时,一个周期就完成了,也就是说,插入了一行。

然后进入下一个循环并插入下一行。

相关文章

HTML5菜单折叠效果

HTML5菜单折叠效果

菜单,折叠,效果,电脑软件,本文主要介绍了HTML5菜单折叠效果,与猎豹浏览器安装时的用户通知效果类似,您需要的朋友可以参考一下。 用户的通知效果类似于猎豹浏览器的安装。 点击后的效果 复制代码代码如下所示: 折纸效果的GT - kolyi { #包装…

div中的图像是比div下的帧多3像素

div中的图像是比div下的帧多3像素

图像,解决方案,像素,电脑软件,div,DIV在更莫名其妙的3px像填充底底层的东西,这就是常说的3像素的bug,以下是解决方案,需要的朋友可以参考下 不要浪费,先说解决方案。 著名的3像素的bug,你可以设置显示:img的CSS块; 像填充底/ DIV莫名多出去除3p…

徒手9使用技能介绍(图形)

徒手9使用技能介绍(图形)

图形,技能,电脑软件,本教程是向你介绍徒手9,使用技巧,教程很全面,也很详细,非常适合朋友学习,转发,希望能帮到你。 本教程是向你介绍徒手9,使用技巧,教程很全面,也很详细,非常适合朋友学习,转发,希望能帮到你! 写意9布局简论 不同的视图模式(包括放大/缩…

不确定宽度和高度图像中垂直中心的

不确定宽度和高度图像中垂直中心的

图像,不确定,宽度,样式,高度,本文主要介绍了div中的图像是垂直居中的,以及CSS样式是如何在宽度和高度不确定的情况下编写的。 最简单的方法是设置外部元素的CSS属性: 复制代码代码如下所示: div { 显示:表单元格; } 但IE6 / 7不支持CSS样式,并…

对console.trace方法在Node.js的使

对console.trace方法在Node.js的使

使用说明,方法,电脑软件,console,trace,方法显示: 将当前调用堆栈输出到标准错误流。 Grammar: 复制代码代码如下所示: Console.trace(标签) 接收参数: 标签 实例uff1a 复制代码代码如下所示: Console.trace(); 操作结果: 特雷斯: 在对象。( /…

选择了什么样的图像文件格式

选择了什么样的图像文件格式

图像,文件格式,选择了,电脑软件,选择图像文件格式之间应该是透明的,颜色深,有三的压缩率,如果色彩丰富的颜色,不透明度的支持,然后检测是最合适的选择;如果你需要支持透明度,然后JPG无疑是第一选择 一种,哪三种格式 分别是GIF、JPG和PNG。 两。为…

复选框、选择取消和跨页面保存实现

复选框、选择取消和跨页面保存实现

取消,选择,方法,复选框,页面,复制代码代码如下所示: $(文档)Ready(函数(){) 选择复选框 * / $(,并)。活(单击 如果($(this)。Attr(检查)= =检查){ / /如果选择 CheckAll(); {人} UnCheckAll(); } UpdateHfValues(); }); $(。checkone)。每个(函数(){) $(这个)。 CheckOne(); Upd…

一种简单快速的PS颜色筛选方法

一种简单快速的PS颜色筛选方法

方法,筛选,颜色,快速,简单,本教程是一个简短的介绍朋友谁使用PS简单和快速筛选出某种颜色的图片。这个教程既实用又难。新手也可以来学习。推荐,喜欢的朋友可以跟着教程一起学习。 像本教程的ps学习者介绍了一种简单快速的方法来屏蔽图片上…

PS制作浪漫爱情艺术摄影教程

PS制作浪漫爱情艺术摄影教程

教程,浪漫爱情,艺术摄影,电脑软件,PS,本教程将向你介绍用PS制作浪漫爱情艺术的方法,这非常适合初学者学习。对初学者来说是很好的学习,尤其是浪漫的朋友。让我们从下一步学习。 每个人都喜欢浪漫,但有几个浪漫的人谁会做这件事。这里有一点关…

PHP网页病毒清除类

PHP网页病毒清除类

清除,网页,电脑软件,PHP,本文演示了PHP网页的病毒清除,供大家参考: 很多人的网页在PHP、ASP、HTML、js等文件中经常被忽略,并有很多木马地址,造成很多麻烦!我曾经有过这样的站,所以我在仇恨之下写下了这段代码。虽然这篇文章浪费了很多资源,但它…

CKEditor着色代码代码高亮插件,完美

CKEditor着色代码代码高亮插件,完美

插件,代码高亮,代码,完美,电脑软件,使用FCKeditor CKEditor对象是不一样的,不直接调用innerHTML和outerHTML,绕了一个大弯,插入新节点到当前节点,然后删除原始节点…这很傻,但它解决的问题。 顺便说一下,一个选项被添加到高级配置页面,而不是自动…

在DreamweaverCS4界面新功能介绍

在DreamweaverCS4界面新功能介绍

新功能,界面,电脑软件,Dreamweaver CS4的界面和功能都发生了很大的变化,让我们跟随作者看看DW CS4已经添加到界面中。接下来,网页教学网将带来一些设计和DW CS4继承代码的经验。我希望每个人都能喜欢它! 相关文章:Dreamweaver CS4第一新功能试…