|   564(字)

移动端的WEB相册实例


移动端的WEB相册实例代码

效果

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<!DOCTYPE html>
<html>
<head>
<title>Bootstrap beign</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="zepto.min.js"></script>
<link href="animate.css" rel="stylesheet" type="text/css">
<style>
blockquote, body, button, dd, dl, dt, fieldset, form, h1, h2, h3, h4, h5, h6, hr, input, legend, li, ol, p, pre, td, textarea, th, ul,img{
margin: 0;
padding: 0;
}
body{background:black;overflow:hidden}
ul{list-style:none}
.clearfix:after{display: block; content: "\20"; height: 0; clear: both; overflow: hidden; visibility: hidden;}/*ie8以上*/
.img-container li img{}
.img-container li {overflow:hidden;float:left;}
.large{width:100%;height:100%;position:absolute;top:0px;left:0px;background-color:black}
</style>
<body>
<ul class="img-container clearfix" id="container">
</ul>
<div class="large animated fadeInDown" id="large_container" style="display:none">
<img id="large_img">
</div>
<script>
var total = 17;
var zWin = $(window);
var render = function(){
var tmpl = '';
var padding = 2;
var scrollBarWidth = 0;
var winWidth = $(window).width();
var picWidth = Math.floor((winWidth-padding*3-scrollBarWidth)/4);
for(var i=1;i<=total;i++){
var p = padding;
if(i%4==1){
p = 0;
}
tmpl+='<li data-id="'+i+'" class="animated bounceIn" style="width:'+picWidth+'px;height:'+picWidth+'px;padding-left:'+p+'px;padding-top:'+padding+'px;"><img src="img/'+i+'.jpg"></li>';
}
$('#container').html(tmpl);
}
render();
var cid;
var wImage = $('#large_img');
var domImage = wImage[0];
var loadImg = function(id,callback){
$('#container').css({height:zWin.height(),'overflow':'hidden'})
$('#large_container').css({
width:zWin.width(),
height:zWin.height()
//top:$(window).scrollTop()
}).show();
var imgsrc = 'img/'+id+'.large.jpg';
var ImageObj = new Image();
ImageObj.src = imgsrc;
ImageObj.onload = function(){
var w = this.width;
var h = this.height;
var winWidth = zWin.width();
var winHeight = zWin.height();
var realw = parseInt((winWidth - winHeight*w/h)/2);
var realh = parseInt((winHeight - winWidth*h/w)/2);
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',winHeight).css('padding-left',realw+'px');;
}else{
wImage.attr('src',imgsrc).css('width',winWidth).css('padding-top',realh+'px');
}
callback&&callback();
}
}
$('#container').delegate('li','tap',function(){
var _id = cid = $(this).attr('data-id');
loadImg(_id);
});
$('#large_container').tap(function(){
$('#container').css({height:'auto','overflow':'auto'})
$('#large_container').hide();
});
$('#large_container').mousedown(function(e){
e.preventDefault();
});
var lock = false;
$('#large_container').swipeLeft(function(){
if(lock){
return;
}
cid++;
lock =true;
loadImg(cid,function(){
domImage.addEventListener('webkitAnimationEnd',function(){
wImage.removeClass('animated bounceInRight');
domImage.removeEventListener('webkitAnimationEnd');
lock = false;
},false);
wImage.addClass('animated bounceInRight');
});
});
$('#large_container').swipeRight(function(){
if(lock){
return;
}
cid--;
lock =true;
if(cid>0){
loadImg(cid,function(){
domImage.addEventListener('webkitAnimationEnd',function(){
wImage.removeClass('animated bounceInLeft');
domImage.removeEventListener('webkitAnimationEnd');
lock = false;
},false);
wImage.addClass('animated bounceInLeft');
});
}else{
cid = 1;
}
});
</script>
</body>
</html>

慕课网移动端的WEB相册课程

demo示例预览
github地址

use your mobile phone

二维码


环境参数

  • CSS3
  • HTML5
  • animate.css
  • zepto.js

知识点

  • 针对WEB相册的tap、touch事件
  • CSS3 动画
  • Zepto框架
  • Canvas等知识的应用。

这里存在一个问题,因为用的七牛的图床 url太多图片加载慢 回头研究前端优化时候补上改进

AlexZ33 wechat
扫码订阅公众号
如果文章对您有用请随意打赏,谢谢支持!