亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > 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 移動端圖片上傳功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久夜色精品亚洲噜噜国产mv| 一区二区在线免费视频| 亚洲国产天堂久久综合网| 懂色av影视一区二区三区| 日本成人免费在线| 亚洲电影av在线| 国产精品高潮呻吟久久av黑人| 成人97在线观看视频| 国产日韩中文在线| 日韩精品极品毛片系列视频| www日韩欧美| 亚洲区在线播放| 欧美伦理91i| 91av福利视频| 国产精品99蜜臀久久不卡二区| 成人国产精品一区| 国产视频999| 国产成人在线亚洲欧美| 国产精品青草久久久久福利99| 欧美在线观看一区二区三区| 国产一区二区三区在线观看网站| 欧美一级电影久久| 在线精品91av| 日韩一区二区av| 在线成人中文字幕| 欧美激情videoshd| 亚洲欧美日韩中文视频| 91精品视频免费观看| 色综合久久88色综合天天看泰| 欧美精品少妇videofree| 一本色道久久综合狠狠躁篇的优点| 亚洲黄色www| 91精品国产高清| 中文字幕精品在线| 亚洲成人精品视频在线观看| 日韩av在线免费看| 国产亚洲成av人片在线观看桃| 欧美在线日韩在线| 国产精品白嫩初高中害羞小美女| 日本精品视频网站| 亚洲在线观看视频网站| 久久精品99国产精品酒店日本| 成人深夜直播免费观看| 精品无人区太爽高潮在线播放| 欧美男插女视频| 亚洲电影免费观看高清| 久色乳综合思思在线视频| 91精品视频免费| 精品女同一区二区三区在线播放| 成人免费网站在线看| 欧美激情一级欧美精品| 亚洲在线观看视频| www.亚洲人.com| yw.139尤物在线精品视频| 亚洲一区二区三区在线免费观看| 日韩视频欧美视频| 成人写真福利网| 亚洲最大成人免费视频| 久热精品视频在线观看| 国产精品一区二区性色av| 亚洲人成亚洲人成在线观看| 国产成人综合精品在线| 欧美午夜女人视频在线| 国产高清在线不卡| 成人午夜两性视频| 91精品免费久久久久久久久| 欧美亚洲国产另类| 欧美激情在线观看| 亚洲国产精品成人va在线观看| 久久不射热爱视频精品| 国产精品成人av性教育| 亚洲xxx自由成熟| 欧美激情在线狂野欧美精品| 亚洲大胆人体视频| 日韩动漫免费观看电视剧高清| 精品人伦一区二区三区蜜桃免费| 亚洲精品99久久久久| 亚洲黄色免费三级| 欧美日韩免费区域视频在线观看| 亚洲人成伊人成综合网久久久| 2021久久精品国产99国产精品| 777国产偷窥盗摄精品视频| 国产午夜精品视频免费不卡69堂| 亚洲免费电影一区| 亚洲视频在线看| 欧美xxxx综合视频| 亚洲综合中文字幕68页| 精品无人区乱码1区2区3区在线| 精品国产自在精品国产浪潮| 欧美性videos高清精品| 最近中文字幕mv在线一区二区三区四区| 久久久久女教师免费一区| 亚洲美女性生活视频| 中文字幕欧美国内| 自拍偷拍亚洲区| 91精品久久久久久久久青青| 日韩一区二区欧美| 亚洲精品91美女久久久久久久| 国产z一区二区三区| 欧美电影院免费观看| 性欧美xxxx视频在线观看| 91av免费观看91av精品在线| 永久免费精品影视网站| 欧美—级a级欧美特级ar全黄| 国内精品伊人久久| 久久久免费精品视频| 国产脚交av在线一区二区| 欧美激情极品视频| 97**国产露脸精品国产| 成人福利免费观看| 久久久av亚洲男天堂| 亚洲视频视频在线| 欧美疯狂xxxx大交乱88av| 色777狠狠综合秋免鲁丝| 日韩在线免费av| 国产日韩欧美中文在线播放| 亚洲成人999| 亚洲欧美国产视频| 亚洲视频在线观看视频| 日韩av中文在线| 久久久中文字幕| 欧美大片在线免费观看| 国产视频精品在线| 日韩成人在线网站| 国产精品www网站| 国产精品成人免费视频| 亚洲韩国欧洲国产日产av| 亚洲一区免费网站| 亚洲a成v人在线观看| 久久久久久久一区二区| 精品中文字幕久久久久久| 欧美一级片一区| 欧美精品做受xxx性少妇| 久久久天堂国产精品女人| 久久99视频免费| 国产精品6699| 欧美精品手机在线| 欧美日韩国产一区二区| 欧美精品亚州精品| 26uuu另类亚洲欧美日本一| 亚洲精品网址在线观看| 91欧美激情另类亚洲| 国产婷婷成人久久av免费高清| 亚洲国产天堂久久综合| 国产精品99久久99久久久二8| 在线日韩日本国产亚洲| 日韩在线视频网| 欧美成人手机在线| 一本色道久久综合狠狠躁篇怎么玩| 一区二区三区四区视频| 国产精品99久久久久久白浆小说| 欧美一级bbbbb性bbbb喷潮片| 国产91精品久久久久久久| 欧美另类极品videosbest最新版本| 色婷婷综合久久久久| 成人中文字幕+乱码+中文字幕| 亚洲精品第一国产综合精品| 国产一区二区精品丝袜| 久久久久中文字幕| 久久精品视频在线观看| 久久韩国免费视频| 91精品视频观看| 国产精品影院在线观看| 97国产一区二区精品久久呦|