html里关于多图上传、点击删除、点击放大功能整合

在多图片上传和点击删除和点击放大预览功能开发时,总是无法找到完整的代码。
在结合各个资料和自己的研究后,总结出了以下代码。
包括的功能有:多图上传、点击删除图片、点击放大预览。
关于保存按钮过于复杂,后面会加以补充。
先来看看效果图
初始化页面初始化页面

上传图片的样子添加图片后

在这里插入图片描述
图片点击放大预览,这里添加了一个遮罩层的效果
在这里插入图片描述
删除图片的效果 ,右上角x是一张图片,添加了点击删除的事件

代码部分:
html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>图片上传预览点击放大</title>
    <meta name="viewport"content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
        </head>
        <body>
		<div class="filterPop" onclick="toHide()"></div>
		<div class="setPops">
		    <img src="" alt="" width="100%" height="100%">
		</div>   <!-- 添加遮罩层 -->
		
		<div class="Box">图片上传</div>
		<div class="Box1">
			<div class="productImg">
				<div id="uploadBox"></div> 
				<div class="uploadDIv">
					<span>+</span><input type="file" name="file" multiple="multiple" id="inputs" accept="image/*" class='fileTest' multiple="multiple" />
				</div>
			</div>
		</div>
</body>
</html>

css:

img {
	width: 100%;
	display: block;
	border: none;
	vertical-align: bottom;
	border: none;
}

.Box1 {
   background-color: #FEFEFF;
    color: #333333;
    font-size: 18px;
    border: 2px solid #088DEA;
    margin-top: 5%;
    margin-left: 5%;
    width: 90%;
}
.Box {
    height: 40px;
    margin-left: 6%;
    line-height: 65px;
    font-size: 18px;
    font-family: FangSong;
    font-weight: bold;
}
.productImg {
height: 530px;
overflow: hidden;
} 
.imgBiMG{
    width: 20%;
    height: 84px;
    float: left;
    display: block;
    margin-left: 7%;
    margin-top: 2%;
}
.uploadDIv {
    width: 95px;
    height: 75px;
    background-color: #edf0f2;
    font-size: 70px;
    color: #bfbfbf;
    text-align: center;
    line-height: 75px;
    float: left;
    position: relative;
    left: 7%;
    top: 5%;
}
.uploadDIv input {
	width: 78px;
	height: 78px;
	opacity: 0;
	position: absolute;
	right: 0px;
	top: 0px;
	z-index: 4;
	padding: 0;
}

.setPops{width: 70%;
    position: absolute;
    left:15%;
    top:50%;
    z-index: 10;
    overflow: hidden;
    display: none;
}
.filterPop{
    background: rgba(0,0,0,.5);
    position: absolute;
    left:0px;
    top:0px;
    width: 100%;
    height:100%;
    z-index: 9;
    overflow: hidden;
    display: none;
}

js:

<script src="../js/jquery.1.10.2.js"></script> //引用jquery,任何版本都行
<script type="application/javascript">
var i = 0;
$(function() {
	var img = []; //创建一个空对象用来保存传入的图片
	var AllowImgFileSize = '1024'; //1兆
	$("#inputs").change(function() {
	var fil = this.files;
	for(var i = 0; i < fil.length; i++) {
    	var curr = fil[i].size;
    	if(curr > AllowImgFileSize * 1024) { //当图片大于99兆提示
    		layer.msg("图片文件大小超过限制 请上传小于1M的文件");
    	} else {
	    	reads(fil[i]);
	    	img.push(fil[i]); // 将传入的图片push到空对象中
    	}
	}
	if(img.length >= 9) { //判断图片的数量,数量不能超过6张
	$('.uploadDIv').hide();
	} else {
	$('.uploadDIv').show();
	}
	});
	})
	function removethis(i){
	
	$("#img"+i+"").remove()
	if($("#uploadBox").children().length<9){
		$('.uploadDIv').show();
	}
}
function reads(fil) {
var reader = new FileReader();
reader.readAsDataURL(fil);	 
reader.onload = function() {
document.getElementById("uploadBox").innerHTML += "<div id='img"+i+"' class='divImg' id='uploadImg'><img onclick='showpicture(this)' src='" + reader.result + "' class='imgBiMG'><img style='width: 5%; float: left;margin-top: 2%; display: block; display: block;' src='../image/sc.png' onclick='removethis("+i+")'></div>";
i++
}
}

//添加点击图片放大
function showpicture(pic){
	$(".filterPop").css("display","block")
	 var setPopsWidth=$(".setPops").width();
    $(".setPops, .filterPop").fadeIn();
    $(".setPops").css({height:setPopsWidth,marginTop:-setPopsWidth/2+"px"});
    $(".setPops").children("img")[0].src=pic.src;
}
function toHide() {
    $(".setPops, .filterPop").fadeOut()
}
</script>

完整代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>图片上传预览点击放大</title>
    <meta name="viewport"content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
        

</head>

 <style type="text/css">
img {
	width: 100%;
	display: block;
	border: none;
	vertical-align: bottom;
	border: none;
}

.Box1 {
   background-color: #FEFEFF;
    color: #333333;
    font-size: 18px;
    border: 2px solid #088DEA;
    margin-top: 5%;
    margin-left: 5%;
    width: 90%;
}
.Box {
    height: 40px;
    margin-left: 6%;
    line-height: 65px;
    font-size: 18px;
    font-family: FangSong;
    font-weight: bold;
}
.productImg {
height: 530px;
overflow: hidden;
} 
.imgBiMG{
    width: 20%;
    height: 84px;
    float: left;
    display: block;
    margin-left: 7%;
    margin-top: 2%;
}
.uploadDIv {
    width: 95px;
    height: 75px;
    background-color: #edf0f2;
    font-size: 70px;
    color: #bfbfbf;
    text-align: center;
    line-height: 75px;
    float: left;
    position: relative;
    left: 7%;
    top: 5%;
}
.uploadDIv input {
	width: 78px;
	height: 78px;
	opacity: 0;
	position: absolute;
	right: 0px;
	top: 0px;
	z-index: 4;
	padding: 0;
}

.setPops{width: 70%;
    position: absolute;
    left:15%;
    top:50%;
    z-index: 10;
    overflow: hidden;
    display: none;
}
.filterPop{
    background: rgba(0,0,0,.5);
    position: absolute;
    left:0px;
    top:0px;
    width: 100%;
    height:100%;
    z-index: 9;
    overflow: hidden;
    display: none;
}

 </style>

<body>
		<div class="filterPop" onclick="toHide()"></div>
		<div class="setPops">
		    <img src="" alt="" width="100%" height="100%">
		</div>   <!-- 添加遮罩层 -->
		
		<div class="Box">图片上传</div>
		<div class="Box1">
			<div class="productImg">
				<div id="uploadBox"></div> 
				<div class="uploadDIv">
					<span>+</span><input type="file" name="file" multiple="multiple" id="inputs" accept="image/*" class='fileTest' multiple="multiple" />
				</div>
			</div>
		</div>
</body>
<script src="../js/jquery.1.10.2.js"></script>
<script type="application/javascript">
var i = 0;
$(function() {
	var img = []; //创建一个空对象用来保存传入的图片
	var AllowImgFileSize = '1024'; //1兆
	$("#inputs").change(function() {
	var fil = this.files;
	for(var i = 0; i < fil.length; i++) {
    	var curr = fil[i].size;
    	if(curr > AllowImgFileSize * 1024) { //当图片大于99兆提示
    		layer.msg("图片文件大小超过限制 请上传小于1M的文件");
    	} else {
	    	reads(fil[i]);
	    	img.push(fil[i]); // 将传入的图片push到空对象中
    	}
	}
	if(img.length >= 9) { //判断图片的数量,数量不能超过6张
	$('.uploadDIv').hide();
	} else {
	$('.uploadDIv').show();
	}
	});
	})
	function removethis(i){
	
	$("#img"+i+"").remove()
	if($("#uploadBox").children().length<9){
		$('.uploadDIv').show();
	}
}
function reads(fil) {
var reader = new FileReader();
reader.readAsDataURL(fil);	 
reader.onload = function() {
document.getElementById("uploadBox").innerHTML += "<div id='img"+i+"' class='divImg' id='uploadImg'><img onclick='showpicture(this)' src='" + reader.result + "' class='imgBiMG'><img style='width: 5%; float: left;margin-top: 2%; display: block; display: block;' src='../image/sc.png' onclick='removethis("+i+")'></div>";
i++
}
}

//添加点击图片放大
function showpicture(pic){
	$(".filterPop").css("display","block")
	 var setPopsWidth=$(".setPops").width();
    $(".setPops, .filterPop").fadeIn();
    $(".setPops").css({height:setPopsWidth,marginTop:-setPopsWidth/2+"px"});
    $(".setPops").children("img")[0].src=pic.src;
}
function toHide() {
    $(".setPops, .filterPop").fadeOut()
}
</script>

</html>



完成搞定。

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
基本信息 Google Android SDK开发范例大全(第3版) 作者:王世江(改编), 佘志龙(作者), 陈昱勋(作者), 郑名杰(作者), 等(作者) 出版社: 人民邮电出版社; 第3版 (2011年11月1日) 丛书名: 移动开发系列丛书 平装: 818页 正文语种: 简体中文 开本: 16 ISBN: 9787115264305 条形码: 9787115264305 商品尺寸: 26 x 18.4 x 3.8 cm 商品重量: 1.3 Kg 编辑本段 内容简介 《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计能力提供了很大的帮助。 全书共分11章,主要以范例集的方式来讲述Android的知识点,详细介绍了开发Android的人机交互界面、Android常用的开发控件、Android手机收发短信等通信服务、开发Android手机的自动服务功能和娱乐多媒体功能以及整合Android与Google强大的网络服务等内容。随书光盘中包括了所有范例的程序代码。 《Google Android SDK开发范例大全(第3版)》继承前两版由浅入深的方式,范例总数由原先的160多个增加到了200多个,在用户交互界面、手机控件、交互式通信服务、手机自助服务、娱乐多媒体等方面均增加了相应的范例来介绍新的开发技术,特别是新增加了第11章来专门介绍HTML5技术在Android移动设备的应用,相信当下两个热门技术的交汇会碰撞出不一样的火花。 《Google Android SDK开发范例大全(第3版)》内容由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。 编辑本段 编辑推荐 《Google Android SDK开发范例大全(第3版)》:全新2.3以上版本精彩范例。新增HTML5手机应用程序范例。影音功能大突破,领先业界的影音播放功能详解。易于阅读的架构设计,边看边学,每个范例均搭配步骤及完成画面。每个范例后面均有扩展学习,在学习范例应用的同时延伸思考。汲取专家经验,指引入门捷径。 移动网络设备(MID,Mobile Internet Device)的发展趋势锐不可当,其中以智能手机最受瞩目。 《Google Android SDK开发范例大全(第3版)》采用范例集的形式,由浅入深地带领Google Android SDK初学者,以及具备Java基础的程序设计人员逐步掌握开发MID的能力。同时,书中200多个范例均可作为开发样板,以此抛砖引玉,进而拓展程序设计人员开发MID的无限可能。精彩范例,原创展现。 更炫的移动设备人机界面配置:豪华Widget、Home Screen App Widgets、隐藏式抽屉-Sliding Drawer等闪亮登场! 完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的整合:网络搜索、联系人、音乐、应用程序、定制手机文件管理、记忆卡I/O存取、双向短信、闹钟服务、开机程序、来电通信互动、拜年短信、信息提醒、电池电量显示、进度显示、取得应用程序信息等。 超酷的娱乐多媒体设计:触控移动事件、建立手势、手势判断控制、屏幕保护程序、启动动画、mp3播放器、3gp影片播放、相机预览拍照、自动对焦、调整音量、信息指令遥控手机、录音控制、自定义动画按钮等 Web Service存取服务:内嵌网页浏览器、Ajax网页特效、手机气象局、网络播放mp3、网络安装apk程序、远程下载手机铃声、XML-RPC移动博客发布器、手机RSS阅读器、地震速报、网页快照等。 完备的Google网络服务:Google语音搜寻、Google远程账号登录、Google Search API、Google Chart API、Google Picasa手机相册、Google Translate API整合等。 Google Map应用:GPS定位、规划导航路径、GPS Google地图、地址反查地理坐标等卫星全球定位实例。 创意程序设计:即时动态桌面、电蚊香、转转轮盘、任务管理器、中英发音字典、手机手电筒、GPS轨迹记录器、女性贴身计时、QR Code二维条码生成器、手机OR Code扫描仪、热量骰子、掷杯筊、正妹墙相簿浏览器、You Tube影片FLV文件下载器等。 HTML5结合Mobile:控制手机
ElementUI 提供了一个 Upload 组件,可以实现上传多张图片并且提供预览和删除功能。以下是详细的实现步骤: 1. 在组件中引入 Upload 组件: ```html <template> <el-upload class="upload-demo" action="/upload" :on-preview="handlePreview" :on-remove="handleRemove" :file-list="fileList" :list-type="'picture-card'" :multiple="true" :auto-upload="false" > <i class="el-icon-plus"></i> </el-upload> </template> ``` 其中,`:on-preview`和`:on-remove`分别绑定了两个方法 `handlePreview` 和 `handleRemove`,用于预览和删除图片。`:file-list`用于绑定已上传图片列表。 2. 在 `methods` 中定义 `handlePreview` 和 `handleRemove` 方法: ```js methods: { handlePreview(file) { // 预览图片 this.$preview(file.url); }, handleRemove(file, fileList) { // 删除图片 this.fileList = fileList; } } ``` 其中,`handlePreview` 方法用于预览图片,`handleRemove` 方法用于删除图片。在 `handlePreview` 方法中,我们可以使用 `$preview` 方法来实现图片的预览。在 `handleRemove` 方法中,我们需要更新已上传图片列表,即将删除后的列表重新赋值给 `fileList`。 3. 在 `mounted` 钩子中定义 `$preview` 方法: ```js mounted() { this.$preview = (url) => { this.$alert(`<img src="${url}" style="max-width: 100%">`, '预览', { dangerouslyUseHTMLString: true }); }; }, ``` 在 `$preview` 方法中,我们使用 `this.$alert` 方法来显示预览图片的弹窗,其中的 `dangerouslyUseHTMLString` 选项用于在弹窗中显示 HTML 字符串。 4. 在 `data` 中定义 `fileList` 数组: ```js data() { return { fileList: [] }; } ``` 这的 `fileList` 数组用于存储已上传图片列表。 至此,我们就完成了 ElementUI Upload 组件的多张图片预览和删除功能实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值