基于zepto.js实现手机相册功能
发布时间 - 2026-01-11 02:17:38 点击率:次看完老师的视频做的一个手机相册,对我这种菜鸟来说还是直接上代码吧!里面用到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=" 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对象的DOM应用
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);
//横图和竖图切换时需要重置大图的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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# zepto.js
# 手机相册
# JavaScript实现相册弹窗功能(zepto.js)
# 基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
# 菜鸟
# 对我
# 看完
# 绑定
# 大家多多
# 小图
# 结束之后
# 时需
# 加载
# 在网上
# fieldset
# form
# dl
# dt
# type
# text
# style
# script
# src
# href
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
桂林网站制作公司有哪些,桂林马拉松怎么报名?
JavaScript Ajax实现异步通信
JavaScript实现Fly Bird小游戏
Python正则表达式进阶教程_复杂匹配与分组替换解析
如何确保FTP站点访问权限与数据传输安全?
网站制作企业,网站的banner和导航栏是指什么?
nodejs redis 发布订阅机制封装实现方法及实例代码
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
Angular 表单中正确绑定输入值以确保提交与验证正常工作
在centOS 7安装mysql 5.7的详细教程
打造顶配客厅影院,这份100寸电视推荐名单请查收
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复
如何将凡科建站内容保存为本地文件?
千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】
音乐网站服务器如何优化API响应速度?
如何在IIS中新建站点并解决端口绑定冲突?
如何用免费手机建站系统零基础打造专业网站?
Python文件异常处理策略_健壮性说明【指导】
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
Python高阶函数应用_函数作为参数说明【指导】
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
如何在IIS7上新建站点并设置安全权限?
Laravel如何为API生成Swagger或OpenAPI文档
实例解析Array和String方法
Android使用GridView实现日历的简单功能
大连网站制作公司哪家好一点,大连买房网站哪个好?
敲碗10年!Mac系列传将迎来「触控与联网」双革新
Laravel用户密码怎么加密_Laravel Hash门面使用教程
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】
原生JS实现图片轮播切换效果
Laravel如何创建自定义Artisan命令?(代码示例)
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
PHP 500报错的快速解决方法
Laravel如何与Pusher实现实时通信?(WebSocket示例)
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
Android自定义控件实现温度旋转按钮效果
EditPlus中的正则表达式实战(5)
如何自定义建站之星模板颜色并下载新样式?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
php打包exe后无法访问网络共享_共享权限设置方法【教程】
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
如何快速重置建站主机并恢复默认配置?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?

