美文网首页
感应式瀑布流+图片的预加载

感应式瀑布流+图片的预加载

作者: 2dcc2b155e1e | 来源:发表于2017-11-06 22:39 被阅读0次

先声明一个数组,再创建img,再放进数组里,不让它被回收,当设置src时,就会发出请求,下载图片的路径,把所有的图片的路径都下载好后,再执行,因为已经提前请求了路径了,在同一个页面,请求过一次后,下面再用相同路径图片的时候就不用再请求了,可以瞬间加载好所有已经预加载的图片了

<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>图片版瀑布流</title>
<style type="text/css">
.box{
width: 100%;
border: 1px purple solid;
position: relative;
margin: 0 auto;
/min-width: 200px;/
}
.box img{
width: 200px;
position: absolute;
transition: 0.5s;
}
</style>
</head>
<body>
<div>
<progress min="0" max="100" value="0" id="progress" ></progress>
</div>
<div class="box">
</div>
</body>
<script type="text/javascript">
var progress = document.getElementById("progress");
var box = document.getElementsByClassName('box')[0];
var heightArr=[];
var count = 0;
ar arr = ["wk1.png", "bg.png", "cold.png", "wm.png"]
var imgArr = [];
for(var j = 0; j < 16; j++){
//new Image和document.createElement('img')等价
var readyImg = new Image();
//把声明的对象存到数组里,垃圾回收机制就不会回收图片;
imgArr.push(readyImg);
//图片是在设置完src后就开市加载图片
readyImg.src = "img/P_0" + j + ".jpg”;
//onload方法绑定的是readImage指的对象----16张图片
eadyImg.onload = function(){
count++;
progress.value = (count / 16) * 100;
if(count == 16){
start();
//在这个位置写onresize方法是为了在图片没预加载好之前拖动窗口时不会加载图 片
window.onresize=function(){
start();
}
}
}
}
var isFirst=true;
function start(){
var l=parseInt((window.innerWidth-16)/210);
//如果窗口宽度发生变化,但是猎术没有变,就不能重新布局
if(heightArr.length==l&&l!=0){
return;
}
//如果窗口列数不足1列,也要保证heightArr的长度为1
heightArr.length=l==0?1:l;
box.style.width=210*l+'px';
for (var i=0;i<heightArr.length;i++) {
heightArr[i]=0;
}
for(var i = 0; i < 16; i++){
var img = imgArr[i]
var minIndex = 0;
for(var j = 1; j < heightArr.length; j++){
if (heightArr[minIndex] > heightArr[j]) {
minIndex = j;
}
}
img.style.left = minIndex * 210 + "px";
img.style.top = heightArr[minIndex] + "px";
if (isFirst) {
box.appendChild(img);
}
heightArr[minIndex] += (img.offsetHeight + 10);
}
//在第一次调用完start后关掉开关,不再创建img
isFirst=false;
}
</script>
</html>

相关文章

  • 感应式瀑布流+图片的预加载

    先声明一个数组,再创建img,再放进数组里,不让它被回收,当设置src时,就会发出请求,下载图片的路径,把所有的图...

  • 图片预加载、瀑布流+图片预加载

    图片预加载 图片预加载是为了解决网络卡等一些其他情况造成该显示的图片不能及时的显示,但为了提高网页的完整性,给未能...

  • 预加载、延迟加载、瀑布流、拖拽

    1.预加载-图片: 2.延迟加载 3.瀑布流 瀑布流: 物体大小: 4.拖拽 磁性吸附例子: 虚线框拖拽

  • 瀑布流图片以及预加载

    在web项目开发中,经常遇到需要加载大量的图片,为了�提高用户体验,我们可以使用预加载技术把图片预先加载到浏览器中...

  • 瀑布流--与图片的预加载

    所谓瀑布流,就是图片分几列有规律的排列,但是这里的排列是有要求的,普通的浮动布局会使图片与图片之间有很多的空隙,这...

  • 9-5bug处理

    关于RecyleView瀑布流滑动加载数据,顶部出现空白。 关于RecyleView瀑布流显示加载图片乱跳 下拉刷...

  • 瀑布流加载图片

    瀑布流,又称瀑布流式布局。是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种...

  • 带有预加载的瀑布流

  • jQuery瀑布流插件masonry使用教程

    瀑布流特别适合多图片布局加载,效果很理想。 masonry是基于jquery的瀑布流插件,简单实用,本文就以滑动无...

  • 基于浮动的移动端两列可延时加载的瀑布流布局

    几点说明 1.本文所说的瀑布流指的是等宽不等高的瀑布流 2.本文使用的方法可以使用图片延时加载而不会影响瀑布流效果...

网友评论

      本文标题:感应式瀑布流+图片的预加载

      本文链接:https://www.haomeiwen.com/subject/ajcrmxtx.html