vue项目中图片预览旋转功能
<template>
<div class="rotate_contanier">
<div class="header">
<span @click="handleImg(1)">上一张</span>
<span @click="handleImg(2)">下一张</span>
<span @click="rotate">旋转</span>
</div>
<div class="picture_contaner">
<div class="img_box" ref="rotate">
<img :src="fileInfo.fileUrl" alt="">
</div>
</div>
</div>
</template> <script>
export default {
props: { },
data() {
return {
pictureList: [
{fileUrl: 'http://mp.ofweek.com/Upload/News/Img/member645/201711/17170046839337.jpg'},
{fileUrl: 'http://img2.imgtn.bdimg.com/it/u=1239081181,1433383585&fm=26&gp=0.jpg'},
{fileUrl: 'http://img1.imgtn.bdimg.com/it/u=3502008475,4132115356&fm=26&gp=0.jpg'},
{fileUrl: 'http://img12.360buyimg.com/n5/s450x450_jfs/t9952/98/2269407420/279171/6137fe2f/59f28b2bN6959e086.jpg'},
{fileUrl: 'http://img2.imgtn.bdimg.com/it/u=2681505513,370839281&fm=26&gp=0.jpg'},
{fileUrl: 'http://img2.imgtn.bdimg.com/it/u=1153377230,3978893548&fm=26&gp=0.jpg'}
],
fileInfo: {
fileUrl: '',
deg: 0
},
currentPage: 0
}
},
created() {
// 设置图片初始旋转角度
this.pictureList.forEach(item => {
item.deg = 0
})
this.fileInfo = this.pictureList[this.currentPage]
},
mounted() { },
methods: {
handleImg (type) {
if (type === 1) { // 上一张
this.currentPage++
if (this.currentPage >= this.pictureList.length) {
this.currentPage = 0
}
} else { // 下一张
this.currentPage--
if (this.currentPage < 0) {
this.currentPage = this.pictureList.length - 1
}
}
// 获取图片当前信息
this.fileInfo = this.pictureList[this.currentPage]
this.$refs.rotate.style.transform = `rotate(${this.fileInfo.deg}deg)`
},
// 旋转图片
rotate () {
this.fileInfo = this.pictureList[this.currentPage]
this.fileInfo.deg += 90
if (this.fileInfo.deg >= 360) {
this.fileInfo.deg = 0
}
this.$refs.rotate.style.transform = `rotate(${this.fileInfo.deg}deg)`
}
}
}
</script> <style>
.rotate_contanier {
display: flex;
flex-direction: column;
padding: 20px;
background-color: #909399;
width: 600px;
height: 670px;
}
.header {
height: 50px;
margin-bottom: 10px;
text-align: center;
background-color: #fff;
padding-top: 20px;
}
.header span {
padding: 5px 8px;
color: #fff;
background-color: #409eff;
border-radius: 4px;
margin-right: 5px;
cursor: pointer;
}
.picture_contaner {
height: 600px;
width: 100%;
background-color: #fff;
padding: 10px;
box-sizing: border-box;
}
.picture_contaner .img_box {
width: 100%;
height: 100%;
position: relative;
}
.picture_contaner .img_box img {
max-width: 100%;
max-height: 100%;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
} </style>
实现思路: 旋转的时候需要把容器长宽设为一致,也就是图片容器为正方形,这样旋转的时候旋转中心是对称的,不会出现图片超出容器的情况.
把图片放到一个容器里装起来,图片的宽高不能超过容器的宽高,居中布局,旋转的时候旋转图片容器,这样图片的长宽对旋转不会有影响
vue项目中图片预览旋转功能的更多相关文章
- Vue PC端图片预览插件
*手上的项目刚刚搞完了,记录一下项目中遇到的问题,留做笔记: 需求: 在项目中,需要展示用户上传的一些图片,我从后台接口拿到图片url后放在页面上展示,因为被图片我设置了宽度限制(150px),所以图 ...
- JS 解决 IOS 中拍照图片预览旋转 90度 BUG
上篇博文[ Js利用Canvas实现图片压缩 ]中做了图片压缩上传,但是在IOS真机测试的时候,发现图片预览的时候自动逆时针旋转了90度.对于这个bug,我完全不知道问题出在哪里,接下来就是面向百度编 ...
- input file样式修改,图片预览删除功能
本篇对input file进行了修改,改成自己需要的样式,类似验证身份上传身份证图片的功能. 效果图如下: 这里主要展示上传预览图片功能,对于删除功能的html及css写的比较粗糙,对于想要精细表现这 ...
- 微信企业号办公系统-图片预览放大功能-previewImage
在微信里看过文章的应该知道,文章里的图片点击后可以放大.分享和保存. 然而自己在微信里开发的网页,里面的图片点击后没办法实现这个效果,然后就去看了下微信JS文档,里面有个previewImage可以调 ...
- KSImageNamed-Xcode-master 对项目中图片提供自动提示功能的插件
.使用介绍: (1)KSImageNamed-Xcode-master的使用 安装该插件后,会对文件中图片进行智能提示. 下载地址:http://yun.baidu.com/s/1qWNkvGK
- vue中图片预览(v-viewer库使用)
效果图: 注释: 可拖拽,可放大缩小旋转,全屏,功能齐全,底部有操作按钮 属性: npm install v-viewer --save //安装 //在main.js中引入 import Vie ...
- (1)vue点击图片预览(可旋转、翻转、缩放、上下切换、键盘操作)
今天做项目的时候,遇到了新需求,需要把点击图片放大的功能.学习了一下GitHub上的viewerjs插件 GitHub地址:https://github.com/fengyuanchen/viewer ...
- 怎么打开Windows Server 2008 图片预览的功能?
打开一个文件夹,点击菜单中的“工具”->“文件夹选项”,切换到“查看”选项卡,在高级设置中取消如下选项: “始终显示图标,从不显示缩略图” “在缩略图上显示文件图标”
- vue.js 图片预览
Vue.js的图片预览的插件还是不少,但是找了半天还是没找到跟现在项目里能用得很顺手的,其实项目里图片预览功能很简单,点击放大,能双指缩放就可以了.部分vue.js的图片预览库都需要把图片资源单独拿出 ...
随机推荐
- MongoDB作为windows服务来安装-2
首先区官网下载对应版本的安装文件,我本地的环境是win7 bit64 我下载的版本是:mongodb-win32-x86_64-2.4.6 ok, 文件下载后,开始安装,这里要说一下,如果直接启动Mo ...
- mac 终端杀进程
killall 进程名 killall chromedriver 查看进程名的·方法:
- python 时间对比
import datetimed1 = datetime.datetime.strptime('2015-03-05 17:41:20', '%Y-%m-%d %H:%M:%S')d2 = date ...
- php自定义错误处理函数
function myErrorHandler($errno, $errstr, $errfile, $errline) { echo "<b>Custom error:< ...
- ubuntu安装ubuntu-kylin-software-center
sudo apt-get updatesudo apt-get upgradesudo apt-get install --reinstall ubuntu-kylin-software-center ...
- Fabric docker-compose volumes配置解析
chaincode: container_name: chaincode image: hyperledger/fabric-ccenv tty: true environment: - GOPATH ...
- Vmare虚拟机安装麻烦二三事
1).如何把虚拟机完整的迁移到另一个磁盘空间 2).VMware启动时提示我已移动或我已复制该虚拟机 3).虚拟机上显示主ip地址网络信息不可用怎么解决 4).vmware15虚拟机安装mac os ...
- Intellij IDEA 激活到2100年教程
1.先看效果 2.下载 JetbrainsCrack-4.2-release-enc.jar,提取码:9os6.并将下载后的文件复制到$ {InstallDir} / bin,$ {Install ...
- 【编程开发】 C与C++中的关于函数指针的强制类型转换与指针函数的关系
[编程开发] C与C++中的关于函数指针的强制类型转换与指针函数的关系 标签: [编程开发] [VS开发] 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 以 ...
- 虚拟机(VM)安装openwrt-koolshare软路由
⒈创建虚拟机 **软路由选择Windows操作系统,因为我们需要在PE环境中进行软路由的写入,固件类型选择BIOS,网络类型选择使用仅主机模式网络,虚拟磁盘类型选择IDE[一定要选择IDE模式],SC ...