欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue-preview動態(tài)獲取圖片寬高并增加旋轉功能的實現(xiàn)

 更新時間:2020年07月29日 10:39:26   作者:鍵盤上的草根舞者  
這篇文章主要介紹了vue-preview動態(tài)獲取圖片寬高并增加旋轉功能的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

vue-preview是一個常用的圖片查看器,微博網頁版就是用的這個插件:

我在項目中也用過這個插件,總體來說,還是比較滿意。但是缺少一個圖片旋轉功能。

安裝使用

第一步:安裝

npm i vue-preview -S

第二步:引用配置

import VuePreview from 'vue-preview'
Vue.use(VuePreview)
Vue.use(preview, {
 mainClass: 'pswp--minimal--dark',
 barsSize: {top: 0, bottom: 0},
 captionEl: false,
 fullscreenEl: false,
 shareEl: false,
 bgOpacity: 0.85,
 tapToClose: true,
 tapToToggleControls: false
})

第三步:使用

// 定義預覽圖片列表
previewlist: [
  {
    src: ‘./pic01.jpg',
    w: 1200,
    h: 900
  },
  {
    src: ‘./pic01.jpg',
    w: 1200,
    h: 900
  }
]
 
// 給圖片添加“preview-img”類(必須添加且要同名),以及綁定“show”方法
<img :src="decodeURIComponent(item.name)" class="preview-img" @click="show(index)">
 
// 點擊圖片觸發(fā)預覽方法
show (index) {
  this.$preview.open(index, this. previewlist);
}

動態(tài)獲取圖片寬高

如果圖片列表資源是從服務器獲取,則需要先獲取圖片的真實寬高,具體代碼如下:

this. previewlist = []; //查看列表
let imglist = […]; //從服務器獲取的圖片地址列表
show (index) {
  for (let i = 0; i < imglist.length; i++) {
    // 獲取圖片實際大小
    let newImage = {};
    let img = new Image();
    img.src = imglist[i];
    img.onload = function () {
      newImage.src = imglist[i];
      newImage.w = img.width;
      newImage.h = img.height;
    };
    this.previewlist.push(newImage);
  }
  // 正常情況下javascript都是按照順序執(zhí)行的。但是我們可能讓該語句后面的語句執(zhí)行完再執(zhí)行本身,用setTimeout延時0ms來實現(xiàn)。
  setTimeout(() => {
    this.$preview.open(index, this.previewlist);
  }, 0);
}

新增圖片旋轉功能

默認的功能有全屏、放大、分享、圖片切換等,有時候我們還需要圖片旋轉功能,怎么辦呢?那只能自己動手改插件了。

第一步:添加旋轉圖標

圖標文件路徑:node_modules\photoswipe\dist\default-skin

原來只有前面8個圖片,后面那個稍微大一點的旋轉圖標是我加上去的,當然你也可以把尺寸設置為和原來的一樣。

第二步:添加旋轉按鈕到頁面

頁面文件路徑:node_modules\vue-preview\src\plugins\preview\preview.vue

<button class="pswp__button pswp__button--rotate" title="旋轉" @click="imgRotateFn"></button>

第三步:添加旋轉按鈕的樣式

樣式文件路徑:node_modules\photoswipe\dist\default-skin

.pswp__button--rotate {
 background-position: -176px 0;
}

第四步:實現(xiàn)旋轉方法

文件路徑:node_modules\vue-preview\src\plugins\preview\preview.vue

imgRotateFn () {
   this.angle+=90;
   let imgNode = document.getElementsByClassName('pswp__img');
   for (let i = 0; i<imgNode.length; i++) {
      imgNode[i].style.WebkitTransform = 'rotate('+this.angle+'deg)';
   }
 }

這里我只貼出了關鍵代碼,需要你自己做瀏覽器兼容,以及切換圖片時,應該將圖片角度設置為0等。

測試結果

測試沒有問題,終于可以下班了,哈哈哈。

Tips:懶得自己動手改插件的伙伴,可以在樓主的GitHub倉庫下載改好后的文件,在你安裝好 vue-preview 后用“attachment”文件夾中的三個文件替換你項目中的對應文件就擁有“旋轉”功能了。GitHub地址:https://github.com/xiongjun0812/vue-preview

今天就分享到這里,有問題歡迎留言交流,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 關于Vue實例創(chuàng)建的整體流程

    關于Vue實例創(chuàng)建的整體流程

    這篇文章主要介紹了關于Vue實例創(chuàng)建的整體流程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Vue3中父子傳參常見方式及用法

    Vue3中父子傳參常見方式及用法

    在 Vue 3 中,父子組件之間進行通信有多種方式,下面簡單介紹下常見的方式及其用法和使用場景,本文通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2024-01-01
  • 詳解vue3+element-plus實現(xiàn)動態(tài)菜單和動態(tài)路由動態(tài)按鈕(前后端分離)

    詳解vue3+element-plus實現(xiàn)動態(tài)菜單和動態(tài)路由動態(tài)按鈕(前后端分離)

    本文需要使用axios,路由,pinia,安裝element-plus,并且本文vue3是基于js而非ts的,這些環(huán)境如何搭建不做描述,需要讀者自己完成,感興趣的朋友跟隨小編一起看看吧
    2023-11-11
  • vue+element多選級聯(lián)選擇器自定義props使用詳解

    vue+element多選級聯(lián)選擇器自定義props使用詳解

    這篇文章主要給大家介紹了關于vue+element多選級聯(lián)選擇器自定義props使用的相關資料,級聯(lián)選擇器展示的結果都是以數(shù)組的形式展示,也就是v-model綁定的結果,需要的朋友可以參考下
    2023-07-07
  • el-select二次封裝實現(xiàn)可分頁加載數(shù)據(jù)的示例代碼

    el-select二次封裝實現(xiàn)可分頁加載數(shù)據(jù)的示例代碼

    使用el-select時一次性渲染幾百條數(shù)據(jù)時會造成頁面克頓, 可以通過分頁來實現(xiàn),所以本文給大家介紹了el-select二次封裝實現(xiàn)可分頁加載數(shù)據(jù),文中有詳細的代碼講解,具有一定的參考價值,需要的朋友可以參考下
    2023-12-12
  • 前端+接口請求實現(xiàn)vue動態(tài)路由

    前端+接口請求實現(xiàn)vue動態(tài)路由

    在Vue應用中,結合前端和后端接口請求實現(xiàn)動態(tài)路由,可根據(jù)用戶權限動態(tài)生成路由,提高安全性與靈活性,本文就來介紹一下前端+接口請求實現(xiàn)vue動態(tài)路由,感興趣的可以了解一下
    2024-09-09
  • vue項目中圖片懶加載時出現(xiàn)的問題及解決

    vue項目中圖片懶加載時出現(xiàn)的問題及解決

    這篇文章主要介紹了vue項目中圖片懶加載時出現(xiàn)的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue項目基于WebRTC實現(xiàn)一對一音視頻通話

    vue項目基于WebRTC實現(xiàn)一對一音視頻通話

    這篇文章主要介紹了vue項目基于WebRTC實現(xiàn)一對一音視頻通話效果,實現(xiàn)代碼分為前端和后端兩部分代碼,需要的朋友可以參考下
    2024-05-05
  • vue最強table vxe-table 虛擬滾動列表 前端導出問題分析

    vue最強table vxe-table 虛擬滾動列表 前端導出問題分析

    最近遇到個問題,后臺一次性返回2萬條列表數(shù)據(jù)并且需求要求所有數(shù)據(jù)必須全部展示,不能做假分頁,怎么操作呢,下面通過本文介紹下vue最強table vxe-table 虛擬滾動列表 前端導出問題,感興趣的朋友一起看看吧
    2023-10-10
  • Vue過濾器使用方法詳解

    Vue過濾器使用方法詳解

    過濾器的功能是對要顯示的數(shù)據(jù)進行格式化后再顯示,其并沒有改變原本的數(shù)據(jù),只是產生新的對應的數(shù)據(jù),下面這篇文章主要給大家介紹了關于Vue中過濾器定義以及使用方法的相關資料,需要的朋友可以參考下
    2022-12-12

最新評論