最近项目中需要在图片预览时,可以旋转图片预览,在网上找了下,发现有一款功能强大的图片组件:viewerjs. git-hup: https://github.com/fengyuanchen/viewerjs
在git上看了下,有很多功能,不过我的项目只需要做个图片旋转功能,引入这个组件感觉大材小用了,于是自己写了个简易版的,因为我们只是查看而已,没什么要求.如果你需要比较精确的图片旋转功能,可以使用这个viewerjs组件
功能描述: 一个图片预览框,三个操作按钮: 上一张,下一张,旋转; 点击上一张下一张切换图片,点击旋转顺时针旋转图片,每次旋转90°,旋转后记住当前图片的旋转角度,点击上一张下一张再次切换回来时,需要旋转到上一次旋转的角度
代码:这是一个单独的组件,图片数据可以写在props中传值
<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项目中图片预览旋转功能的更多相关文章

  1. Vue PC端图片预览插件

    *手上的项目刚刚搞完了,记录一下项目中遇到的问题,留做笔记: 需求: 在项目中,需要展示用户上传的一些图片,我从后台接口拿到图片url后放在页面上展示,因为被图片我设置了宽度限制(150px),所以图 ...

  2. JS 解决 IOS 中拍照图片预览旋转 90度 BUG

    上篇博文[ Js利用Canvas实现图片压缩 ]中做了图片压缩上传,但是在IOS真机测试的时候,发现图片预览的时候自动逆时针旋转了90度.对于这个bug,我完全不知道问题出在哪里,接下来就是面向百度编 ...

  3. input file样式修改,图片预览删除功能

    本篇对input file进行了修改,改成自己需要的样式,类似验证身份上传身份证图片的功能. 效果图如下: 这里主要展示上传预览图片功能,对于删除功能的html及css写的比较粗糙,对于想要精细表现这 ...

  4. 微信企业号办公系统-图片预览放大功能-previewImage

    在微信里看过文章的应该知道,文章里的图片点击后可以放大.分享和保存. 然而自己在微信里开发的网页,里面的图片点击后没办法实现这个效果,然后就去看了下微信JS文档,里面有个previewImage可以调 ...

  5. KSImageNamed-Xcode-master 对项目中图片提供自动提示功能的插件

    .使用介绍: (1)KSImageNamed-Xcode-master的使用 安装该插件后,会对文件中图片进行智能提示.  下载地址:http://yun.baidu.com/s/1qWNkvGK  

  6. vue中图片预览(v-viewer库使用)

    效果图:   注释: 可拖拽,可放大缩小旋转,全屏,功能齐全,底部有操作按钮 属性: npm install v-viewer --save //安装 //在main.js中引入 import Vie ...

  7. (1)vue点击图片预览(可旋转、翻转、缩放、上下切换、键盘操作)

    今天做项目的时候,遇到了新需求,需要把点击图片放大的功能.学习了一下GitHub上的viewerjs插件 GitHub地址:https://github.com/fengyuanchen/viewer ...

  8. 怎么打开Windows Server 2008 图片预览的功能?

    打开一个文件夹,点击菜单中的“工具”->“文件夹选项”,切换到“查看”选项卡,在高级设置中取消如下选项: “始终显示图标,从不显示缩略图” “在缩略图上显示文件图标”

  9. vue.js 图片预览

    Vue.js的图片预览的插件还是不少,但是找了半天还是没找到跟现在项目里能用得很顺手的,其实项目里图片预览功能很简单,点击放大,能双指缩放就可以了.部分vue.js的图片预览库都需要把图片资源单独拿出 ...

随机推荐

  1. springboot之rabbitmq安装与实践

    环境:腾讯云centos7 注意:rabbitmq安装插件,可能会报错.本人是主机名的问题,所以修改了主机名. vim /etc/hosts vim /etc/hostname 修改这两个文件,并重启 ...

  2. mongodb 报错 not authorized on admin to execute command【 version 3.2.18 】

    mongodb version 3.2.18 测试问题: 分析: 从报错内容上看是权限不够,但不明了为什么,因为已经使用的超级用户权限: { "_id" : "admin ...

  3. Qt编写数据可视化大屏界面电子看板10-改造QCustomPlot

    一.前言 为了抛弃对QChart的依赖,以及echart的依赖,(当然,后期也会做qchart的版本和echart的版本,尤其是echart的版本是肯定会做的,毕竟echart的效果牛逼的一塌糊涂,全 ...

  4. php+上传文件夹

    一提到大文件上传,首先想到的是啥??? 没错,就是修改php.ini文件里的上传限制,那就是upload_max_filesize.修改成合适参数我们就可以进行愉快的上传文件了.当然啦,这是一般情况下 ...

  5. 不能在jsp页面<c:choose>对标签中使用<!---->进行注释

    jsp页面<c:choose>标签中使用<!---->进行注释,访问出现异常,如下: 标签范围:

  6. sonar汉化

  7. 使用 bash 脚本把 AWS EC2 数据备份到 S3

    目录 一.IAM 秘钥授权方式(普通) 1.1.打开 IAM 1.2.添加用户 1.3.安装和配置 AWS CLI 1.4.配置授权 二.IAM 角色授权方式(安全) 2.1.创建一个 EC2 访问 ...

  8. 10-2 分区管理和RAID

    分区管理和RAID 处理交换文件和分区 swap交换分区是系统RAM的补充,swap 分区支持虚拟内存.当没有足够的 RAM 保存系统处理的数据时会将数据写入 swap 分区 当系统缺乏 swap 空 ...

  9. whereis which type find

    1. whereis  name whereis命令只能用于搜索程序名,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和源代码文件(参数-s).如果省略参数,则返回所有信息. 2. wh ...

  10. 记录下关于RabbitMQ常用知识点(持续更新)

    1.端口及说明: 4369 -- erlang发现口 5672 --client端通信口 15672 -- 管理界面ui端口 25672 -- server间内部通信口 举例说明 我们访问Rabbit ...