可移动,可放大的图片查看功能

点击图片查看该图,如果不够清晰可以放大,如果感觉位置不对还可以拖动,当然了,做的还不太好,给ps的放大功能差远了。


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style>
* { margin:0; padding:0;}
.cont { width:450px;}
.cont img { width:100%; height:auto;}
.mask {
position: fixed;
height: 100%;
width: 100%;
background-color:rgba(0,0,0,.2);
top:0; left:0px;
display:none;
}
.cont_son { width:450px; position:absolute; left:50%; top:50%; margin-left:-225px; margin-top:-100px; background:#fff; padding:10px; }
.cont_son h3 { font-size:14px; font-weight:normal; text-indent:10px; color:#333; background-color:#ddd; line-height:30px;}
.mask_img img { height:auto;}
.close { width:20px; height:20px; position:absolute; right:15px; top:15px; cursor:pointer;}
</style>
</head>

<body>

<div class="cont" id="cont"><img src="test001.jpg" width="1440" height="900" /></div>
<div class="mask" id="selt" ondrop="drop(event)" ondragover="allowDrop(event)">
<div class="cont_son" draggable="true" ondragstart="drag(event)" >
<h3 >滚动滚轮放大缩小图片</h3>
<div class="close" id="close">×</div>
<div class="mask_img" >

</div>
</div>
</div>

<script>
var cont = document.getElementById("cont");
var selt = document.getElementById("selt");
var kuang = selt.getElementsByClassName("cont_son")[0];
cont.addEventListener("click",show);

function show (){
var maskImg = selt.getElementsByClassName("mask_img")[0];
var oldImg = cont.getElementsByTagName("img")[0];
var hasImg = maskImg.getElementsByTagName("img")[0];
if(!hasImg){
var newImg = oldImg.cloneNode(true);
newImg.width = 450;
maskImg.appendChild(newImg);
}else {
kuang.removeAttribute("style");
hasImg.style.width = "450px";
}
selt.style.display = "block ";
window.addEventListener("mousewheel",panduan);

}
var guanbi = document.getElementById("close");
guanbi.addEventListener("click",hide);

function hide (){
selt.style.display = "none ";
}

function panduan (e){
var t1;
if(e.wheelDelta){//IE/Opera/Chrome
t1 = e.wheelDelta;

}else if(e.detail){//Firefox
t1 =e.detail;
}
if(t1>0){
scale(1);
}
else {
scale(0);
}
nowx =e.clientX ;
nowy =e.clientY ;
}
function scale(isUp){

var width = kuang.offsetWidth-20;
var height = kuang.offsetHeight-20;
var left = kuang.offsetLeft;
var top = kuang.offsetTop;
var ml = parseFloat(getCurrentStyle(kuang).marginLeft);
var mh = parseFloat(getCurrentStyle(kuang).marginTop);
if(isUp){
var Nwidth = width*1.1;
var Nheight = height*1.1;
}else {
var Nwidth = width/1.1;
var Nheight = height/1.1;
}

kuang.style.width = Nwidth+"px";
kuang.style.marginLeft = (ml-(Nwidth-width)/2) +"px";
kuang.style.marginTop = (mh-(Nheight-height)/2) +"px";
var nowImg = kuang.querySelector(".mask_img img");
nowImg.style.width = "100%";
//console.log(height) ;
}

var nowx , nowy ;

function allowDrop(ev){
ev.preventDefault();

}
function drag(ev){
var dragId = kuang;
var yuanX = kuang.offsetLeft ;
var yuanY = kuang.offsetTop ;
nowx =ev.clientX ;
nowy =ev.clientY ;
nowx = nowx - yuanX ;
nowy = nowy - yuanY;
ev.dataTransfer.setData("Text",dragId);
ev.dataTransfer.setDragImage(kuang,nowx,nowy);
}
function drop(ev){
ev.preventDefault();
var data = ev.dataTransfer.getData("Text");
var dX = ev.clientX -nowx;
var dY = ev.clientY -nowy ;
var ele = kuang;
ele.style.left = dX +"px";
ele.style.top = dY +"px";
ele.style.marginLeft= "0px";
ele.style.marginTop = "0px";
}
// 参数node:将要获取其计算样式的元素节点
function getCurrentStyle(node) {
var style = null;

if(window.getComputedStyle) {
style = window.getComputedStyle(node, null);
}else{
style = node.currentStyle;
}

return style;
}

</script>
</body>
</html>

可移动,可放大的图片查看功能

时间: 2024-10-11 01:05:06

可移动,可放大的图片查看功能的相关文章

在移动设备上放大图片查看图片细节的俩种方法

类似淘宝京东上的产品图,我们可以放大来看产品的具体细节.那么,在移动设备上,基于Web浏览器的这种效果又是如何实现的呢? 一.使用touchEvent来实现,关于touchEvent的一些基本知识,可以阅读文章--多点触摸网络开发 1.页面代码 <div id="warpper" class="warpper"> <div class="clearfix"></div> <div id="con

jquery图片查看插件,支持旋转、放大、缩小、拖拽、缩略图(仿qq图片查看)

最近做了一个jquery图片查看的插件,目的是能精确查看图片的详情,插件支持图片旋转.放大.缩小.拖拽.缩略图显示,界面效果是按照window的qq查看图片功能写的,当然不尽相同. 具体功能: 1. 多张图片切换,键盘左右键或左右箭头切换 2. 旋转 3. 放大,支持鼠标滚轮 4. 缩小,支持鼠标滚轮 5. 右下角缩略图 6. 拖拽大图 7. 全屏 PS:下面是插件各状态下效果,demo示例会在最后放出来. 全屏 全屏是容器的最大化. 缩小 可以点击缩小图标或者鼠标滚轮向下滚,可以缩小图片. 放

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

简要教程 viewer是一款功能强大的图片查看器jQuery插件.它可以实现ACDsee等看图软件的部分功能.它可以对图片进行移动,缩放,旋转,翻转,可以前后浏览一组图片.该图片查看器还支持移动设备,支持键盘控制,功能十分强大. 查看演示      下载插件 安装 可以通过nmp或bower来安装该图片查看器插件. npm install imageviewer bower install imageviewer 复制代码 使用方法 使用该幻灯片插件需要引入jQuery,viewer.css和v

基于jQuery功能强大的图片查看器插件

viewer是一款功能强大的图片查看器jQuery插件.它可以实现ACDsee等看图软件的部分功能.它可以对图片进行移动,缩放,旋转,翻转,可以前后浏览一组图片.该图片查看器还支持移动设备,支持键盘控制,功能十分强大. 在线预览   源码下载 安装 可以通过nmp或bower来安装该图片查看器插件. npm install imageviewer bower install imageviewer 使用方法 使用该幻灯片插件需要引入jQuery,viewer.css和viewer.js文件. <

分享一款强大的图片查看器插件,手机PC 通吃,功能超级齐全!

一款强大的图片查看器插件,手机PC 通吃,功能超级齐全! 地址:http://photoswipe.com/

Qt 图片浏览器 实现图片的放大缩小翻转等功能

图片的功能 源代码: wiget.h #ifndef WIDGET_H #define WIDGET_H #include <QPixmap> #include <QImage> #include <QPushButton> #include <QHBoxLayout> #include <QScrollArea> #include <QLabel> #include <QWidget> #include <QPal

Android开源库--PhotoView图片查看

如果说我比别人看得更远些,那是因为我站在了巨人的肩上. github地址:https://github.com/chrisbanes/PhotoView 介绍 在一般的应用中,总会遇到查看图片的功能,点击图片之后,详细查看,PhotoView这个开源控件就帮我们很好的完成了这个功能. 它继承自ImageView,支持缩放,以及各种手势的监听. 特性 通过多点触摸和双击来进行放大. 通过轻弹划实现平滑滚动. 在带有滚动功能的父类工作的很好(比如ViewPager) 允许当显示的矩阵发生发生改变时通

Qt项目实战2:简单的图片查看器(1)

在博文http://www.cnblogs.com/hancq/p/5817108.html中介绍了使用空的Qt项目创建带有菜单栏.工具栏的界面. 这里,使用一个简单的图片查看器项目,来熟悉一下Qt的图片显示和基本操作. 该项目分为两部分: (1)实现图片的打开.关闭.居中显示.上一张/下一张切换 (2)实现图片的放大.缩小.左旋.右旋.另存为等操作 需要用的Qt类: QFileDialog QImage QPixmap QFileInfo 使用空的Qt项目创建带有菜单栏和工具栏的界面的操作参考

Canvas---Canvas图像处理、图片查看器实现思路整理、拖动边界控制

没想到一个图片查看器花了我这么多时间,而且没做好. 现在整理下思路,然后把不足的地方记一下,日后请教他人. 基本思路: 一.图片查看器功能---缩放 要实现自由缩放,先要实现图片对canvas的自适应,就是给你一张大图片,你能够把它合理缩放后恰好绘制在canvas中. 具体做法是:例如:图片为500*500,canvas为240*320,那就取缩放宽度为240,长度为240/500*500,利用缩放宽度与长度,绘制图片即可. 然后是自由缩放,这时,你的缩小放大对象只要是一个矩形就好,然后图片去适