基于zepto.js實(shí)現(xiàn)手機(jī)相冊(cè)功能
看完老師的視頻做的一個(gè)手機(jī)相冊(cè),對(duì)我這種菜鳥(niǎo)來(lái)說(shuō)還是直接上代碼吧!里面用到17張小圖,17張大圖,還有animate.css和zepto.min.js ,都可以在網(wǎng)上找到。
<!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=" width:'+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對(duì)象的DOM應(yīng)用 var loadImg = function (id,callback) { $('#container').css({height:zWin.height(),'overflow':'hidden'}) // $('#container').css({'display':'none'}) $('#large_container').css({ width: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); //橫圖和豎圖切換時(shí)需要重置大圖的css樣式 wImage.css('width','auto').css('height','auto'); wImage.css('padding-left','0px').css('padding-top','0px'); //計(jì)算圖片的寬高比,判斷是橫圖還是豎圖 if (h/w>1.2) { //圖片顯示出來(lái) 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) }); //點(diǎn)擊大圖,返回相冊(cè) $('#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(){ //事件監(jiān)聽(tīng) domImage.addEventListener('webkitAnimationEnd',function(){ //動(dòng)畫(huà)結(jié)束之后執(zhí)行函數(shù) wImage.removeClass('animated bounceInRight'); domImage.removeEventListener('webkitAnimationEnd') },false) //控制事件是否冒泡用false參數(shù) 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>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JS保存、讀取、換行、轉(zhuǎn)Json報(bào)錯(cuò)處理方法
JS保存、讀取 換行 轉(zhuǎn)Json報(bào)錯(cuò)異常信息:Unexpected token ILLEGAL,具體解決方法如下,感性的朋友可以參考下哈2013-06-06js下將字符串當(dāng)函數(shù)執(zhí)行的方法
js下將字符串當(dāng)函數(shù)執(zhí)行的方法,需要的朋友可以參考下。2011-07-07CountUp.js數(shù)字滾動(dòng)插件使用方法詳解
這篇文章主要為大家詳細(xì)介紹了CountUp.js數(shù)字滾動(dòng)插件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10JavaScript回調(diào)函數(shù)callback用法解析
這篇文章主要介紹了JavaScript回調(diào)函數(shù)callback用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01element-plus 官方表格排序問(wèn)題小結(jié)
在使用Element Plus官方API時(shí),表格默認(rèn)排序可能會(huì)遇到問(wèn)題,一個(gè)列表可能被多次排序影響數(shù)據(jù)展示,解決方法是修改useSortTable.js文件,這樣可以確保表格按預(yù)期正確排序,更多詳情可查閱相關(guān)的技術(shù)文檔或資源2024-10-10JavaScript實(shí)現(xiàn)找出數(shù)組中最長(zhǎng)的連續(xù)數(shù)字序列
這篇文章主要介紹了JavaScript實(shí)現(xiàn)找出數(shù)組中最長(zhǎng)的連續(xù)數(shù)字序列的方法,需要的朋友可以參考下2014-09-09Google的跟蹤代碼 動(dòng)態(tài)加載js代碼方法應(yīng)用
Google的跟蹤代碼 動(dòng)態(tài)加載js代碼,需要的朋友可以參考下2012-11-11JavaScript進(jìn)階(四)原型與原型鏈用法實(shí)例分析
這篇文章主要介紹了JavaScript原型與原型鏈,結(jié)合實(shí)例形式分析了JavaScript原型與原型鏈基本概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-05-05詳解JavaScript中?.、??和??=的用法及使用場(chǎng)景
這篇文章主要為大家詳細(xì)介紹了JavaScript中?.、??和??=的用法及使用場(chǎng)景,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-08-08