国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Vue2.0 實現移動端圖片上傳功能

2019-11-19 13:45:09
字體:
來源:轉載
供稿:網友

本文主要介紹VUE2.0圖片上傳功能的實現。原理是通過js控制和input標簽的方式完成這一效果,無需加載其他組件。

效果圖如下:

這里寫圖片描述

1.DOM代碼

1.1input標簽

 由于我們是通過input標簽的方式進行圖片上傳的,但是input標簽的樣式有點丑,所以我們隱藏該樣式display: none

<input @change="fileChange($event)" type="file" id="upload_file" multiple style="display: none"/>

1.2添加圖片按鈕

 如果需要用到此方法,只需要在你的上傳按鈕的地方調用@click=”chooseType”即可,其他部分代碼為樣式布局僅供參考。

 <div class="add" @click="chooseType"> <div class="add-image" align="center">  <i class="icon-camera"></i> //按鈕中的圖片是一個icon字體圖標  <p class="font13">添加圖片</p> </div></div>

1.3圖片預覽區域

 如果需要用到此方法,只需要在你的預覽區域進行v-for循環輸出上傳的圖片集合即可。

<div class="add-img" v-show="imgList.length"> <p class="font14">圖片(最多6張,還可上傳<span v-text="6-imgList.length"></span>張)</p> <ul class="img-list">  <li v-for="(url,index) in imgList">   <img class="del" src="../../assets/img/home/btn_clean.png" @click.stop="delImg(index)"/>    //del刪除樣式,icon字體圖標需要自己找哦   <img :src="url.file.src">  </li> </ul></div>

1.4圖片預覽區域-拓展(1.3為簡單運用,如果有時間后續會將完整的案例上傳)

 如果需要用到此方法,只需要在你的預覽區域進行v-for循環輸出上傳的圖片集合即可。本案例還運用的Y-DUI的lightbox組件,如有需要請參照圖片預覽的調用方式。此處,也調用了vue的懶加載和css背景圖自適應的方法。

<div class="add-img" v-show="imgList.length"> <p class="font14">圖片(最多6張,還可上傳<span v-text="6-imgList.length"></span>張)</p> <ul class="img-list">  <li v-for="(url,index) in imgList">   <img class="del" src="../../assets/img/home/btn_clean.png" @click.stop="delImg(index)"/>   <yd-lightbox>    <div class="app-bg">     <yd-lightbox-img class="app-bg" :original="url.file.src" v-lazy:background-image="{src: url.file.src, error: require('../../assets/img/common/img_placeholder400.png'), loading: require('../../assets/img/common/img_placeholder400.png')}"></yd-lightbox-img>    </div>   </yd-lightbox>  </li> </ul></div>

2.JS代碼塊

tips:此處的提示彈窗調用的Y-DUI的提示框,可以改成自己的提示框。

<script> export default {  name: "Feedback",  data() {   return {    showFace: false,    imgList: [],    size: 0,    limit:6, //限制圖片上傳的數量    tempImgs:[]   }  },  methods: {   chooseType() {    document.getElementById('upload_file').click();   },   fileChange(el) {    if (!el.target.files[0].size) return;    this.fileList(el.target);    el.target.value = ''   },   fileList(fileList) {    let files = fileList.files;    for (let i = 0; i < files.length; i++) {     //判斷是否為文件夾     if (files[i].type != '') {      this.fileAdd(files[i]);     } else {      //文件夾處理      this.folders(fileList.items[i]);     }    }   },   //文件夾處理   folders(files) {    let _this = this;    //判斷是否為原生file    if (files.kind) {     files = files.webkitGetAsEntry();    }    files.createReader().readEntries(function (file) {     for (let i = 0; i < file.length; i++) {      if (file[i].isFile) {       _this.foldersAdd(file[i]);      } else {       _this.folders(file[i]);      }     }    });   },   foldersAdd(entry) {    let _this = this;    entry.file(function (file) {     _this.fileAdd(file)    })   },   fileAdd(file) {    if (this.limit !== undefined) this.limit--;    if (this.limit !== undefined && this.limit < 0) return;    //總大小    this.size = this.size + file.size;    //判斷是否為圖片文件    if (file.type.indexOf('image') == -1) {     this.$dialog.toast({mes: '請選擇圖片文件'});    } else {     let reader = new FileReader();     let image = new Image();     let _this = this;     reader.readAsDataURL(file);     reader.onload = function () {      file.src = this.result;      image.onload = function(){       let width = image.width;       let height = image.height;       file.width = width;       file.height = height;       _this.imgList.push({        file       });       console.log( _this.imgList);      };      image.src= file.src;     }    }   },   delImg(index) {    this.size = this.size - this.imgList[index].file.size;//總大小    this.imgList.splice(index, 1);    if (this.limit !== undefined) this.limit = 6-this.imgList.length;   },   displayImg() {   }  } }</script>

3.CSS樣式代碼塊,僅供參考

太太懶了,沒有一一區分

 .app-bg >>>img{  width: 100%;  height: 100%;  -webkit-transform: scale(1.03);  -moz-transform: scale(1.03);  -ms-transform: scale(1.03);  -o-transform: scale(1.03);  transform: scale(1.03); } textarea {  padding: 10px; } .text-length {  font-size: 14px;  z-index: 999;  width: 100%;  text-align: right;  margin-bottom: 10px;  color: #e4e4e4; } .warning {  color: #fe9900; } .add-img {  width: 100%;  padding: 10px; } .add-img p {  color: #999; } .mui-content {  padding-bottom: 60px; } .mui-content .idea {  margin-top: 8px;  background-color: #FFFFFF; } .good-item {  text-align: center;  width: 33%;  max-width: 100%;  overflow: hidden;  padding-right: 10px;  padding-bottom: 10px;  float: left; } .good-item span {  font-size: 15px;  height: 30px;  line-height: 30px;  border-radius: 50px;  display: block;  width: 100%;  color: #333;  overflow: hidden;  white-space: nowrap;  text-overflow: ellipsis;  border: 1px solid #CCCCCC; } .mui-table {  padding-top: 10px;  color: #333;  padding-left: calc(0.5% + 10px); } .h-line-behind {  line-height: 40px;  padding-left: 10px; } .question {  border: 0;  margin-bottom: 10px; } .add {  display: inline-block;  margin-bottom: 20px; } .add-image {  padding-top: 15px;  margin-left: 10px;  width: 80px;  top: 20px;  height: 80px;  border: 1px dashed rgba(0, 0, 0, .2); } .add-image .icon-camera {  font-size: 24px; } .good-item .choose {  color: #fff;  background-color: #87582E;  color: #FFF;  border: 0; } .mui-btn-block {  border: 0;  border-radius: 0;  background-color: #87582E;  color: #fff;  margin-bottom: 0;  bottom: 0; } .mui-buttom {  position: fixed;  width: 100%;  bottom: 0;  z-index: 999; } /*九宮格*/ .img-list {  overflow: hidden; } .img-list > li {  float: left;  width: 32%;  text-align: center;  padding-top: 31%;  margin-left: 1%;  margin-top: 1%;  position: relative; } .img-list > li > div {  position: absolute;  left: 0;  top: 0;  width: 100%;  height: 100%;  overflow: hidden; } .img-list > li > div .app-bg {  width: 100%;  height: 100%; } .mui-fullscreen {  z-index: 9999; } .del {  position: absolute;  width: 18px;  top: 0;  right: 0;  z-index: 999 }

以上所述是小編給大家介紹的Vue2.0 移動端圖片上傳功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 雅安市| 宁陵县| 静安区| 重庆市| 榆中县| 贵定县| 涪陵区| 弋阳县| 普定县| 寻乌县| 肃南| 顺平县| 山东| 象山县| 新宁县| 三穗县| 桐梓县| 库车县| 特克斯县| 江阴市| 徐水县| 深水埗区| 克拉玛依市| 金堂县| 吉安县| 葵青区| 日土县| 宿松县| 英山县| 富锦市| 涡阳县| 南丹县| 辽宁省| 蒙自县| 芜湖市| 于都县| 堆龙德庆县| 榕江县| 浪卡子县| 邛崃市| 龙胜|