美文网首页
js懒加载加动画

js懒加载加动画

作者: 羊绘霖 | 来源:发表于2019-05-22 14:51 被阅读0次

html:

<div id="container" class="">

    <div class="box">

        <div class="box-img">

            <div class="img">

                <img src="../static/img/item1.png" alt="">

                <p>爱看的救护车将碍事的合成法可接受的</p>

            </div>

        </div>

    </div>

    <div class="box">

        <div class="box-img">

            <div class="img">

                <img src="../static/img/item2.png" alt="">

                <p>爱看的救护车将碍事的合成法可接受的</p>

            </div>

        </div>

    </div>

    <div class="box">

        <div class="box-img">

            <div class="img">

                <img src="../static/img/item3.png" alt="">

                <p>爱看的救护车将碍事的合成法可接受的</p>

            </div>

        </div>

    </div>

    <div class="box">

        <div class="box-img">

            <div class="img">

                <img src="../static/img/item4.png" alt="">

                <p>爱看的救护车将碍事的合成法可接受的</p>

            </div>

        </div>

    </div>

    <div class="box">

        <div class="box-img">

            <div class="img">

                <img src="../static/img/itemActive1.png" alt="">

                <p>爱看的救护车将碍事的合成法可接受的</p>

            </div>

        </div>

    </div>

    <div class="box">

        <div class="box-img">

            <div class="img">

                <img src="../static/img/itemActive2.png" alt="">

                <p>爱看的救护车将碍事的合成法可接受的</p>

            </div>

        </div>

    </div>

    <div class="box">

        <div class="box-img">

            <div class="img">

                <img src="../static/img/itemActive4.png" alt="">

                <p>爱看的救护车将碍事的合成法可接受的</p>

            </div>

        </div>

    </div>

    <div class="box">

        <div class="box-img">

            <div class="img">

                <img src="../static/img/item1.png" alt="">

                <p>爱看的救护车将碍事的合成法可接受的</p>

            </div>

        </div>

    </div>

    <div class="box">

        <div class="box-img">

            <div class="img">

                <img src="../static/img/item2.png" alt="">

                <p>爱看的救护车将碍事的合成法可接受的</p>

            </div>

        </div>

    </div>

    <div class="box">

        <div class="box-img">

            <div class="img">

                <img src="../static/img/item3.png" alt="">

                <p>爱看的救护车将碍事的合成法可接受的</p>

            </div>

        </div>

    </div>

    <div class="box">

        <div class="box-img">

            <div class="img">

                <img src="../static/img/item4.png" alt="">

                <p>爱看的救护车将碍事的合成法可接受的</p>

            </div>

        </div>

    </div>

    <div class="box">

        <div class="box-img">

            <div class="img">

                <img src="../static/img/item1.png" alt="">

                <p>爱看的救护车将碍事的合成法可接受的</p>

            </div>

        </div>

    </div>

</div>

css:

#container{

position:relative;

    width:100%;

}

.box{

float:left;

    padding:5px;

    width:48%;

}

.box-img{

padding:5px;

    border:1px solid #ccc;

    box-shadow:0 0 5px #ccc;

    border-radius:5px;

}

.box-img .img{

width:100%;

    height:auto;

    transition:all 0.6s;

}

.box-img .img img{

width:100%;

    height:auto;

}

.box-img .img p{

line-height:40px;

    font-size:14px;

}

js:

window.onload = function () {

    // imgLocation('container', 'box');

    // 模仿数据

    var imgData = {"data": [{"src":"item1.png"},{"src":"item2.png"},{"src":"item3.png"},{"src":"item4.png"},{"src":"itemActive4.png"}]};

    window.onscroll = function () {

        if (checkFlag()) {

            var cparent = document.getElementById("container");

            for (var i =0; i<imgData.data.length; i++) {

                var ccontent = document.createElement('div');

                ccontent.className = 'box';

                cparent.appendChild(ccontent);

                var boxImg = document.createElement('div');

                boxImg.className = 'box-img';

                ccontent.appendChild(boxImg);

                var BImg = document.createElement('div');

                BImg.className = 'img';

                boxImg.appendChild(BImg);

                var img = document.createElement("img");

                BImg.style.cssText = 'opacity: 0; transform:scale(0)';

                img.src = "../static/img/" + imgData.data[i].src + "";

                BImg.appendChild(img);

                var p = document.createElement("p");

                p.innerText = '爱看的救护车将碍事的合成法可接受的';

                BImg.appendChild(p);

                (function(BImg){  // 自执行程序闭包

                    setTimeout(function(){

                        BImg.style.cssText="opacity:1;transform:scale(1)";

                    },1000); // 这里的时间自定,我是为了测试才写的1000

                })(BImg);

}

            // imgLocation('container', 'box');

        }

}

    function imgLocation(parent, content) {

        debugger

        // 将parent下面的所有content全部取出

        var cparent = document.getElementById(parent);

        var ccontent = getChildElement(cparent, content);

        // 完善图片布局

        var imgWidth = ccontent[0].offsetWidth; // 图片的宽度

        var num = Math.floor(document.documentElement.clientWidth / imgWidth); // 横排的显示个数

        cparent.style.cssText = "width:" + imgWidth * num + "px;margin: 0 auto"; // 给父级添加宽度

        // 计算图片的高度

        var boxHeightArr = [];

        for (var i=0; i<ccontent.length; i++) {

            if(i < num) {

                boxHeightArr[i] = ccontent[i].offsetHeight;

                console.log(boxHeightArr);

            } else {

                var minHeight =  getMin(boxHeightArr); //最小的高度

                var minIndex = getMinheightLocation(boxHeightArr, minHeight);

                ccontent[i].style.position = 'absolute';

                ccontent[i].style.top = minHeight + 'px';

                ccontent[i].style.left = ccontent[minIndex].offsetLeft + 'px';

                boxHeightArr[minIndex] = boxHeightArr[minIndex] + ccontent[i].offsetHeight; // 更新最小高度

            }

}

}

    function getMin(arr) {  // 得到图片的最小高度

        for(var i=0, ret=arr[0]; i<arr.length; i++) {

            ret = Math.min(ret, arr[i]);  // 依次将最小值赋值给ret,ret始终最小

        }

        return ret;

}

    function getMinheightLocation(boxHeightArr, minHeight) { // 得到图片最小高度的序列号

        for (var i in boxHeightArr) {

            if ( boxHeightArr[i] === minHeight) {

                return i;

}

}

}

    function getChildElement(cparent, content) { // 得到子集空间

        var contentArr = [];

        var allcontent = cparent.getElementsByTagName('*'); // 获取到所有的元素

        for (var i=0; i<allcontent.length; i++ ) {

            if (allcontent[i].className === content) {

                contentArr.push(allcontent[i]);

}

}

        return contentArr;

}

    function checkFlag() {

        var cparent = document.getElementById('container');

        var ccontent = getChildElement(cparent, "box");

        // 数组最后一个元素的高度距离顶部的距离

        var lastContentHeight = ccontent[ccontent.length-1].offsetTop;

        var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;

        var pageHeight = document.documentElement.clientHeight || document.body.scrollHeight;

        if(lastContentHeight < scrollTop + pageHeight){

            return true;

}

}

};

注: 其中注释掉的imgLocation方法为瀑布流效果,如果是高度大小不一的图片可尝试一下瀑布流。

相关文章

  • js懒加载加动画

    html: 爱看的救护车将碍事的合成法可接受的 ...

  • JS

    JS 懒加载,预加载 概念:懒加载也叫延迟加载:JS图片延迟加载,延迟加载图片或符合某些条件时才加载某些图片。预加...

  • js 实现图片懒加载

    一、懒加载 懒加载也叫延迟加载,Js中图片的延迟加载,延迟图片需要符合某些条件时才加载;对于图片过多的页面,为了加...

  • 性能优化

    1、尽量减少HTTP请求的次数 合并js 合并css 图片sprite 2.延迟加载内容 图片的懒加载 数据的懒加...

  • web优化之懒加载和预加载

    懒加载和预加载是常用的web优化的手段。所以我们首先应该明白什么是懒加载和预加载。懒加载:懒加载也加延迟加载,延迟...

  • 系统源码简析

    同步加载 异步加载 页面的懒加载,只针对vue文件,js文件被放到app.js中了, 比如 share.js。 a...

  • 懒加载和预加载

    懒加载 js懒加载 意义 懒加载(LazyLoad)是前端优化的一种有效方式,能极大的提升用户体验,图片加载是其重...

  • webpack打包代码实现

    webpack模块加载 异步模块加载 通过 import()实现指定模块的懒加载操作 懒加载的核心原理就是创建js...

  • vue项目性能优化

    对js,css开启gzip压缩,图片是没效果所以不需要 对路由组件进行懒加载,如果使用同步的方式加载组件,在首屏加...

  • 图片懒加载和下拉懒加载

    图片懒加载http://js.jirengu.com/leve/1/edit?html 下拉懒加载http://j...

网友评论

      本文标题:js懒加载加动画

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