HTML+CSS+JS效果特效

带有预加载的瀑布流

2017-02-22  本文已影响0人  小姜先森o0O
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>带有预加载的瀑布流</title>
//css样式随心情写写就好啦 
        <style>
        *{
            margin: 0;
            padding: 0;
            box-sizing:border-box;
            list-style: none;
        }
        body{
            padding-top: 0.1px;
            background: #1E6262;
        }
        #thead{ 
            width: 100%;
            height: 50px;
            line-height: 50px;
            background: #fff;
            text-align: center;
            position: fixed;
            z-index: 1;
            box-shadow: 1px 1px 5px #000;
        }
        #fbody{
            
            width: 1000px;
            margin:0 auto;
            margin-top:50px;  
        }
        #fbody ul{
            width:220px;
            margin:10px 15px;
            float: left;
            overflow: hidden;
        }
        @keyframes mmmm{
            0%{transform:rotateZ(0deg)}
            100%{transform:rotateZ(360deg)}
        }
    </style>
//开始写js代码啦
    <script>
        window.onload = function(){
            //获取到当前界面中的所有ul
            var uls = document.querySelectorAll('ul');
            //执行创建li的函数;
            createLi();
                        //当浏览器滚动条滚动时触发事件...
            window.onscroll = function(){
                        //获取浏览器窗口兼容写法(你也可以不写)
                var dody = document.documentElement || document.body;
                        //获取浏览器高度和可视化高度 ,他们的差值就是浏览器滚过手起来的高度
                var max = dody.offsetHeight-dody.clientHeight;
                        //获取浏览器滑块滚过的高度
                var height = document.documentElement.scrollTop || document.body.scrollTop;
                        //判断浏览器卷起来的高度和滑块滚过的高度
                if(height >= max){
                         //相同就在执行一遍创建li函数;
                    createLi();
                }
            }
//这里就是创建li的函数啦
            function createLi(){
 //让它创建20遍(当然你也可以随便弄啦);
                for (var i = 0; i < 20; i++) {
 //创建li标签
                    var li = document.createElement('li');
                    
                    //给li动态加样式--------------
                    li.style.width = "100%";
                    li.style.height = randomFn(300,500)+"px";
                    li.style.textAlign = 'center';
                    li.style.marginTop = "15px";
                    li.style.borderRadius = '50px';
                    li.style.border = "6px solid #fff"
                    li.style.overflow = "hidden";
                    li.style.boxShadow = "1px 4px 4px #000";
                    li.style.background = "#fff";
                    //给li动态加样式--------------

                    //调用添加图片函数
                    creataImg(li,"https://unsplash.it/220/"+parseInt(li.style.height)+"?random");
                                        
                                        //判断哪个ul的高度最矮用到的临时变量
                    var ulHeigh = uls[0]; 
                                        //遍历ul
                    for (var j = 0; j < uls.length; j++) {
                                        //来判断哪个ul的高度最矮
                        if(ulHeigh.offsetHeight>uls[j].offsetHeight){
                                        //谁最矮ulHeight就等于谁;
                            ulHeigh = uls[j];
                        }
                    }
                                        //然后把li放到最矮的ul中
                    ulHeigh.appendChild(li);
                }
            }
        }
//创建图片函数(里面有两个形参分辨是,要添加的位置,和要添加的图片地址毕竟不一样的图看着好看);
        function creataImg(li,src){
 //创建一个图片
            var img = document.createElement("img");
    //给图片添加一个加载时的临时图片       
            img.src = "http://www.easyicon.net/api/resizeApi.php?id=1189601&size=48";
            
            //添加载图片添加动画-----------------(小圆圈转)
            img.style.animationName = "mmmm";
            img.style.animationDuration = "5s";
            img.style.animationIterationCount = "infinite";
            //添加载图片添加动画-----------------
//把图片放进要添加的li中
            li.appendChild(img);

//在创建一个用来加载图片的变量
            var imgNode = new Image();
//监听图片是否加载完成
            imgNode.onload = function(){
//加载完成后把动画清除掉
                img.style.animationName = "";
//加载完后把上边的临时图片更换;
                img.src = this.src;
            }
//添加准备加载的图片             
            imgNode.src = src;
        }

        //创建一个随机函数(为了上边的图片高度不同);
        function randomFn(min,max){
            return Math.floor(Math.random()*(max-min)+min);
        }
    </script>
</head>
<body>
    <div id="thead">
        <h1>带有预加载的瀑布流</h1>
    </div>
    <div id="fbody">
        <ul></ul>
        <ul></ul>
        <ul></ul>
        <ul></ul>
    </div>
</body>
</html>
上一篇下一篇

猜你喜欢

热点阅读