zoukankan      html  css  js  c++  java
  • 使用zepto.js完成的手机相册

    看完老师的视频做的一个手机相册,对我这种菜鸟来说还是直接上代码吧!里面用到17张小图,17张大图,还有animate.css和zepto.min.js ,都可以在网上找到。

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
    <meta charset="UTF-8">
    <!-- <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no"/> -->
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0"/>
    <title>photo</title>
    <link rel="stylesheet" href="animate.css"/>
    <script src="zepto.min.js"></script>
    <style type="text/css">
        blockquote,body,button,dd,dl,dt,fieldset,form,h1,h2,h3,h4,h5,h6,hr,input,legend,li,ol,p,pre,td,textarea,ul,li,img{
            margin: 0;
            padding: 0;
        }
        .clearfix::before,.clearfix::after{
            content:"";
            height: 0;
            line-height: 0;
            display: block;
            visibility: hidden;
            clear: both;
        }
        body{
            background-color: black;overflow: hidden;
        }
        ul{
            list-style: none;
        }
        .container li{        
            float: left;
            overflow: hidden;        
        }
        .large{
            height: 100%;
            width: 100%;
            position: absolute;
            left: 0;
            top: 0;
            background-color: black;
        }
    </style>
    </head>
    <body>
        
    <ul class="container clearfix" id="container">    
    </ul>
    
    <div class="large animated fadeInDown" id="large_container" style="display: none;">
        <img id="large_img" />
    </div>
    <script>
        var num=17;
        var zWin=$(window);
        var render=function(){
            var padding=2;
            var winWidth=zWin.width();
            var picWidth=Math.floor((winWidth-padding*3)/4);
            var tmpl="";
            for (var i = 1; i <=num; i++) {
                var p = padding;
                var imgSrc='img/'+i+'.jpg';
                if (i%4==1) {
                    p=0;
                }
                tmpl+='<li class="animated bounceIn" data-id="'+i+'" style=" '+picWidth+'px;height:'+picWidth+'px;padding-left:'+p+'px;padding-top:'+padding+'px "><canvas id="cvs_'+i+'"></canvas></li>'
                var imageObj=new Image();
                    imageObj.index=i;
                    imageObj.onload=function () {
                        var cvs = $('#cvs_'+this.index)[0].getContext('2d');
                        cvs.width=this.width;
                        cvs.height=this.height;
                        cvs.drawImage(this,0,0);
                    }
                    imageObj.src=imgSrc;
            }    
            $("#container").html(tmpl);
        }
        render();
        var wImage = $('#large_img');
        var domImage = wImage[0];                //image对象的DOM应用
        var loadImg = function (id,callback) {
            $('#container').css({height:zWin.height(),'overflow':'hidden'})
            // $('#container').css({'display':'none'})
            $('#large_container').css({
                zWin.width(),
                height:zWin.height()
            }).show();
            //加载大图
            var imgsrc = 'img/'+id+'.large.jpg';
            var imageObj = new Image();
            imageObj.onload = function () {
                var w = this.width;            //图片的宽高
                var h = this.height;
                var winWidth = zWin.width();        //window的宽高
                var winHidth = zWin.height();
                var realw = winHidth*w/h;
                var paddingLeft = parseInt((winWidth - realw)/2);
                var realh = winWidth*h/w;
                var paddingTop = parseInt((winHidth - realh)/2);
                //横图和竖图切换时需要重置大图的css样式
                wImage.css('width','auto').css('height','auto');
                wImage.css('padding-left','0px').css('padding-top','0px');
                //计算图片的宽高比,判断是横图还是竖图
                if (h/w>1.2) {
                    //图片显示出来
                    wImage.attr('src',imgsrc).css('height',winHidth).css('padding-left',paddingLeft)
                }else{
                    wImage.attr('src',imgsrc).css('width',winWidth).css('padding-top',paddingTop)
                }
                callback&&callback();
            }
            imageObj.src = imgsrc;        
        }
        var cid;
        //给LI做事件绑定;
        $('#container').delegate('li','tap',function(){
            var _id = cid = $(this).attr('data-id')
            loadImg(_id)
        });
    
        //点击大图,返回相册
        $('#large_container').tap(function() {
            $('#container').css({height:'auto','overflow':'auto'})
            // $('#container').css({'display':'block'})
            $(this).hide();
        }).swipeLeft(function(){
            cid++;
            if(cid>num){
                cid = num;
            }else{
                loadImg(cid,function(){                //事件监听
                    domImage.addEventListener('webkitAnimationEnd',function(){    //动画结束之后执行函数
                        wImage.removeClass('animated bounceInRight');
                        domImage.removeEventListener('webkitAnimationEnd')
                    },false)    //控制事件是否冒泡用false参数
                    wImage.addClass('animated bounceInRight');
                });
            }
        }).swipeRight(function(){
            cid--;
            if(cid<1){
                cid = 1;
            }else{
                loadImg(cid,function(){
                    domImage.addEventListener('webkitAnimationEnd',function(){
                        wImage.removeClass('animated bounceInLeft');
                        domImage.removeEventListener('webkitAnimationEnd')
                    },false)
                    wImage.addClass('animated bounceInLeft');
                });
            }
        })
    
    </script>
    </body>
    </html>
  • 相关阅读:
    利用dockerfile定制镜像
    发布Docker 镜像到dockerhub
    Docker 停止容器
    133. Clone Graph
    132. Palindrome Partitioning II
    131. Palindrome Partitioning
    130. Surrounded Regions
    129. Sum Root to Leaf Numbers
    128. Longest Consecutive Sequence
    127. Word Ladder
  • 原文地址:https://www.cnblogs.com/luodiandian/p/7151528.html
Copyright © 2011-2022 走看看