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

JavaScript实现瀑布流以及加载效果

JavaScript实现瀑布流以及加载效果

一、瀑布流是个啥?

  瀑布流,是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部。

  最早采用瀑布流布局的网站是Pinterest,逐渐在国内流行开来,比如我们熟知的百度图片的布局,在“很久”以前,百度图片还是需要一页一页的点击进行查看更多图片,而现在的瀑布流布局使用户查找图片更加方便。

二、瀑布流的优缺点

优点:

1.节省了页面的空间,不再需要导航和页码按钮。

2.增强了用户的体验,使用户的体验更多的是在于浏览图片上,而不是在寻找怎么找下一页和切换的操作上。

缺点:

1.使用的网页类型有限:

  这种瀑布流布局只适用于某些特定类型产品中一部分特定类型的内容。

  比如我们在某宝买东西时,我们就需要记住第几页的哪个商品是我们想买的,然后再回头购买,这时候就需要我们的页面按钮来帮忙记忆,瀑布流反而更加麻烦。

2.永远看不到的页脚:

  如果我们使用瀑布流无限滚动加载模式,那就是说我们永远也无法看到我们的页脚,当用户一次次的浏览到页面底部,看到页脚,却因为自动加载的内容的突然出现,无论怎样都无法点击到页脚中的链接或登录时,那么用户的体验是极为糟糕的,他们可能会愤怒的关掉你的网页。

3.关于页面数量:

  对于用户来说,使用瀑布流自动加载来替代传统的换页其实是很方便的,而对于开发者的网站来说,页面的减少可能就无法展示更多地相关信息,最明显的就是广告减少。

三、瀑布流写法及原理

瀑布流到底长什么样子呢,那我们现在就来默写一个简单的瀑布流布局。先把乱七八糟的基础样式和布局稍微的敲一下~这里我们为了节省空间,就不缩进啦~

CSS:

*{margin: 0;padding: 0;}  #wrap{width: 840px;margin: 0 auto;border: 1px solid black;overflow: hidden;}#wrap ul{width: 200px;margin: 0 5px;float: left;}#wrap ul li{width: 200px;list-style: none;margin: 10px 0;background: palegreen;font-size: 50px;color: white;text-align: center;}

HTML:

<div id="wrap">  <ul></ul>  <ul></ul>  <ul></ul>  <ul></ul></div>

以下是简单的JS代码:

var wrap=document.querySelector("#wrap");var ul=document.querySelectorAll("#wrap ul");//声明元素块//先创建一个随机数的函数function ranDom(min,max){  return Math.random()*(max-min+1)+min;}//再创建一个添加li的函数function createLi(num){  for(var i=0;i<num;i++){    var newLi=document.createElement("li");//创建li    newLi.style.height=ranDom(100,400)+"px";//使用随机数函数创建高度不同的li    var arrul=[];//将ul的高度进行储存和比较    for(var j=0;j<ul.length;j++){      arrul.push(ul[j].offsetHeight);//储存ul的高度    }    var minHeight=arrul[0];    var minIndex=0;    for(var k=0;k<arrul.length;k++){      if(minHeight>arrul[k]){        minHeight=arrul[k];//比较出高度最短的ul然后赋值给minHeight        minIndex=k;//把高度最短的ul所在下标赋值给minIndex      }    }  ul[minIndex].appendChild(newLi);//向高度最短的ul里添加li  }  }createLi(15);//执行函数,添加15个li,//创建一个滚动事件window.onscroll=function(){ // html总高度-可视化窗口高度=body的滚动高度//兼容写法   var scrollTop=document.body.scrollTop;   var clientHeight=document.documentElement.clientHeight||document.body.clientHeight||window.innerHeight;   if(document.documentElement.offsetHeight-clientHeight<=scrollTop){     createLi(15);   } }//当滚动快要到达底部,还没有到达的时候,再去执行函数,创建新的li 

这样我们就实现了永远也看不到页脚的自动加载瀑布流布局。

四、总结

  瀑布流简单来讲就是页面容器内的多个高度不固定的容器之间参差不齐的添加内容,鼠标滚动时不断在容器内的尾部加载数据,且自动加载到空缺位置,也就是例子中的高度最短的位置,不断循环。

  瀑布流对于图片的展现,是高效而具有吸引力的,用户一眼扫过的快速阅读模式可以在短时间内获得更多的信息量,而瀑布流里自动加载又避免了用户鼠标点击的翻页操作。

  瀑布流的主要特性便是错落有致,定宽而不定高的设计让页面区别于传统的矩阵式图片布局模式,巧妙的利用视觉层级,视线的任意流动又缓解了视觉疲劳,同时给人以不拘一格的感觉。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关文章

AngularJS 使用ng-repeat报错 [ngR

AngularJS 使用ng-repeat报错 [ngR

报错,电脑软件,ng,AngularJS,repeat,AngularJS 使用ng-repeat报错 [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify uniqng-repeat报错<div ng-init="words = ['高校','高校','…

excel2010饼形图的制作方法excel20

excel2010饼形图的制作方法excel20

饼形图,制作方法,电脑软件,strong,  在Excel中经常会使用到图表进行对数据分析、查看、对比辅助。而饼形图则是一个很常用的图表。接下来请欣赏小编给大家网络收集整理的excel2010饼形图的制作方法。excel2010饼形图的制作方法例:上海虹口…

在Word文档中表格怎么让文字环绕

在Word文档中表格怎么让文字环绕

文字,文档,表格,电脑软件,Word,  在Word 中,见得比较多的是文字环绕图片;不过,表格也可以让文字环绕,这种情况可能比较少,毕竟表格不会太小通常都要占满一页的宽度。以下是小编为您带来的关于Word文档中表格让文字环绕,希望对您有所帮助。Word…

微信小程序 this和that详解及简单

微信小程序 this和that详解及简单

简单实例,详解,程序,电脑软件,微信小,微信小程序中,在wx.request({});方法调用成功或者失败之后,有时候会需要获取页面初始化数据data的情况,这个时候,如果使用,this.data来获取,会出现获取不到的情况,调试页面也会报undefiend。原因是,在javascrip…

word位置怎么调整word调整位置的方

word位置怎么调整word调整位置的方

位置,调整,方法,设置,图片大小,  在word插入图片时,位置不总是那么如人所意,当想要把图片的位置调到你满意的位置要怎么做呢?接下来小编为你分享word调整图片位置的方法。希望对你有帮助!word调整图片位置的方法第1步,打开Word2007文档窗口,选…

excel表格金额汇总的教程excel表格

excel表格金额汇总的教程excel表格

金额,教程,表格,电脑软件,excel,  Excel中的表格具体该如何进行金额汇总呢?下面是小编带来的关于excel表格金额汇总的教程,希望阅读过后对你有所启发!excel表格金额汇总的教程金额汇总步骤1:制作如下图所示表格并输入基础数据。(特别说明:标…

php输出全部gb2312编码内的汉字方

php输出全部gb2312编码内的汉字方

输出,方法,编码,汉字,电脑软件,php输出全部gb2312编码内的汉字,$area表示分区,$pos表示分区内所在位置。<?php$fp = fopen('t.txt', 'a');for($area = 0xb0; $area <= 0xf7; $area++) for($pos = 0xa1; $pos <= 0xfe; $pos++) fwrite…

JavaScript原生数组Array常用方法

JavaScript原生数组Array常用方法

原生,常用方法,数组,电脑软件,JavaScript,栈方法push方法和pop方法, 可以使数组的行为类似于栈, 先进后出, 并且推入和弹出操作只发生在一端.push方法push方法可以接收一个或多个参数, 把它们追加到数组末尾, 并返回修改后数组的长度.var a…

PS怎么抠掉人物照片中的多余人员

PS怎么抠掉人物照片中的多余人员

片中,多余,人物,人员,花丛,  在素材图片中要消除的部分比较多,有多个人物和其他杂物;修复的时候先把地平线区域修复好,然后再修复天空和地面的区域,这样修复的效果就自然真实很多。以下是小编为您带来的关于PS抠掉户外花丛人物照片中的多余…

怎么在word中设计一款新颖的圆形头

怎么在word中设计一款新颖的圆形头

圆形头像,新颖,电脑软件,word,  平时的微信头像太平淡,怎么能新颖点呢?有人说可以使用PS软件来设计头像,可是不熟悉的人就不会了。其实可以用Word来做,Word也可以设计圆形头像。以下是小编为您带来的关于word中设计一款新颖的圆形头像,希望对…

word2013文档制作标题折叠的方法是

word2013文档制作标题折叠的方法是

折叠,方法,文档,标题,电脑软件,  word2013中有一项非常有趣的功能,就是折叠标题,顾名思义:标题下面的文字能都折叠起来。以下是小编为您带来的关于word2013文档制作标题折叠的方法,希望对您有所帮助。word2013文档制作标题折叠的方法1、首先,…

简单谈谈原生js的math对象

简单谈谈原生js的math对象

对象,原生,简单,电脑软件,js,Math对象方法//返回最大值 var max=Math.max(95,93,90,94,98); console.log(max); //返回最小值 var min=Math.min(95,93,90,94,98); console.log(min); //向上取整 console.log…