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>
  • 相关阅读:
    Linux命令行常用符号
    IP地址详解
    黑帽子白帽子问题
    点香测算时间
    Linux系统中的压缩和打包
    Python冒泡排序
    Python选择排序
    linux 文件三大特殊权限(SUID SGID SBIT)
    预处理器之头文件嵌套包含最大层数
    一不小心就对未分配的内存进行访问和修改
  • 原文地址:https://www.cnblogs.com/luodiandian/p/7151528.html
Copyright © 2011-2022 走看看