化成天下网首页新增图片随机切换效果
请先到《化成天下网》首页,观看图片随机切换效果http://hctx.hust.edu.cn/ 。
实现方法,在你的页面上留出一个id="pic"的容器(div,span,td都行),然后在外加上 这句,以下是该JS源码:
——————–slideimg.js———————–
var imgsrc = new Array(); var imglink = new Array(); var imgalt = new Array(); imgsrc[0] = "http://202.112.28.132/hust/hctx/slideimg/1329.jpg"; //图片地址链接 imgsrc[1] = "http://202.112.28.132/hust/hctx/slideimg/1319.jpg"; imgsrc[2] = "http://202.112.28.132/hust/hctx/slideimg/1309.jpg"; //添加更多图片只需按格式继续增加数组元素 imgalt[0] = "第1329期 郑功成:民生问题与和谐社会"; //对该图片的描述 imgalt[1] = "第1319期 左大培:中国的宏观经济与中美关系(下)"; imgalt[2] = "第1309期 Ray Hiebert:互联网和大众,媒体的未来"; imglink[0] = "http://www.univs.cn/newweb/univs/hust/2007-12-10/805079.html"; //图片点击后的跳转链接地址 imglink[1] = "http://www.univs.cn/newweb/univs/hust/2007-11-19/800535.html"; imglink[2] = "http://www.univs.cn/newweb/univs/hust/2007-10-29/796264.html"; var index = 0; //初始播放图片序号 var duration = 5000; //图片切换时间(毫秒) var pic = document.getElementById("pic"); //此ID是与页面唯一关联处 function preImg(){ pic.innerHTML = ""; //除掉原来内容 var a = document.createElement("a"); a.setAttribute("href",imglink[index]); a.setAttribute("title",imgalt[index]); pic.appendChild(a); var slideimg = document.createElement("img"); slideimg.setAttribute("src",imgsrc[index]); a.appendChild(slideimg); slideimg.style.filter = "revealTrans(duration=1,transition=23)"; setTimeout("nextImg()",duration); } function nextImg(){ var img = pic.firstChild.firstChild; if(img.filters){ img.filters.revealTrans.transition=Math.floor(Math.random()*23); img.filters.revealTrans.apply(); } index = (indexpic.firstChild.setAttribute("href",imglink[index]); pic.firstChild.setAttribute("title",imgalt[index]); img.setAttribute("src",imgsrc[index]); if(img.filters) img.filters.revealTrans.play() setTimeout("nextImg()",duration); } preImg();
//代码由catge原创,可随便引用,注明blog:catge.blogbus.com即可
———————————————————
考虑到浏览器兼容问题,所以采用了标准的DOM来写这段函数,图像的切换效果是随机生成的。基本思路就是:
1.先去掉id="pic"的容器的原有内容
2.用DOM生成一个子节点a和a的子节点img
3.给a,img设置属性,同时如果支持浏览器滤镜的话会套上filter效果
4.通过setTimeout改变a、img的src、href等属性,同时给支持滤镜的浏览器加上filter效果
这段代码比其他类似代码的优势是:标准化和兼容性
不足的地方有:
1.如何通过后台自动调用前面的几个数组的数据,条件许可的化,后台做比前台JS实现更好。想实现这种功能,至少要让后台多输出几个img到前台来;
2.扩展图片选择功能,比如加几个浮动的小标签在图片上,点“1”就到第一张图片,点“5”就到第五张图片。主要考虑到这样做可能比较依赖页面的样式定义,所以也就暂时没加上这种功能。
3.给非IE浏览器添加更酷的功能。其实这段效果只有IE能显示出来,FIREFOX等浏览器下只是单纯的切换图片而已。考虑到这些浏览器有更强的CSS特性,应该可以做类似的酷炫效果给他们。
————————————————–
12月27日补记:昨天配合后台加上了自动加载图片功能,以后就无需手动修改了。实现方法为:页面上新建一个id为imgurl的隐藏div,从后台输出最近五期人文讲座的数据(图片链接地址,文章标题,链接地址),然后通过本JS进行实现。JS地址已改,上半部分代码改动为:
var index = 0; //初始播放图片序号 var duration = 5000; //图片切换时间(毫秒) var pic = document.getElementById("pic"); //获取展示图片容器 var imgurl = document.getElementById("imgurl"); //获取包含图片链接信息的容器 var imgsrc = new Array(); var imglink = new Array(); var imgalt = new Array(); function preImg(){ var i = 0; imgurl = imgurl.innerHTML.split("*"); for(var j=0;j<imgurl.length-1;j=j+3){ imglink[i] = imgurl[j]; imgsrc[i] = imgurl[j+1]; imgalt[i] = imgurl[j+2]; i++; } pic.innerHTML = ""; //除掉 var a = document.createElement("a"); a.setAttribute("href",imglink[index]); a.setAttribute("title",imgalt[index]); pic.appendChild(a); var slideimg = document.createElement("img"); slideimg.setAttribute("src",imgsrc[index]); a.appendChild(slideimg); slideimg.style.filter = "revealTrans(duration=1,transition=23)"; setTimeout("nextImg()",duration); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?