vue.js 图片上传并预览及图片更换功能的实现代码


Posted in Javascript onAugust 27, 2018

这里讲解是图片上传和图片预览。主要是围绕我们常用功能的列子做讲解 ,并且没有格外引入其他js 所以你复制过去做简单修改便可以看到效果

效果图:

vue.js 图片上传并预览及图片更换功能的实现代码vue.js 图片上传并预览及图片更换功能的实现代码

样式以及效果图一并展示

1.HTML

<div class="rz-picter">
             <img :src="avatar" class="img-avatar">
  <input type="file" name="avatar" id="uppic" accept="image/gif,image/jpeg,image/jpg,image/png" @change="changeImage($event)" ref="avatarInput" class="uppic">
  </div>

2.js

data() {
       return {
         avatar: require('../assets/jia.jpg'),
      }
     },

图片一定要以require 的方式引入 这里的图片仅用来美化 并不是上传的图片

3.js 写方法

changeImage(e) {
         var file = e.target.files[0]
         var reader = new FileReader()
         var that = this
         reader.readAsDataURL(file)
         reader.onload = function(e) {
           that.avatar = this.result
         }
       },

就这么几段代码一个上传功能就写好了

4.切记我这里用了css来将input  type = file 的样式重新优化了,并且将图片做了定位 所以点击中间图片就可以触发上传

vue.js 图片上传并预览及图片更换功能的实现代码

你需要你的需求去定义你的样式

5.运用原生javascript我做了一个判断图片是否上传的的判断

if(document.getElementById('uppic').value.length == '') {
           Toast('请上传图片');
           return
 }

6.附上css代码

.uppic {
     height: 3rem;
     width: 6rem;
     margin: 0 auto;
     opacity: 0;
     z-index: 99999;
   }
   .img-avatar {
     position: absolute;
   }

附上写此功能所有代码

<template>
 <div class="renzheng">
 <div class="rz-notice" v-bind:style="{ display: isno}">
  <p>名片用来鉴别是相关人员,温馨提示:<img src="../assets/static/img-icon/lan_cha.png" @click="hiddenwords"></p>
 </div>
 <van-tabs v-model="active" swipeable>
  <van-tab v-for="(item,index) in navArr" :title="item.name" class="v-tab">
  <div v-if="index==0">
   <div class="color-black" style="text-align: center;margin-top: 0.4rem;">请上传本人名片照片</div>
   <div class="rz-picter">
   <img :src="avatar" class="img-avatar">
   <input type="file" name="avatar" id="uppic" accept="image/gif,image/jpeg,image/jpg,image/png" @change="changeImage($event)" ref="avatarInput" class="uppic">
   </div>
   <div class="cuxian"></div>
   <div class="my-content-list">
   <div class="color-black"><span style="margin-right: 0.6rem;">真实姓名:</span><input v-model="yoursname" placeholder="请输入您的真实姓名" /></div>
   </div>
   <div class="my-content-list">
   <div class="color-black"><span style="margin-right: 0.6rem;">手机号码:</span><input type="number" max="11" v-model="yoursphone" placeholder="请输入您的手机号码" /></div>
   </div>
   <div class="yzbtn" @click="submitBtn">
   立即认证
   </div>
  </div>
  <div v-if="index==1">
   <div class="color-black" style="text-align: center;margin-top: 0.4rem;">请上传本人身份证照片</div>
   <div class="rz-picter">
   <img src="../assets/jia.jpg" />
   <p>上传人像页</p>
   </div>
   <div class="rz-picter">
   <img src="../assets/jia.jpg" />
   <p>上传国辉页</p>
   </div>
   <div class="cuxian"></div>
   <div class="my-content-list">
   <div class="color-black"><span style="margin-right: 0.6rem;">真实姓名:</span><input placeholder="请输入您的真实姓名" /></div>
   </div>
   <div class="my-content-list">
   <div class="color-black"><span style="margin-right: 0.6rem;">手机号码:</span><input type="number" placeholder="请输入您的手机号码" /></div>
   </div>
   <div class="yzbtn">
   立即认证
   </div>
  </div>
  </van-tab>
 </van-tabs>
 </div>
</template>
<script>
 import { Tab, Tabs } from 'vant';
 import { Toast } from 'vant'
 export default {
 name: 'renzheng',
 data() {
  return {
  yoursname: '',
  yoursphone: '',
  avatar: require('../assets/jia.jpg'),
  isno: 'block',
  active: 0,
  navArr: [{
   name: "身份认证"
   },
   {
   name: "实名认证"
   }
  ],
  }
 },
 methods: {
  hiddenwords() {
  this.isno = 'none'
  },
  submitBtn() {
  if(this.yoursname == '') {
   Toast("请填写你的真实姓名");
   return;
  }
  if(this.yoursphone == '' || this.yoursphone == null) {
   Toast("请填写你的手机号码");
   return;
  }
  if(document.getElementById('uppic').value.length == '') {
   Toast('请上传图片');
   return;
  }
  },
  changeImage(e) {
  var file = e.target.files[0]
  var reader = new FileReader()
  var that = this
  reader.readAsDataURL(file)
  reader.onload = function(e) {
   that.avatar = this.result
  }
  },
 },
 mounted: function() {
 }
 }
</script>
<style>
 .rz-notice {
 padding: 0.2rem 0.3rem;
 display: flex;
 flex-direction: row;
 justify-content: space-between;
 align-items: center;
 background: #F0F5FB;
 color: #28D9EF;
 }
 
 .rz-notice img {
 height: 0.22rem;
 width: 0.22rem;
 }
 
 .rz-picter {
 height: 3rem;
 width: 6rem;
 margin: 0.3rem auto;
 border: 0.01rem solid #ededed;
 display: flex;
 flex-direction: column;
 align-items: center;
 justify-content: center;
 }
 
 .uppic {
 height: 3rem;
 width: 6rem;
 margin: 0 auto;
 opacity: 0;
 z-index: 99999;
 }
 .img-avatar {
 position: absolute;
 }
 /*立即验证*/
 
 .yzbtn {
 width: 90%;
 height: 0.8rem;
 background: #FF6600;
 border-radius: 0.06rem;
 margin: 30px auto;
 text-align: center;
 line-height: 0.8rem;
 color: #FFFFFF
 }
 
 
 /*修改原有tab样式*/
 
 .van-tab {
 color: #A3A3A3!important;
 }
 
 .van-tab--active {
 color: #000!important;
 }
 
 .van-tabs__line {
 background-color: #FF6600!important;
 width: 0.7rem!important;
 text-align: center!important;
 align-items: center;
 margin-left: 1.5rem;
 }
 
 .van-toast {
 background-color: #FF6600;
 color: #FFFFFF
 }
 
 .my-content-list {
 padding: 0.3rem;
 display: flex;
 flex-direction: row;
 justify-content: space-between;
 border-bottom: 0.01rem solid #EDEDED;
 }
</style>

总结

以上所述是小编给大家介绍的vue.js 图片上传并预览及图片更换功能的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
ext checkboxgroup 回填数据解决
Aug 21 Javascript
JQuery.ajax传递中文参数的解决方法 推荐
Mar 28 Javascript
javascript抖动元素的小例子
Oct 28 Javascript
javascript手风琴下拉菜单实现代码
Nov 12 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
Aug 31 Javascript
js实现页面刷新滚动条位置不变
Nov 27 Javascript
vue2.0+vue-dplayer实现hls播放的示例
Mar 02 Javascript
JavaScript的数据类型转换原则(干货)
Mar 15 Javascript
vue项目上传Github预览的实现示例
Nov 06 Javascript
微信小程序实现的动态设置导航栏标题功能示例
Jan 31 Javascript
vue实现购物车结算功能
Jun 18 Javascript
JS代码简洁方式之函数方法详解
Jul 28 Javascript
JS常见构造模式实例对比分析
Aug 27 #Javascript
Vue.js图片预览插件使用详解
Aug 27 #Javascript
JavaScript中创建原子的方法总结
Aug 26 #Javascript
解决vue.js 数据渲染成功仍报错的问题
Aug 25 #Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
Aug 25 #Javascript
vue中各选项及钩子函数执行顺序详解
Aug 25 #Javascript
vue实现在一个方法执行完后执行另一个方法的示例
Aug 25 #Javascript
You might like
smarty中js的调用方法示例
2014/10/27 PHP
PHP5.4起内置web服务器使用方法
2016/08/09 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
js简单实现删除记录时的提示效果
2013/12/05 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
jquery自定义下拉列表示例
2014/04/25 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
jquery实现简洁文件上传表单样式
2015/11/02 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
JS插件clipboard.js实现一键复制粘贴功能
2020/12/04 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
2019/02/18 Javascript
node实现爬虫的几种简易方式
2019/08/22 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
jQuery实现穿梭框效果
2021/01/19 jQuery
[07:09]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant 选手采访
2021/03/11 DOTA
python实现k均值算法示例(k均值聚类算法)
2014/03/16 Python
简单介绍Python中的JSON使用
2015/04/28 Python
Python中几个比较常见的名词解释
2015/07/04 Python
利用Python生成文件md5校验值函数的方法
2017/01/10 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
2018/01/24 Python
python绘制多个曲线的折线图
2020/03/23 Python
Python3中的bytes和str类型详解
2019/05/02 Python
Python OpenCV实现视频分帧
2019/06/01 Python
css3针对移动端卡顿问题的解决(动画性能优化)
2020/02/14 HTML / CSS
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
将"引用"作为函数返回值类型的格式、好处和需要遵守的规则
2016/02/09 面试题
英语生日邀请函
2014/01/23 职场文书
大学生简短的自我评价
2014/09/12 职场文书
党支部三会一课计划
2014/09/24 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
邀请函怎么写
2015/01/30 职场文书
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技