zoukankan
html css js c++ java
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
>
查看全文
相关阅读:
[转]tesseract api C++使用例子
Flyway记录
线程安全性和共享
并发初解
生产环境中遇到过什么问题?或者有没有自己解决什么问题比较自豪的
Java白皮书关键词理解【随记】
技术面试记录
Mac下完全卸载IntelliJIdea
docker提交镜像后运行新容器mysql无法启动
IntelliJ IDEA切换SDK解决卡顿的问题
原文地址:https://www.cnblogs.com/CB/p/1154084.html
最新文章
#IOS-navigation中左滑pop的三种方法
smarty变量调节器
smarty变量
smarty模板基础
友情链接
图片的像素、分辨率、尺寸
内容模块PC标签调用说明
PHPCMS-首页的二级导航、轮播效果
PHPCMS
项目ppt演讲与阶段性总结
热门文章
计算服务器某个文件大小
[转]缩放图像
[转]OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放
[转]Mat 常见属性
[转]Opencv 图片ROI与图片融合
[转]opencv2-新特性及Mat
[转]opencv中的ROI(感兴趣区域)的设置
[转]在使用扫描仪扫描文字时,分辨率在多少dpi时扫描效果最好?
dpi 分辨率
[转]Mat to PIX during integrate opencv with tesseract
Copyright © 2011-2022 走看看