基于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)畫結(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中動(dòng)態(tài)創(chuàng)建元素的三種方法總結(jié)(推薦)
下面小編就為大家?guī)?lái)一篇JS中動(dòng)態(tài)創(chuàng)建元素的三種方法總結(jié)(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10
JavaScript實(shí)現(xiàn)點(diǎn)擊按鈕直接打印
很多網(wǎng)站都有此功能,當(dāng)瀏覽到底部時(shí)都會(huì)有一個(gè)打印按鈕,點(diǎn)擊打印按鈕就可以完成打印功能,功能非常不錯(cuò),人性化,下面通過(guò)本文給大家介紹JavaScript實(shí)現(xiàn)點(diǎn)擊按鈕就打印的代碼,需要的朋友參考下2016-01-01
js實(shí)現(xiàn)textarea限制輸入字?jǐn)?shù)
本文主要介紹了js實(shí)現(xiàn)textarea限制輸入字?jǐn)?shù)的原理與方法。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02
javascript將扁平的數(shù)據(jù)轉(zhuǎn)為樹(shù)形結(jié)構(gòu)的高效率算法
這篇文章主要介紹了javascript將扁平的數(shù)據(jù)轉(zhuǎn)為樹(shù)形結(jié)構(gòu)的高效率算法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
BootStrap實(shí)現(xiàn)響應(yīng)式布局導(dǎo)航欄折疊隱藏效果(在小屏幕、手機(jī)屏幕瀏覽時(shí)自動(dòng)折疊隱藏)
這篇文章主要介紹了BootStrap實(shí)現(xiàn)導(dǎo)航欄的響應(yīng)式布局,當(dāng)在小屏幕、手機(jī)屏幕瀏覽時(shí)自動(dòng)折疊隱藏的效果,非常不錯(cuò),具有參考借鑒價(jià)值,對(duì)bootstrap 響應(yīng)式布局導(dǎo)航欄功能感興趣的朋友一起學(xué)習(xí)吧2016-11-11
Kendo Grid editing 自定義驗(yàn)證報(bào)錯(cuò)提示的解決方法
Kendo UI是一個(gè)強(qiáng)大的框架用于快速HTML5 UI開(kāi)發(fā)?;谧钚碌腍TML5、CSS3和JavaScript標(biāo)準(zhǔn)。今天小編通過(guò)分享本文給大家介紹Kendo Grid editing 自定義驗(yàn)證報(bào)錯(cuò)提示的解決方法2016-11-11
手把手教會(huì)你用Javascript實(shí)現(xiàn)放大鏡效果(詳細(xì)注釋+完整代碼)
放大鏡可以說(shuō)是前端人必須學(xué)會(huì)的程序之一,下面這篇文章主要給大家介紹了關(guān)于手把手教會(huì)你用Javascript實(shí)現(xiàn)放大鏡效果的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-03-03
HTML頁(yè)面定時(shí)跳轉(zhuǎn)方法解析(2種任選)
本文主要對(duì)HTML頁(yè)面定時(shí)跳轉(zhuǎn)進(jìn)行方法介紹:1、meta refresh 實(shí)現(xiàn)。2、JavaScript 實(shí)現(xiàn)。具有很好的參考價(jià)值,需要的朋友一起來(lái)看下吧2016-12-12
JS實(shí)現(xiàn)在Repeater控件中創(chuàng)建可隱藏區(qū)域的代碼
在WEB應(yīng)用中,如何才能使應(yīng)用高效率呢?如何才能吸引用戶呢?這的確是個(gè)大學(xué)問(wèn),頁(yè)面的內(nèi)容,色搭配等都十分重要。但不可忽視的是,多數(shù)情況下,對(duì)于數(shù)據(jù)的呈現(xiàn)方式也是十分重要的。2010-09-09

