JS图片放大查看效果!

http://bbs.blueidea.com/thread-2812683-1-1.html

http://bbs.blueidea.com/thread-2814846-1-1.html

应用效果

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Javascript Images zoom-out view sample. Brought to you by 斩梦人.天天 
QQ:22062019
</title>
<script language="JavaScript">
<!--
var dshowW=450//默认预览图宽度(可由小图的showW,showH动态指定)
var dshowH=300//默认预览图高度
var bborder=1//大图边框
var sborder=1//小图边框
var vborder=1//小预览图边框
var bigW,bigH,smallW,smallH,showW,showH,viewW,viewH;//大图,小图,预览窗,小预览窗
var nview,nflag,picstatus,tempo,abox,zoomX,zoomY;
//初始化
window.onload=function init(){
    isIE
=window.event?1:0;
    picshow.style.borderWidth
=bborder;
    picshow.style.width
=dshowW;
    picshow.style.height
=dshowH;
    bpic.style.display
="";
    abox
=document.body.getElementsByTagName("div"); //初始化所有小图
    for (n=0;n<abox.length;n++)
        
if (abox[n].className=="picbox"){
            
var o=abox[n];
            
var view=getview(o);
            
var img=getimg(o);
            view.style.borderWidth
=vborder;
            o.style.borderWidth
=sborder;
            o.style.width
=img.width+sborder*2*isIE;
            o.style.height
=img.height+sborder*2*isIE;
            o.setAttribute(
"pid",n); //小图标记,主键唯一
            if (o.getAttribute("show")=="show") loadpic(o);
            o.onmouseout
=function (){setTimeout(nview.style.visibility='hidden');}
        }

}

//载入图片
function loadpic(o)
    
var view=getview(o);
    
var img=getimg(o);
    bpic.style.display
="none";
    nview
=view; //标记活动小预览窗
    nflag=o.getAttribute("pid"); //当前图片标记,用来判断切换图片
    //改变预览窗大小
    if (img.getAttribute("showW")!=null) showW=parseInt(img.getAttribute("showW"));
    
else showW=dshowW;
    
if (img.getAttribute("showH")!=null) showH=parseInt(img.getAttribute("showH"));
    
else showH=dshowH;
    picshow.style.width
=showW+isIE*bborder*2;
    picshow.style.height
=showH+isIE*bborder*2;
    loading.style.marginTop
=(showH-loading.offsetHeight)/2;
    if (img.getAttribute("dLeft")) bpic.style.marginLeft=-parseInt(img.getAttribute("dLeft"));
    
if (img.getAttribute("dTop")) bpic.style.marginTop=-parseInt(img.getAttribute("dTop"));
    picstatus
="loading";
    tempo
=o;
    bpic.src
=img.lowsrc;
}

//图片载入完成
function loaddone(o){
    bpic.style.display
="block";
    
var view=getview(o);
    
var img=getimg(o);
    smallW
=img.width; //改变小图,小预览窗大小
    smallH=img.height;
    bigW
=bpic.width;
    bigH
=bpic.height;
    
if (showW>bigW){//如果预览图比大图大,则等于大图
        showW=bigW;
        picshow.style.width
=showW+isIE*bborder*2;
    }

    
if (showH>bigH){
        showH
=bigH;
        picshow.style.height
=showH+isIE*bborder*2;
    }

    zoomX
=bigW/smallW;
    zoomY=bigH/smallH;
    viewW=showW*smallW/bigW;
    viewH=showH*smallH/bigH;
    nview.style.width=viewW-vborder*2*!isIE;
    nview.style.height
=viewH-vborder*2*!isIE;
    nview.style.display
="block"
    img.style.top
=-nview.offsetHeight;
    
if (!nview.style.left) nview.style.left=0;
    
if (!nview.style.top) nview.style.top=0;
    picstatus
="done"
}

//移动事件
function move(e,o,flag)//flag,对象来源标记,FF下view的定位需要
    o=isIE?o.parentElement:o.parentNode;
    
if (o.getAttribute("pid")!=nflag)//判断是否切换了图片
        nview.style.visibility="hidden"
        loadpic(o); 
//载入新图片
    }

    
if (picstatus="done")//如果大图载入完毕
        if (nview.style.visibility="hidden") nview.style.visibility="visible";
        
var e=isIE?window.event:e;
        
if (isIE==0)//分别获取FF或IE的view位置
            if (flag==1)//由于o的来源不同,使用不同的算法定位
                vX=e.layerX+parseInt(nview.style.left)-nview.offsetWidth/2-vborder;
                vY=e.layerY+parseInt(nview.style.top)-nview.offsetHeight/2-vborder;
            }
else{
                vX
=e.layerX-nview.offsetWidth/2-vborder;
                vY=e.layerY-nview.offsetHeight/2-vborder;
            }

        }

        
else{
            vX
=e.offsetX-nview.offsetWidth/2;
            vY=e.offsetY-nview.offsetHeight/2;
        }
 
        
if (vX < 0) vX = 0//边界判断,不能超出缩略图的范围
        if (vY < 0) vY = 0;
        
if (vX > smallW-viewW) {vX=smallW-viewW;mX=bigW-showW}else{mX=vX * zoomX;}
        
if (vY > smallH-viewH) {vY=smallH-viewH;mY=bigH-showH}else{mY=vY * zoomY;}
        nview.style.left
=vX;
        nview.style.top
=vY;
        bpic.style.marginLeft 
= - mX; //刷新预览窗口
        bpic.style.marginTop = - mY;
    }

}

//得到view
function getview(o){
    
var arr=o.getElementsByTagName("div");
    
var n;
    
for (n=0;n<arr.length;n++)
        
if (arr[n].className="view"return arr[n];
}

//得到img
function getimg(o){
    
var arr=o.getElementsByTagName("img");
    
var n;
    
for (n=0;n<arr.length;n++)
        
if (arr[n].className="spic"return arr[n];
}

//-->
</script>
<style type="text/css">
<!--
*
{}{padding:0;margin:0}
body
{}{color:white;background:black;font:bold 12px/18px tahoma;color:white;}
#picshow
{}{border:1px red solid;width:200;height:150;overflow:hidden;margin:0 auto}/**//*width,height随便定义,为了第一次显示时能看见loading*/
#bpic
{}{display:none}
#loading
{}{font:bold 22px/30px tahoma;color:white;}
#loading img
{}{vertical-align:middle;position:relative}
#loading .text
{}{font:bold 12px/20px tahoma;color:white;}
.picbox
{}{border:1px green dashed;overflow:hidden;float:left;width:0;height:0;text-align:left}/**//*注意:overflow:hidden;text-align:left不可更改,如果在IE的表格中定位会出问题*/
.spic
{}{position:relative;}/**//*position:relative不可更改*/
.view
{}{border:1px silver solid;z-index:100;font-size:1px;position:relative;visibility:hidden;display:none}/**//*position:relative;visibility:hidden;display:none不可更改*/
td
{}{text-align:center;height:60px;font-size:30px;margin:0 auto}
//-->
</style>
</head>
<body>
Some text here
<br>ok.| 您需要做的仅仅是加入picshow块和picbox块,设置必要参数,剩下的就让JS去做吧! (移到小图上看更多说明)
<table cellpadding="0" cellspacing="0" border="2" width="100%">
<tr>
    
<td>1</td>
    
<td>2</td>
    
<td>3</td>
</tr>
<tr>
    
<td width="520" align="center">
<div id="picshow">
    
<img id="bpic" onload="loaddone(tempo)"/>
    
<div id="loading">
        
<img src="http://www.whoj.net/images/loading.gif" border="0"/> Loading
        
<div class="text">Please wait<br><br><br></div>
    
</div>
</div>
    
</td>
    
<td>
<div class="picbox" show="show"><!--设置show显示默认图片-->
    
<div class="view" onmousemove="if (!isIE) move(event,this,1)"></div>
    
<img class="spic" lowsrc="http://www.whoj.net/images/b1.jpg" src="http://www.whoj.net/images/s1.jpg" onmousemove="move(event,this,0)" dLeft="700" dTop="300" title="设置标签属性show='show'显示默认图片,设置dLeft,dTop定义默认偏移量"/><!--src:小图,lowsrc:大图,showW/showH:可设置预览窗大小-->
</div>
<div class="picbox">
    
<div class="view" onmousemove="if (!isIE) move(event,this,1)"></div>
    
<img class="spic" lowsrc="http://www.whoj.net/images/b2.jpg" src="http://www.whoj.net/images/s2.jpg" onmousemove="move(event,this,0)" showW="200" showH="200" title="可自定义预览图大小"/>
</div>
<div class="picbox">
    
<div class="view" onmousemove="if (!isIE) move(event,this,1)"></div>
    
<img class="spic" lowsrc="http://www.whoj.net/images/b4.jpg" src="http://www.whoj.net/images/s4.jpg" width="302" onmousemove="move(event,this,0)" title="小图可以按比例放大"/><!--这里可以重新设置小图大小,尽量与大图比例保持一致-->
</div>
    
</td>
    
<td>In table
<div class="picbox">
    
<div class="view" onmousemove="if (!isIE) move(event,this,1)"></div>
    
<img class="spic" lowsrc="http://www.whoj.net/images/b3.jpg" src="http://www.whoj.net/images/s3.jpg" width="60" onmousemove="move(event,this,0)" title="也可以按比例缩小"/>
</div>
<div class="picbox">
    
<div class="view" onmousemove="if (!isIE) move(event,this,1)"></div>
    
<img class="spic" lowsrc="http://www.whoj.net/images/b3.jpg" src="http://www.whoj.net/images/s3.jpg" onmousemove="move(event,this,0)" showW="500" showH="200" title="可以嵌套在table中"/>
</div>
    
</td>
</tr>
</table>
Out of table
<div class="picbox">
    
<div class="view" onmousemove="if (!isIE) move(event,this,1)"></div>
    
<img class="spic" lowsrc="http://www.whoj.net/images/b2.jpg" src="http://www.whoj.net/images/s2.jpg" onmousemove="move(event,this,0)" title="放在table外面也没有问题"/>
</div>
<div class="picbox">
    
<div class="view" onmousemove="if (!isIE) move(event,this,1)"></div>
    
<img class="spic" lowsrc="http://www.whoj.net/images/s4.jpg" src="http://www.whoj.net/images/s4.jpg" onmousemove="move(event,this,0)" showW="1000" showH="1000" title="showW='1000' showH='1000',如果指定预览图比原图大,则使用原图大小" />
</div>
<div class="picbox">
    
<div class="view" onmousemove="if (!isIE) move(event,this,1)"></div>
    
<img class="spic" lowsrc="http://www.whoj.net/images/b5.jpg" src="http://www.whoj.net/images/s5.jpg" onmousemove="move(event,this,0)" showW="160" showH="320" title="代码较上一版本健壮,能在IE,FF下稳定工作,基本支持OP,欢迎大家帮助测试!"/>
</div>
<div class="picbox">
    
<div class="view" onmousemove="if (!isIE) move(event,this,1)"></div>
    
<img class="spic" lowsrc="http://www.whoj.net/images/b5.jpg" src="http://www.whoj.net/images/s5.jpg" onmousemove="move(event,this,0)" width="500" height="112" title="即使没有按比例拉伸,也可以正常工作"/>
</div>
</body>
</html>

转载于:https://www.cnblogs.com/CB/archive/2008/04/15/1154084.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299771.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零开始学习jQuery (九) jQuery工具函数 【转】

一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍. 我们经常要使用脚本处理各种业务逻辑, 最常见的就是数组和对象的操作. jQuery工具函数为我们操作对象和数组提供了便利条件. 二.前言 大…

设计模式之装饰器

装饰器模式介绍俄罗斯套娃装饰器的核心就是在不改原有类的基础上给类新增功能。可以避免继承导致的子类过多&#xff0c;可避免AOP带来的复杂性。装饰器主要解决的是直接继承下因功能的不断横向扩展导致子类膨胀的问题&#xff0c;而是用装饰器模式后就会比直接继承显得更加灵活…

zookeeper集群部署监控与选举同步流程等工作原理

部署一个zookeeper集群&#xff0c;要多简单就能有多简单&#xff08;下载压缩包&#xff0c;解压&#xff0c;修改配置文件zoo.cfg,执行启动脚本&#xff09;&#xff0c;但是想要真的把这套东西玩好了&#xff0c;还是需要费些功夫研究一番的。就跟自己搭建一个lnmp的站点&am…

手把手教出欧拉!数学界最伟大的老师惨遭全网歪曲抹黑,奇葩说陈铭一句话揭露真相.........

全世界只有3.14 % 的人关注了青少年数学之旅说到伟大的老师你首先想到的是谁&#xff1f;万世师表的孔子&#xff1f;古代先哲亚里士多德&#xff1f;支援山区的青年教师&#xff1f;还是高三时每天在你耳边督促你订正错题本的班主任&#xff1f;在这个光荣的行列中&#xff0c…

Hello Blazor:(8)启用深色模式

前言上次&#xff0c;在“集成Tailwind CSS”时&#xff0c;我发现tailwind.config.js配置文件有这样一个选项&#xff1a;darkMode: false, // or media or class查看官方文档&#xff0c;原来这是用来启用深色模式的配置。既然深色模式几乎成了所有网站和软件的标配&#xff…

超越Linux!华为鸿蒙明年将成“第五大操作系统”,网友:何时超过iOS?

全世界只有3.14 % 的人关注了青少年数学之旅今年8月的华为开发者大会上&#xff0c;鸿蒙OS正式亮相&#xff0c;这是全世界第一个基于微内核的全场景分布式操作系统。余承东曾表示&#xff1a;华为手机优先使用安卓生态&#xff0c;一旦受实体名单影响安卓不能用&#xff0c;一…

关于 .NET 与 JAVA 在 JIT 编译上的一些差异

最近因为公司的一些原因&#xff0c;我也开始学习一些 JAVA 的知识。虽然我一直是以 .NET 语言为主的程序员&#xff0c;但是我并不排斥任何其它语言。在此并不讨论 JAVA .NET 的好坏&#xff0c;仅仅是对 .NET 跟 JAVA 程序的编译执行过程进行一些简单的介绍跟比较。因为有些内…

在鹅厂,我作为一个Java 程序员每天都在摸鱼!!!

作为一名 在大、中、小微企业都待过 的 Java 开发者&#xff0c;今天和大家分享下自己在不同公司的工作日常和收获。包括一些个人积累的工作提升经验&#xff0c;以及一些 Java 学习的方法和资源。 先从我的第一份 Java 开发实习工作说起吧~ 实习生工作日常 我是在大二暑期开…

心中一万只草泥马在奔腾是种怎样的体验?| 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;图源横店街道办主任&#xff0c;侵权删&#xff09;

iOS工程中的info.plist文件的完整研究

原地址&#xff1a;http://blog.sina.com.cn/s/blog_947c4a9f0100zf41.html 们建立一个工程后&#xff0c;会在Supporting files下面看到一个"工程名-Info.plist"的文件&#xff0c;这个是对工程做一些运行期配置的文件&#xff0c;很重要&#xff0c;不能删除。 如果…

不会自动化UI测试?不会编程?没问题,会造句就行!

上次&#xff0c;我们介绍了用于Web应用程序自动化测试的工具Playwright for .NET。但是直接使用它来编写测试用例&#xff0c;代码比较凌乱&#xff0c;后期也不好维护。因此&#xff0c;我们利用SpecFlow让测试用例更好理解和维护。1.SpecFlow介绍SpecFlow是.Net平台下用于行…

鼠标手势识别 [Flash]

算法&#xff1a;演示&#xff1a;源代码&#xff1a;http://www.foxaweb.com/demos/mousegesture/mouse_gesture_v1_0.zip转载于:https://www.cnblogs.com/boringlamb/archive/2008/05/20/1203115.html

Java交流|面试最后一问:你有什么问题想问我吗?

尽管&#xff0c;我们之前做了这么多的面试准备&#xff0c;然而&#xff0c;最后这个90%可见的最后一问可能直接让你功亏一篑。这么厉害的最后一问&#xff1a;”你有什么问题想问我吗&#xff1f;“ 看似平淡无奇的问题&#xff0c;但是却蕴含着多方面的含义。这个问题表面上…

基于MapWinGis的开发探索(三)--改善缩放、渲染、显示文本

继续对MapWinGis进行研究探索&#xff0c;紧接上一篇文章。MapWinGis自身有很多功能&#xff0c;此篇主要也是基于其内在方法来写的。除了第二点显示文本是根据其源代码进行扩展的。原图:一、改善缩放功能上一版本放大缩小都必须点击下工具栏的放大、缩小。是鼠标处于缩放状态&…

T-SQL利用Row_Number函数实现分页

SQL: CREATE PROCEDURE PagingViewTest (currentPageIndex INT, --页序号pageSize INT, --页大小pageCount INT OUTPUT --返回值&#xff0c;总记录数 ) AS BEGIN--取总记录数 SELECT pageCountCOUNT(OrderID) FROM dbo.sale_Order; --利用CTE以提高执行效率 WITH Result AS (…

程序员没有女朋友的原因,我终于找到了!

全世界只有3.14 % 的人关注了青少年数学之旅程序员没有女朋友的原因▼程序员大脑里想的▼每天要学习太多语言&#xff0c;程序员太忙了▼女朋友 VS 编译器▼程序员sao起来&#xff0c;还需要女朋友吗&#xff1f;▼电脑才是程序员的女朋友▼互道晚安后&#xff0c;会不会偶遇在…

dotNet 5 中执行 Node.js

在低代码产品中为了扩展功能&#xff0c;我们在业务编排中会扩展代码块的功能&#xff0c;允许用户直接在界面中进行代码&#xff08;Node.js、 Python&#xff09;的编写&#xff0c;来实现取数或者赋值的一些功能。本文简单介绍下在 dotNET 5 中怎么样进行 Node.js 的调用以及…

为什么会有蟑螂这种反人类的动物出现?

全世界只有3.14 % 的人关注了青少年数学之旅相信很多人都听过南北蟑螂的故事&#xff0c;即使是一个可以打死老虎的北方人在南方蟑螂面前也会惊慌失措。除此之外&#xff0c;我们日常生活里和蟑螂的故事还有很多&#xff0c;比如&#xff1a;当你打开灯的时候&#xff0c;会有一…

Ajax使用初步

Ajax定义为“Asynchronous JavaScript XML”的简称&#xff0c;也就是异步的JavaScript和XML处理。从原理上看&#xff0c;主要是Ajax可以通过调用HttpRequest实现与服务器的异步通讯&#xff0c;并最终在网页中实现丰富友好的用户界面Ajax使用初步&#xff0c;配置步骤1.把Aj…

WPF 如何流畅地滚动ScrollViewer

WPF开发者QQ群&#xff1a; 340500857 | 微信群 -> 进入公众号主页 加入组织欢迎转发、分享、点赞、在看&#xff0c;谢谢~。 前言看了看原生UWP的ScrollViewer&#xff0c;滑动很流畅(例如 开始菜单)&#xff0c;但是WPF自带的ScrollViewer滚动十分生硬..突发奇想&#x…