哪个美女最漂亮,自己写的js图片自适应切换

自己手写了个图片自适应切换,功能上很简单,大家也能看到,很明显,代码非常冗余.
复制代码
<script type="text/javascript">
var imgSrcList="http://www.cnblogs.com/images/cnblogs_com/tobin/144465/r_1.jpg,http://www.cnblogs.com/images/cnblogs_com/tobin/144465/r_2.jpg,http://www.cnblogs.com/images/cnblogs_com/tobin/144465/r_3.jpg,http://www.cnblogs.com/images/cnblogs_com/tobin/144465/r_4.jpg,http://www.cnblogs.com/images/cnblogs_com/tobin/144465/r_5.jpg";
var titleList="美女1,美女2,美女3,美女4,美女5";
var urlList="tobin.cnblogs.com/1,tobin.cnblogs.com/2,tobin.cnblogs.com/3,tobin.cnblogs.com/4,tobin.cnblogs.com/5";
var imgArray=imgSrcList.split(",");//转换成数组
var titleArray=titleList.split(",");//转换成数组
var urlArray=urlList.split(",");//转换成数组
var mainWidth,mainHeight;
var intervalTimer;
var picIndex=-1;
window.onload
=function()
{
//获取外框div的宽高
mainWidth= document.getElementById("PicShowMain").offsetWidth;
mainHeight
=document.getElementById("PicShowMain").offsetHeight;
document.getElementById(
"PicMain").src=imgArray[picIndex+1];
//调整图片大小
ChangePicSize();
document.getElementById(
"PicShowText").href=urlArray[picIndex+1];
document.getElementById(
"PicShowText").title=document.getElementById("PicShowText").innerHTML=titleArray[picIndex+1];
picIndex
=0;
//每隔6秒切换一次
intervalTimer=setInterval(ChangePic,6000);
}

function ChangePic()
{
picIndex
++;
//设置滤镜使图片有效果,IE支持
document.getElementById("PicMain").filters.item(0).transition=Math.floor(Math.random()*23);
document.getElementById(
"PicMain").filters.item(0).Apply();
document.getElementById(
"PicMain").src=imgArray[picIndex];
ChangePicSize();
document.getElementById(
"PicShowText").href=urlArray[picIndex];
document.getElementById(
"PicShowText").title=document.getElementById("PicShowText").innerHTML=titleArray[picIndex];
document.getElementById(
"PicMain").filters.item(0).Play();
if(picIndex>=imgArray.length-1)
picIndex
=-1;
}

function GetPicSize(picUrl)
{
//创建一个image对象,获取图片实际的宽高,放到数组中返回
var size=new Array();
var img=new Image();
img.src
=picUrl;
size[
0]=parseInt(img.width);
size[
1]=parseInt(img.height);
return size;
}

//根据图片实际大小和外框大小,调整img标签的大小,使图片放大/缩小但不变形
function ChangePicSize()
{
var picsize=GetPicSize(document.getElementById("PicMain").src);
if(mainWidth<=picsize[0]&&mainHeight>=picsize[1])
{
document.getElementById(
"PicMain").width=mainWidth;
document.getElementById(
"PicMain").removeAttribute("height");
}

else if(mainWidth>=picsize[0]&&mainHeight<=picsize[1])
{
document.getElementById(
"PicMain").height=mainHeight;
document.getElementById(
"PicMain").removeAttribute("width");
}

else if(mainWidth<=picsize[0]&&mainHeight<=picsize[1])
{
if(picsize[0]/mainWidth
<picsize[1]/mainHeight)
{
document.getElementById(
"PicMain").height=mainHeight;
document.getElementById(
"PicMain").removeAttribute("width");
}

else
{
document.getElementById(
"PicMain").width=mainWidth;
document.getElementById(
"PicMain").removeAttribute("height");
}

}

else if(mainWidth>=picsize[0]&&mainHeight>=picsize[1])
{
if(mainWidth/picsize[0]<mainHeight/picsize[1])
{
document.getElementById(
"PicMain").width=mainWidth;
document.getElementById(
"PicMain").removeAttribute("height");
}

else
{
document.getElementById(
"PicMain").height=mainHeight;
document.getElementById(
"PicMain").removeAttribute("width");
}

}

}

//鼠标移动到图片停止切换
function mmin()
{
clearInterval(intervalTimer);
}

//鼠标移开图片继续切换
function mmout()
{
intervalTimer
=setInterval(ChangePic,6000);
}

</script>
<div style="width: 400px;">
<div id="PicShowMain" style="overflow: hidden; width: 400px; height: 300px; text-align: center;"><img id="PicMain" onmouseover="mmin()" onmouseout="mmout()" alt="" src="http://www.cnblogs.com/images/cnblogs_com/tobin/144465/r_1.jpg" style="filter: revealTrans(duration=3,transition=100)" border="0" /></div>
<div><id="PicShowText" href="http://www.cnblogs.com/tobin/admin/EditPosts.aspx?opt=1#"></a></div>
</div>
复制代码
代码很简单,没什么特别的地方:

准备写成这种形式:
复制代码
<script type="text/javascript">
var PicEngine=function()
{
//.
this.ChangePic=function()
{
//.
}

this.GetPicSize=function()
{
//.
}

this.ChangePicSize=function()
{
//.
}

}

</script>
复制代码
但实在是个人对这个this的用法确实不了解。希望有高手能帮我封装一下。
这个只是最简单的,等我学会了这种方式的初始化以后会写成asp.net 控件,原来封装了一个flash+js实现的,可惜flash不是俺写的,链接不好控制,所以准备自己动手写一个。

posted on   Tobin  阅读(956)  评论(4编辑  收藏  举报

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!

导航

< 2008年7月 >
29 30 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9
点击右上角即可分享
微信分享提示