亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

vue實(shí)現(xiàn)簡(jiǎn)易圖片左右旋轉(zhuǎn),上一張,下一張組件案例

瀏覽:104日期:2022-12-21 09:41:59

項(xiàng)目需求,嵌到elementUi里的小組件,寫得不好,不喜勿噴,謝謝

父組件代碼

<template> <div> <see-attachment :filesLists=’files’ :file=’imgFile’ v-if='showmask' @hideMask=’showmask=false’></see-attachment> </div></template><script> import seeAttachment from './seeAttachment.vue'; export default { data() { return { showmask: false, imgFile: {} }; }, components: { seeAttachment }, methods: { lookImg(f) { this.showmask = true; this.imgFile = f; }, } };</script>

子組件代碼

<template> <div> <div @click='hideMask'> <div class='img_box'> <img :src='http://www.aoyou183.cn/bcjs/imgPath' : : @click='stopEvent' id=’img’ /> </div> </div> <div class='handleImg_box'> <div @click='prevOne'><img src='http://www.aoyou183.cn/static/img/prev.png' /></div> <div @click='rotate(0)'><img src='http://www.aoyou183.cn/static/img/turn_left.png' /></div> <div @click='rotate(1)'><img src='http://www.aoyou183.cn/static/img/turn_right.png' /></div> <div @click='nextOne'><img src='http://www.aoyou183.cn/static/img/next.png' /></div> </div> </div></template><script> export default { name: ’seeAttachment’, props: [’filesLists’, ’file’], data: function() { return { imgPath: ’’, width: 0, height: 0, imgIndex: 0 } }, mounted() { this.getImgIndex(); this.seeAttachment(this.imgIndex); }, computed: { //去掉不是圖片的附件 imgList() { const ARR = ['png', 'PNG', 'jpeg', 'JPEG', 'bmp', 'BMP', 'jpg', 'JPG', 'gif', 'GIF']; let arrs = ’’; let suffix = ’’; let type = ’’; let newList = []; this.filesLists.forEach((item) => { arrs = item.name.split(’.’); suffix = arrs[arrs.length - 1]; type = item.type ? item.type : item.raw ? item.raw.type : suffix; ARR.some(items => { if (type.includes(items)) { newList.push(item) } }) }) return newList; } }, methods: { //通過父組件傳入的file獲取當(dāng)前查看的圖片index getImgIndex() { let that = this; that.imgList.forEach((item, index) => { if(that.file.id == item.id){ that.imgIndex = index; } }) }, //?藏查看?D片 hideMask() { this.$emit(’hideMask’, false); }, stopEvent(event) { //阻止冒泡事件 //取消事件冒泡 let e = event; //若省略此句,下面的e改為event,IE運(yùn)行可以,但是其他瀏覽器就不兼容 if (e && e.stopPropagation) { e.stopPropagation(); } else if (window.event) { window.event.cancelBubble = true; } }, //上一?? prevOne() { if (this.imgIndex == 0) { return false; } let img = document.getElementById(’img’) img.style.transform = ’rotate(0deg)’; this.imgIndex = this.imgIndex - 1; this.seeAttachment(this.imgIndex); }, //下一?? nextOne() { let listLength = this.imgList.length - 1; if (this.imgIndex >= listLength) { return false; } let img = document.getElementById(’img’) img.style.transform = ’rotate(0deg)’; this.imgIndex = this.imgIndex + 1; this.seeAttachment(this.imgIndex); }, //右轉(zhuǎn) rotate(t) { let img = document.getElementById(’img’) var reg = /(rotate([-+]?((d+)(deg))))/i; var wt = img.style[’-webkit-transform’], wts = wt.match(reg); var $3 = RegExp.$3; var current = $3 ? parseInt($3) : 0; if (t == 0) { current = current == 0 ? 360 : current; current = (current - 90) % 360; } else { current = (current + 90) % 360; } img.style.transform = ’rotate(’ + current + ’deg)’; }, seeAttachment(index = 0) { if (this.imgList.length == 0) { return false; } let that = this; let basePath = 'http://' + (process.env.OSS_PATH.indexOf('test') == -1 ? 'opyx-mtds-pro' : 'opyx-mtds-test') + '.oss-cn-shenzhen.aliyuncs.com/'; that.imgPath = basePath + that.imgList[index][’path’]; let img_url = basePath + that.imgList[index][’path’]; // 創(chuàng)建對(duì)象 var img = new Image(); // 改變圖片的src img.src = img_url; // 定時(shí)執(zhí)行獲取寬高 var check = function() { // 只要任何一方大于0 // 表示已經(jīng)服務(wù)器已經(jīng)返回寬高 if (img.width > 0 || img.height > 0) { let wdt = document.body.offsetWidth; let hgt = document.body.offsetHeight; let ratio = 1; if (img.width > img.height && img.width > wdt * ratio) { img.height = img.height * wdt * ratio / img.width; img.width = wdt * ratio; console.log(’寬大于高’, img) } else if (img.height > img.width && img.height > hgt * ratio) { img.width = img.width * hgt * ratio / img.height; if (img.width > wdt) { img.width = wdt; } img.height = hgt * ratio; console.log(’高大于寬’, img) } else { img.height = img.height * wdt * ratio / img.width img.width = wdt * ratio console.log(’正常’, img) } that.width = img.width; that.height = img.height; clearInterval(set); } }; var set = setInterval(check, 40); }, } }</script><style lang='scss' scoped> .handleImg_box { position: fixed; bottom: 0; left: 50%; z-index: 100; margin-left: -150px; width: 300px; padding: 1rem 0; display: flex; align-items: center; justify-content: space-around; } .handleImg_box div { font-size: 0; } .handleImg_box div img { width: 3rem; }</style>

補(bǔ)充知識(shí):vue圖片放大、縮小、旋轉(zhuǎn)等。僅需要兩行代碼!!!

效果圖

vue實(shí)現(xiàn)簡(jiǎn)易圖片左右旋轉(zhuǎn),上一張,下一張組件案例

實(shí)現(xiàn)步驟:

1.下載Viewer組件

npm install v-viewer --save

2.在圖片顯示的頁(yè)面引用 viewer組件(一個(gè)js文件,一個(gè)css樣式文件)

import Viewer from '@/assets/js/viewer.min.js';

import ’@/assets/css/viewer.min.css’;

3.再需要點(diǎn)擊圖片的標(biāo)簽添加點(diǎn)擊事件@click

<img : :src='http://www.aoyou183.cn/bcjs/item.publicFileURL' @click='aaa(item)' >

vue實(shí)現(xiàn)簡(jiǎn)易圖片左右旋轉(zhuǎn),上一張,下一張組件案例

說明:因?yàn)槲业膱D片是在集合中存的需要?jiǎng)討B(tài)的點(diǎn)擊放大(點(diǎn)哪個(gè)放大哪個(gè))----id很重要 aaa()方法中要用

4.@click='aaa(item)'方法

aaa(item) { var viewer = new Viewer(document.getElementById(item.publicFileURL), { url: item.publicFileURL, }); },

vue實(shí)現(xiàn)簡(jiǎn)易圖片左右旋轉(zhuǎn),上一張,下一張組件案例

以上這篇vue實(shí)現(xiàn)簡(jiǎn)易圖片左右旋轉(zhuǎn),上一張,下一張組件案例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
主站蜘蛛池模板: 国产呦系列 欧美呦 日韩呦 | 精品久久免费视频 | 欧美视频 亚洲视频 | 麻豆传媒在线网站 | 午夜一级福利 | 国产国产人在线成免费视频69 | julia一区福利视频在线观看 | 亚洲一级毛片欧美一级说乱 | 亚洲乱码国产乱码精品精98 | 九九精 | 美国毛片网 | 亚洲精品一区乱码在线观看 | 丁香六月婷婷综合 | 狠狠色丁香久久婷婷综合五月 | 黄色变态视频 | 正在播放一区 | 亚洲精品国产福利在线观看 | 国产色啪午夜免费视频 | 免费久久精品视频 | 国产成人毛片视频不卡在线 | 91视频黑丝| 免费看片aⅴ免费大片 | 国产狂喷白浆在线观看视频 | 亚洲欧美日韩精品一区 | 精品在线一区二区 | 在线a级| 能看毛片的网址 | 一一级黄色片 | 福利视频在线观看免费版 | 优看影院污 | 被黑人做的白浆直流在线播放 | 国产精品永久免费 | 美女黄页视频 | 尹人香蕉久久99天天拍欧美p7 | 青青热在线精品视频免费 | 狼人久久尹人香蕉尹人 | 日韩免费一级毛片欧美一级日韩片 | 亚洲国产成人久久精品图片 | 婷婷综合在线 | 亚洲三级视频 | 色图综合网 |