一、关于图片查看器。

  目前网络上能找到的图片查看器很多,谁便一搜就能出来。如:jquery.iviewer.js、Viewer.js这两个js文件,其中功能也足够满足大部分开发需求。但是单纯的就想实现图片的缩放、旋转、回位、拖拽。这些插件就有些多余,而且里面代码还没看。所以这里向大家介绍一种图片查看器的实现方法!

二、简单的Demo构造

  

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style> </style>
<script type="text/javascript"> function load() {
init();
} // 缩放图片
function imgToSize(oBool) {
var pic = document.getElementById("pic");
var text=document.getElementById("smw");
pic.style.zoom = parseInt(pic.style.zoom) + (oBool ? 2 : -2) + '%';
text.defaultValue=pic.style.zoom;
}
//还原尺寸
function restore() {
var pic = document.getElementById("pic");
var text=document.getElementById("smw");
pic.style.zoom = '100%';
pic.style.left = "0px";
pic.style.top = "0px";
text.defaultValue=pic.style.zoom;
}
// 旋转图片
var current = 0;
function imgRoll(direction) {
var pic = document.getElementById("pic");
if (direction == "left") {
current = (current - 90) % 360;
}
else if (direction == "right") {
current = (current + 90) % 360;
}
pic.style.transform = 'rotate(' + current + 'deg)';
}
//图片拖拽
drag = 0;
move = 0;
function mousedown() {
if (drag) {
X1 = window.event.x - parseInt(pic.style.left);
Y1 = window.event.y - parseInt(pic.style.top);
move = 1;
}
}
function onmouseover() {
drag = 1;
}
function mouseStop() {
window.event.returnValue = false;
}
function mousemove() {
if (move) {
pic.style.left = (window.event.x - X1) + "px";
pic.style.top = (window.event.y - Y1) + "px";
}
}
function mouseup() {
move = 0;
}
function init() {
var pic = document.getElementById("pic");
pic.style.zoom="100%";
pic.style.left="0px";
pic.style.top="0px";
pic.style.position="relative";
pic.style.cursor="move";
document.all.pic.onmouseover = onmouseover;
document.all.pic.onmousemove = mousemove;
document.all.pic.onmousedown = mousedown;
document.all.pic.onmouseup = mouseup;
document.all.pic.ondragstart = mouseStop;
}
</script>
</head>
<body onload="load()">
<div>
<img id="pic" src="data:image/Hydrangeas.jpg" />
</div> <br/>
<div class="btn">
<button class="btnleft" onclick="imgRoll('left');">左旋转90度</button>
<button class="btnright" onclick="imgRoll('right');">右旋转90度</button>
<button class="btnup" onclick="imgToSize(1);">放大</button>
<button class="btndown" onclick="imgToSize(0);">缩小</button>
<button class="btnreturn" onclick="restore();">还原</button>
<input type="text" value="100%" id="smw"/>
</div>
</body></html>

三、代码功能实现和说明

  其实图片查看器,其中的原理就是实现图片的Zoom、Tranfrom、坐标的控制

  1、缩放功能

        // 缩放图片
function imgToSize(oBool) {
var pic = document.getElementById("pic");
var text=document.getElementById("smw");
pic.style.zoom = parseInt(pic.style.zoom) + (oBool ? 2 : -2) + '%';
text.defaultValue=pic.style.zoom;
}

这方法就是,每次点击一次控制图片的Zoom增减。其中oBool是用来区别是放大和缩小(就是ZooM的缩减)

  2、图片的旋转

        // 旋转图片
var current = 0;
function imgRoll(direction) {
var pic = document.getElementById("pic");
if (direction == "left") {
current = (current - 90) % 360;
}
else if (direction == "right") {
current = (current + 90) % 360;
}
pic.style.transform = 'rotate(' + current + 'deg)';
}

这方法就是,每点击一次图片按顺时针或逆时针旋转,direction是来区分顺(right)逆(left)旋转的方向。

  3、图片的还原

        function restore() {
var pic = document.getElementById("pic");
var text=document.getElementById("smw");
pic.style.zoom = '100%';
pic.style.left = "0px";
pic.style.top = "0px";
text.defaultValue=pic.style.zoom;
}

这方法就是,将图片从新初始化

  4、图片的拖拽

        //图片拖拽
drag = 0;
move = 0;
function mousedown() {
if (drag) {
X1 = window.event.x - parseInt(pic.style.left);
Y1 = window.event.y - parseInt(pic.style.top);
move = 1;
}
}
function onmouseover() {
drag = 1;
}
function mouseStop() {
window.event.returnValue = false;
}
function mousemove() {
if (move) {
pic.style.left = (window.event.x - X1) + "px";
pic.style.top = (window.event.y - Y1) + "px";
}
}
function mouseup() {
move = 0;
}

这个方法就是,实现这个首先对鼠标几个事件的了解mousedwon()鼠标的按下事件、onmouseover()鼠标在对应标签上方事件、mouseStop()鼠标停止运动事件、mousemove()鼠标移动事件、mouseup()松开鼠标键的事件。然后再看代码定义2个标准变量drag、move

  5、初始化,也就是得注意事项

        function init() {
var pic = document.getElementById("pic");
pic.style.zoom="100%";
pic.style.left="0px";
pic.style.top="0px";
pic.style.position="relative";
pic.style.cursor="move";
document.all.pic.onmouseover = onmouseover;
document.all.pic.onmousemove = mousemove;
document.all.pic.onmousedown = mousedown;
document.all.pic.onmouseup = mouseup;
document.all.pic.ondragstart = mouseStop;
}

初始化市将控制按钮绑定对应的事件,然后再将图片的样式属性,其中top、left得赋值,如果不赋值的化,默认值是无法获取然后不能参加后续的运算,就无法实现对应的效果!

js实现图片查看器(图片的缩放、旋转、拖拽)的更多相关文章

  1. flutter实现可缩放可拖拽双击放大的图片功能

    flutter实现可缩放可拖拽双击放大的图片功能 可缩放可拖拽的功能,可实现图片或者其他widget的缩放已经拖拽并支持双击放大的功能 我们知道官方提供了双击缩放,但是不支持拖拽的功能,我们要实现向百 ...

  2. js手写图片查看器(图片的缩放、旋转、拖拽)

    在做一次代码编辑任务中,要查看图片器.在时间允许的条件下,放弃了已经封装好的图片jq插件,现在自己手写js实现图片的缩放.旋转.推拽功能! 具体代码如下: <!DOCTYPE html> ...

  3. 强大的jQuery图片查看器插件Viewer.js

    简介 Viewer.js 是一款强大的图片查看器 Viewer.js 有以下特点: 支持移动设备触摸事件 支持响应式 支持放大/缩小 支持旋转(类似微博的图片旋转) 支持水平/垂直翻转 支持图片移动 ...

  4. Viewer.js – 强大的JS/jQuery图片查看器

    简介 Viewer.js 是一款强大的图片查看器,像门户网站一般都会有各自的图片查看器,如果您正需要一款强大的图片查看器,也许 Viewer.js 是一个很好的选择.Viewer.js 有以下特点: ...

  5. wpf图片查看器,支持鼠标滚动缩放拖拽

    最近项目需要,要用到一个图片查看器,类似于windows自带的图片查看器那样,鼠标滚动可以缩放,可以拖拽图片,于是就写了这个简单的图片查看器. 前台代码: <Window x:Class=&qu ...

  6. 用JQ仿造礼德财富网的图片查看器

    现在就职于一家P2P平台,自然也会关注同行其它网站的前端技术,今天要仿造的是礼德内页的一个图片查看器效果.不过说白了,无论人人贷也好礼德财富也好,很多地方的前端都做的不尽如人意,比如忽略细节.缺乏交互 ...

  7. jQuery功能强大的图片查看器插件

    简要教程 viewer是一款功能强大的图片查看器jQuery插件.它可以实现ACDsee等看图软件的部分功能.它可以对图片进行移动,缩放,旋转,翻转,可以前后浏览一组图片.该图片查看器还支持移动设备, ...

  8. wpf 仿QQ图片查看器

    参考博客 WPF下的仿QQ图片查看器 wpf图片查看器,支持鼠标滚动缩放拖拽 实现效果 主要参考的WPF下的仿QQ图片查看器,原博主只给出了部分代码. 没有完成的部分 1.右下角缩略图是原图不是缩略图 ...

  9. 基于jQuery的一个简单的图片查看器

    项目中自己diy了一个图片查看器.因为初始代码不是自己的,只是在上面改了一下也没有弄的很漂亮.等以后有时间了在重写一下样式和封装,作为备用的只是积累吧.如果有童鞋有用到,完全可以在此基础上改,比较容易 ...

随机推荐

  1. Cordova与现有框架的结合,Cordova插件使用教程,Cordova自定义插件,框架集成Cordova,将Cordova集成到现有框架中

    一.框架集成cordova 将cordova集成到现有框架中 一般cordova工程是通过CMD命令来创建一个工程并添加Android.ios等平台,这样的创建方式可以完整的下载开发过程中所需要的的插 ...

  2. spring boot 常见的第三方集成

    spring boot基于1.x. 一 集成redis 1.1 配置 spring.redis.host = localhost spring.redis.port = 6379 spring.red ...

  3. Linux操作系统df相关问题解惑

    1.df 命令无法使用解决办法 问题分析: 1.1 df命令是通过/etc/mtab文件读取已挂载文件系统的信息,因此,df命令无法使用的原因的在于/etc/mtab文件被损坏或者丢失. 查看 mor ...

  4. docker image 详解

    docker iamge docker 镜像: [root@localhost ~]# docker image --help Usage: docker image COMMAND 管理镜像 Com ...

  5. Linux-Centon7常用命令

    查看本机IP # ip addr 进入目录 # cd /xxx/xxx 编辑文件,打开文件后,按“Insert”键,进入输入模式(最下面会显示INSERT),将ONBOOT选项改为yes,然后按“Es ...

  6. 机器学习--k-means聚类原理

    “物以类聚,人以群分”, 所谓聚类就是将相似的元素分到一"类"(有时也被称为"簇"或"集合"), 簇内元素相似程度高, 簇间元素相似程度低. ...

  7. 20164319 刘蕴哲 Exp3 免杀原理与实践

    [实验内容] 1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分),veil-evasion(0.5分),加壳工具(0.5分),使用shellcode编程( ...

  8. CentOS7下开放端口

    memcached等服务启动后,外网默认是无法访问的,因为防火墙不允许,所以要开启防火墙,让其可以访问这些端口号. 方法一:使用firewall 1.运行命令:firewall-cmd --get-a ...

  9. MVC开发T4代码生成之二----vs模板扩展

    在上一篇MVC开发T4代码生成之一----文本模板基础中介绍了与T4模板相关的基础知识,并对MVC内使用T4模板添加视图做了介绍.知道了T4模板的使用后自然就想着怎么对vs自带的T4模板进行扩展,添加 ...

  10. rest_framework的视图组件继承过哪些类?