热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用JS实现简单的瀑布流效果_js

哈哈,我又来啦,在这一段时间里,我简单的学习了一下javascript(JS),虽然不是很懂啦,但是我也简单的尝试着做了点小东西,就比如现在流行的瀑布流效果,经过我的努力终于成功的

  哈哈, 我又来啦, 在这一段时间里, 我简单的学习了一下Javascript(js), 虽然不是很懂啦, 但是我也简单的尝试着做了点小东西, 就比如现在流行的瀑布流效果, 经过我的努力终于成功的完成了, 虽然中间非常的坎坷, 并不是一帆风顺但是最终我还是实现了个简单的效果, 下面就为大家简单的介绍下, 不知道的友友们, 有兴趣的话, 可以来参考下, 欢迎指出缺点和不足!

一.瀑布流之准备工作

   首先声明下, 为了方便演示和联系, 我使用的是本地图片, 如果大家有需要的话可以尝试着写下网络的, 不过本地和远端的大致是相同的. 那么我就来简单介绍下本地的瀑布流效果吧, 我们要先准备好八九张图片, 当然啦, 我们实现的是瀑布流效果, 所以最好是高度不相同的, 这样才可以看出来效果, 对吧, 嘿嘿.

二.代码的准备工作

  我们打开开发工具, 先建个html工程, 在内部写下如下代码, 因为是准备工作, 所以刚开始写的都是一些基础性的东西, 就不一一解释了, 直接上代码:

  
   
       
                   
   
   
       
                   
   
   
       
                   
   
   
       
                   
   
   
       
                   
   
   
       
                   
   
   
       
                   
   
   
       
                   
   
   
       
                   
   
   
       
                   
   
   
       
                   
   
   
       
                   
   

   很明显这段代码中也就是几个div标签和几个img标签, 所以是很简单的, 就不多说了, 下面我们来布置css样式.

三.css样式布置

  说句比较实在的话, 对于瀑布流而言, 因为我只是简单的模拟下, 所以css样式的定制, 我并没有特别复杂的定制, 只是简单的把边框和容器(div)大小给定制了下, 还有一些颜色, 话不多说, 直接上代码吧

 /*使用通配符将内外边距都设置为零, 这样看着好看*/ *{     margin: 0px;     padding: 0px; } /*将主容器的布局方式设置为相对布局*/ #contianer{     position: relative; }  .box{     padding: 5px;     float: left; } /*将承载图片的容器定制颜色及边框大小和圆角*/ .boximg{     padding: 5px;     box-shadow: 0 0 5px #ccc;     border: 1px solid #cccccc;     border-radius: 5px; } /*定制图片尺寸*/ .boximg img{     width: 250px;     height: auto; }

  代码中注释已经解释的很清楚了, 就不再过多的赘述了.

四.重点也是瀑布流的难点(JS的实现)

   大家对于瀑布流都不陌生吧, 它主要是顶宽的, 然后根据高度来进行布局, 也就是说在第一行铺满后, 准备排布第二行的时候, 将第二行的第一种图片放在第一行图片高度最小处, 之后依次类推, 先简单的上些代码, 然后一一作解释了, 正所谓有图有真相, 哈哈!

利用JS实现简单的瀑布流效果_js

      这就是在未编写js代码时的效果图, 那么按道理来说下面的图片应该放在第一行第二张图片的位置下面, 应该充分利用空白资源, 那么这要如何来实现呢, 接下来我就附上代码来告诉大家了:

 window.Onload= function(){     waterFlow("container", "box");     } function waterFlow(parent, chirld){     var wparent = document.getElementById(parent);//获取父级div, 最外级容器     var allArr = getAllChirld(wparent,chirld);//获取到所有的class为box的容器div     var wscreenWidth = document.documentElement.clientWidth;//获取屏幕宽度     var wchirldWidth = wparent.getElementsByTagName("*");//获取所有的标签     var num = Math.floor(wscreenWidth/wchirldWidth[0].offsetWidth);//这是一个Math算法, 目的是将小数转变为整数,     // 从而可以知道每行最多容纳几张图片     wparent.style.cssText = "width:"+wchirldWidth[0].offsetWidth*num+"px;margin:0 auto";//固定每行摆放个数 和上下左右边距     //获得每行的最小高度     getMinHeightOfCols(allArr, num); } function getAllChirld(parent,classname){     //获取所有的标签     var wchirld = parent.getElementsByTagName("*");     //创建数组     var chirldArr = [];     //遍历wchirld, 将其中className等于classname(传进来的参数)相同的标签放入数组chirldArr中     for(var i = 0; i

 注释已经很清楚了, 如果还有不了解不知道的地方, 欢迎评论留言, 下面就让我们来看下效果图吧, 嘿嘿

http://www.gaodaima.com/30714.html

利用JS实现简单的瀑布流效果_js

 五.瀑布流之模拟网络加载    写到这里很多人肯定认为已经差不多结束了, 但是我来拓展点小知识吧, 那就是如何实现类似于网络上的无限加载, 下面附上代码吧, 由于时间有点紧张就不做详细的介绍了, 有不懂得欢迎细问: 

window.Onload= function(){
    waterFlow("container", "box");
    var dataInt={"data":[{"src":"1.jpeg"},{"src":"2.jpg"},{"src":"3.jpg"},{"src":"4.jpg"},{"src":"5.jpg"},{"src":"6.jpg"},
        {"src":"7.gif"},{"src":"8.jpg"},{"src":"9.jpg"}]};

    window.Onscroll=function(){
        if(checkscrollside()){
            var oParent = document.getElementById("container");// 父级对象
            for(var i=0;i                 var oPin=document.createElement("div"); //添加 元素节点
                oPin.className="box";                   //添加 类名 name属性
                oParent.appendChild(oPin);              //添加 子节点
                var oBox=document.createElement("div");
                oBox.className="boximg";
                oPin.appendChild(oBox);
                var oImg=document.createElement("img");
                oImg.src="./img/"+dataInt.data[i].src;
                oBox.appendChild(oImg);
            }
            waterFlow("container","box");
        };
    }
}

由于图片大小限制所以无法给各位带来效果图, 望见谅.

好了, 今天的分享就到这里了, 望大家多提意见, 有时间了还会再来, 不懂也可以提问哈, 嘿嘿, 以上就是简单的瀑布流效果, 还不错吧, 加油喽!

欢迎大家阅读《利用JS实现简单的瀑布流效果_js》,跪求各位点评,若觉得好的话请收藏本文,by



推荐阅读
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 最近学习了关于使用最为流行的jquery发送请求,在实践中以最为简单的聊天室作为测验的辅助工具,对相关网页开发有一个初步的认识,希望大家能够一起学习进步。首先介绍一下 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 4554:[Tjoi2016&Heoi2016]游戏 ... [详细]
  • Iwouldliketobeabletohaveasidebarthatcanbetoggledinandoutonabuttonpress.However ... [详细]
  • JavaScript在常人看来都是门出不了厅堂的小语言,仅管它没有明星语言的闪耀,但至少网页的闪耀还是需要它的,同时它是一门很实用的语言,本人平时就喜欢拿它来写点实用工具或应用,本文演示用JavaSc ... [详细]
  • JavaScript概述1.JavaScript定义JavaScript是Netscape公司开发的一种基于对象和事件驱动的脚本语言。它是弱类型语言,只能由浏览器解释执行。其中:脚本语言:解释运行( ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 用JavaScript实现的太空人手表
    用JavaScript实现的太空人手表-JS写的太空人手表,没有用canvas、svg。主要用几个大的函数来动态显示时间、天气这些。天气的获取用到了AJAX请求。代码中有详细的注释 ... [详细]
  • 但有时候,需要当某事件触发时,我们先做一些操作,然后再跳转,这时,就要用JAVASCRIPT来实现这一跳转功能。下面是具体的做法:一:跳转到新页面,并且是在新窗口中打开时:复制代码代码如下:fu ... [详细]
author-avatar
亲爱的某某骗子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有