查看: 7576|回复: 29

[教程] 图片轮显代码大全(JS幻灯片)

[复制链接]

签到天数: 1 天

[LV.1]初来乍到

鲜花(0) 鸡蛋(0)
发表于 2007-12-20 23:26 | 显示全部楼层 |阅读模式

图片轮显代码大全(JS幻灯片)

透明渐变轮番显示

图片以透明渐变轮番显示的脚本效果,过去也有过类似的,可是
不能任意的定制增减图片的数量,这次的是完美的。
  制作方法:
  在<head>标签下,粘贴代码:
<SCRIPT LANGUAGE="JavaScript">
// 设置轮番显示速度 Set slideShowSpeed (milliseconds)
var slideShowSpeed = 5000;
// 匀滑转换时间 Duration of crossfade (seconds)
var crossFadeDuration = 3;
// 指定图像文件 Specify the image files
var Pic = new Array();
// to add more images, just continue
// the pattern, adding to the array below

Pic[0] = '1.jpg'
Pic[1] = '2.jpg'
Pic[2] = '3.jpg'
Pic[3] = '4.jpg'
Pic[4] = '5.jpg'

// do not edit anything below this line
var t;
var j = 0;
var p = Pic.length;
var preLoad = new Array();
for (i = 0; i < p; i++) {
preLoad = new Image();
preLoad.src = Pic;
}
function runSlideShow() {
if (document.all) {
document.images.SlideShow.style.filter="blendTrans(duration=2)";
document.images.SlideShow.style.filter="blendTrans(duration=crossFadeDuration)";
document.images.SlideShow.filters.blendTrans.Apply();
}
document.images.SlideShow.src = preLoad[j].src;
if (document.all) {
document.images.SlideShow.filters.blendTrans.Play();
}
j = j + 1;
if (j > (p - 1)) j = 0;
t = setTimeout('runSlideShow()', slideShowSpeed);
}
</script>
  修改body:
  <body bgcolor="#FFFFFF" text="#000000" >
  将表格单元格设置名称“id=VU”:
  <td id=VU>
  在<img>中加入代码:<img src="1.jpg" name='SlideShow'>

  至此,我们的效果便制作好了,你不仿试试!
点 击 预 览 效 果 页 面......

  制作方法:
  1. 在<head>中插入代码:
<script language='javascript'>
isns = navigator.appName == "Netscape";
//定义播放图片张数
img1=new Image()
img2=new Image()
img3=new Image()
img4=new Image()
img5=new Image()
//图片路径、文件名
img1.src='images/circul-side.gif'
img2.src='images/css-manual.gif'
img3.src='images/kpt7.jpg'
img4.src='images/msn.jpg'
img5.src='images/ps-logo.jpg'
nn=1
function change_img()
{
eval('document.pic.src=img'+nn+'.src');
nn++;
if(nn>5) nn=1
if(!isns)
{
pic.filters.item(0).apply()
pic.style.visibility='visible'
pic.filters.item(0).play()
setTimeout("pic.style.visibility='hidden'",4000);
}
else
document.pic.visibility='visible'
tt=setTimeout('change_img()',4000)
}
</script>
  可以在代码中按照中文介绍,修改相关信息。
  2. 在<body>中加载:<body >
  3. 插入第一张图片,并命名:id="pic"
  插入代码:style='visibility:hidden;filter:revealtrans(duration=2.0,transition=12)'
  参考图片代码:
  <img src="images/circul-side.gif" name="pic" width="120" height="90" id="pic" style='visibility:hidden;filter:revealtrans(duration=2.0,transition=12)'>

  制作完成。

观看效果

使用CSS中的revealTrans滤镜制作超弦图片的播放
CSS中有revealTrans滤镜(具体介绍请参看巧用CSS的 RevealTrans 滤镜),也曾用该滤镜制作过各种图片播放的效果(类似于使用CSS滤镜revealTrans制作图片渐显效果)。知道其在网页中制作特效非常有用处。这次,我们准备介绍另一种使用revealTrans滤镜制作出超弦图片播放的效果。
  实现思路:使用revealTrans滤镜制作出超弦图片播放的效果,并每张图片有各自的链接地址。
  制作方法:
  1、在<head>中插入JS代码:
<SCRIPT language=JavaScript1.2>
function reapply(){
setTimeout("slideit()",800)
return true
}
window.onerror=reapply
</SCRIPT>
<SCRIPT language=JavaScript1.1>
<!--
//preload images
var image1=new Image()
image1.src="images/01.jpg"
var image2=new Image()
image2.src="images/02.jpg"
var image3=new Image()
image3.src="images/03.jpg"
var image4=new Image()
image4.src="images/04.jpg"
var image5=new Image()
image5.src="images/05.jpg"
var image6=new Image()
image6.src="images/06.jpg"
var image7=new Image()
image7.src="images/07.jpg"
var image8=new Image()
image8.src="images/08.jpg"
var image9=new Image()
image9.src="images/09.jpg"
//-->
</SCRIPT>
  其中:images/bigbanner/XXX.jpg为显示图片的路径,可按实际情况修改。
  2、在<body>中插入代码:onload=slideit()
  3、在页面中插入图片,并在图片<img>中插入:style="FILTER: revealTrans(Duration=2, Transition=23)",并命名为:name=slide
  完整代码:<img src="images/circul-side.gif" width="120" height="90" border="0" style="FILTER: revealTrans(Duration=2, Transition=23)" name=slide>
  4、给图片加超链接:<a href="javascript :slidelink()">
  5、加入代码:
<SCRIPT>
<!--
////change number of images below
var number_of_images=9
//change speed below (in seconds)
var speed=3
var step=1
var whichimage=1
function slideit(){
if (!document.images)
return
if (document.all)
slide.filters.item(0).Apply()
document.images.slide.src=eval("image"+step+".src")
if (document.all)
slide.filters.item(0).Play()
whichimage=step
if (step<number_of_images)
step++
else
step=1
if (document.all)
setTimeout("slideit()",speed*1000+3000)
else
setTimeout("slideit()",speed*1000)
}
function slidelink(){
if (whichimage==1)
top.location.href="/index.html"
if (whichimage==2)
top.location.href="/news.html"
if (whichimage==3)
top.location.href="/game.html"
if (whichimage==4)
top.location.href="/music.html"
if (whichimage==5)
top.location.href="/sport.html"
if (whichimage==6)
top.location.href="/radio.html"
if (whichimage==7)
top.location.href="/travel.html"
if (whichimage==8)
top.location.href="/card.jsp"
else if (whichimage==9)
top.location.href="/study.html"
}
</SCRIPT>
  其中:各链接地址相对应<head>中插入的JS代码中的图片。
  注意,页面地址必须与图片张数相对应。本教学使用九张图片,相应就放置九个超链接地址。


DHTML幻灯片播放程序
这是一个幻灯片播放程序,也就是一图片轮流播放的程序。我们在一些站点上可以看见这种形式的广告播放条,大多是用CGI做的,也就是要服务器端支持CGI程序,如ASP、PHP、Perl等。但我们这里的实现方法无需CGI,用的仅是CSS的效果,再加上JavaScripts的控制。只要你的浏览器是IE 4.0以上或是Netscape 3.0以上的就可以了。只不过在这里我们用到了CSS的Filter滤镜效果,该效果只能在IE中出现。有关CSS的Filter滤镜效果,大家可以参看我的《CSS中Filter滤镜详解》,该文章在Yesky.com上已经发表。好了,让我们来做点准备工作吧。
  首先,为了制作这个效果,我们首先要打几个尺寸一样大小的图片,让其轮流播放。比如,我找了下面三个88x31的图片做为所用的的图片。
  其次,让我们再来复习一下CSS中Filter的图片转换滤镜的知识:
CSS中的显示转换滤镜
  显示转换滤镜提供的是一种更为多变的转换效果,它不像混合转换滤镜,只提供一种淡入淡出的效果,它还提供了更多的图片转换效果,它的语法是:
Filter : RevealTrans ( duration = 转换的秒数,transition=转换类型 )
  大家可以看见,它有一个转换类型的参数,这里,它提供了24种转换类型,我们只需指定转换类型的代号,就可以让图片按特有的转换效果进行转换。下表就是24种转换滤镜的形式及其对应的代号:
动态转换滤镜的属性、方法和事件
属性名 说明 取值
duration 图像转换的延迟时间,最小单位是毫秒,也就是小数点后第三位。 单位是秒,取值自然数
enabled 指定是否应用滤镜效果 0表示不应用,非0表示就用。
staus 传回一个转换状态 0表示转换停止
1表示显示应用的转换滤镜
2表示正在转换中
方法名 说明
Apply 将滤镜应用到对象上
Play 开始转换
Stop 停止转换
事件名 说明
OnFilterChange 当滤镜转变发生改变或是滤镜完成时所触发的事件

  上面的CSS的转换滤镜如何被JavaScripts调用的知识我没有过多的说明,我只是列举了他的属性方法和事件。在后面,我们用Javascript来控制他的时候,我会告诉大家如何用JavaScripts使其工作的。当然这些滤镜只能在IE4.0中浏览,NetScape不支持,不过,这并不影响netscape中的显示,只不过Netscape中不会出现图片转换的效果了。
下面,我要开始最为核心的部分了,就是编写javascript程序了。我们的思路是,可以定义一组图片(若干张),当页面出现时先显示第一张图片,并预载入第二张图片,第一张图片载入后5秒钟,如果第二张图片也载入了,我们就开始自动切换到第二张图片,此时并预载入第三张图片,如果5秒钟内我们载入了第三张图片,就自动切换到第三张图片,如此播放下去直到最后一张又从头开始。当然,这是自动播放的了。我们还允许用户手动进行向前和向后的播放。
  首先,我们要解决的问题是图片的预载入,因为这决定了切换过程的流畅性和播放过程的完美性。要预载入一幅图片很简单,我们只要在内存中新建一个图片的实例变量,并把该变量指向一幅图片,这样,我们的浏览器便会自动载入这幅图片的,这就是图片的预载入。用javascript写出来就是下面这个样子:
      var myImage = new Image()
      myImage.src = "someImage.gif"
  然后,我们还要知道,图片是否载入了吗?如果载入了,我们就显示,如果没载入,那么就要出错了。于是我们还要改一下上面的代码,在其中加入两条语句,所以,这段JavaScript就变成下面的样子了:
      var img = new Image()
      img.onload = doReadyImage
      img.onerror = doErrorDisplay
      img.src = "someImage.gif"
  我们加入了图片的onload和onerror事件,分别代表是否预载和预载出错的事件。这两条句语必需在img.src语句的前面。否则的话,图片预载就会出错。
  最后就是我们的图片切换程序了,在前面,我们复习了CSS中Filter转换滤镜的各种效果,这里我们用代号为23的随机效果,下面,是我们为在IE中这种效果所写的JavaScript程序:
if (document.images.slideShow.filters)
{
  document.images.slideShow.filters[0].Stop()
  document.images.slideShow.filters[0].Apply()
  // 使用随机的转换效果
  document.images.slideShow.filters.revealTrans.transition=23
}
document.images.slideShow.src = sSource
// 开始进行转换效果的执行
if (document.images.slideShow.filters)
    document.images.slideShow.filters[0].Play()
任何人都能将假期的照片放在自己的网站上,但只有最酷的网络构建者会将他们设计成一场幻灯片秀。而且还不是那种简单的一张照片一个HTML页面的幻灯片,而是一个真正有动态感的幻灯片秀,每一个影像都下载到同一个HTML页面去。我们会教你如何使用Dynamic HTML (DHTML)和Cascading Style Sheets(CSS)去构建专属你个人的幻灯片秀,让你的朋友、家人和同事觉得更无聊,喔不!是印象更深刻。但是记住!因为这种幻灯片秀是用DHTML写的,因此它只能在4.0或以上更新的浏览器版本才能看得到。
当然喽,这种幻灯片秀也有严肃的用途。只是我们现在还没有想到而已。
步骤一
收集你已经准备放在网络上的影像,而且将他们裁成相同的尺寸。确定尺寸范围不超过640 x 480个像素,而且所有的相片的像素尺寸都要保持相同--如果照片尺寸大小不定,对观众而言会造成视觉上的不和谐。
步骤二
在你的页首标签里,你首先要做的,就是在<STYLE>标签里指出使用的是CSS。在<STYLE>标签里,在你想要幻灯片出现的页面设定位置,并决定一开头是否要以空白背景图表现,或者直接秀出第一张幻灯片。请将下列程序代码剪贴到你的页面中,并使用你自己选择的位置座标:
<STYLE type="text/css"> <!-- .slides {position:absolute; left: 25%; top:25%; visibility:hidden} --> </STYLE>
步骤三
接下来立刻处理CSS的细节部分,还是在页首标签中插入JavaScript。在var numSLides =之后,设定要秀出的幻灯片数目(别设太多,因为每一张照片都会为网页增加可观的KB数)。我们的范例中有五张照片。以下是程序代码:
<SCRIPT language="JavaScript1.2"> var numSlides = 5; var currentSlide = numSlides;
步骤四
如果你想加入图片的解释说明文字,可以用下列的程序代码,将我们的说明文字换成你自己的说明文字:
var captionTxt = new Array(numSlides);
function setUpCaptions() {
captionTxt[1] = "39号码头入口。"
captionTxt[2] = "海狮在码头附近漫步。"
captionTxt[3] = "小船在码头*岸。"
captionTxt[4] = "水底世界鲸鱼壁画。"
captionTxt[5] = "海中小岛或者是岩石。"
}
步骤五
将这里所示的程序代码贴到你网页中的HTML文件,位置就在JavaScript的说明文字下。因为Navigator 4.0和IE 4.0以不同的方式解读CSS,我们的script就使用对象检测(object detection)来决定呈现的模式。如果呈现的模式是Navigator,它还是可以定义某些特定的对象,使得IE程序代码还是有作用。另外这也是整个程序代码的结尾,所以一定要以</SCRIPT>标签来作结束:
function setUp() {
if (!document.all) {
document.all = document;
for (i=1;i<=numSlides;i++) document.all[("image"+i)].
style=document.all[("image"+i)];
}
switchSlide(1);
}
function switchSlide(sDir) {
newSlide = currentSlide + sDir;
if (!newSlide) newSlide=numSlides;
if (newSlide > numSlides) newSlide=1;
document.all[("image"+newSlide)].style.visibility="visible";
document.all[("image"+currentSlide)].
style.visibility="hidden";
// 如果不要说明文字,请移除下一行:
document.all["captions"].document.forCaptions.captionsText.
value=captionTxt[newSlide];
currentSlide = newSlide;
}
//-->
</script>

注意那些*近程序代码结尾的注解:如果你没有说明文字,那么就将它下面一行的文字移除。
步骤六
以</HEAD>关闭页首标签,然后将下列的程序代码,贴到网页HTML文件中的body部分。 注意,程序代码以个别的<DIV>标签区分每个影像,他们和正规的<IMG src>格式有关联:
<BODY >
<B> Builder.com slide show!</B>
<DIV id="image5" class="slides"><IMG src="fifth.jpg"></DIV>
<DIV id="image4" class="slides"><IMG src="fourth.jpg"></DIV>
<DIV id="image3" class="slides"><IMG src="third.jpg"></DIV>
<DIV id="image2" class="slides"><IMG src="second.jpg"></DIV>
<DIV id="image1" class="slides"><IMG src="first.jpg"></DIV>
步骤七
观众必须以自己的步调来点按幻灯片,所以你得提供他们点按的东西。。你可以使用简单老式的超链接,但是若有特殊的Previous和Next的GIF点选按钮,就精巧多了。样本程序代码是使用一个table来连接next.gif和previuos.gif:
<DIV style="position:absolute; top:350px; left:100px">
<A href="javascript :switchSlide(-1)"><IMG src="previous.gif" border=0></A>
<A href="javascript :switchSlide(1)"><IMG src="next.gif" border=0></A>
</DIV>
如果你不想用GIF文件来作Previous和Next点选按钮,用文字取代上面的<IMG>标签。
步骤八
最后,在<TEXTAREA>输入欲显现的说明文字。你可以随意决定<TEXTAREA>的尺寸大小,只要改变rows=和cols=的数字即可。以下是程序代码:
<DIV id="captions" style="position:absolute; left: 320px; top:75px">
<B>icture caption</B>
<FORM name=forCaptions>
<TEXTAREA name="captionsText" wrap="virtual" rows=25 cols=20"></TEXTAREA>
</FORM>
</DIV>

该用户从未签到

鲜花(0) 鸡蛋(0)
发表于 2007-12-21 02:02 | 显示全部楼层
你这个看的我都晕!!!

签到天数: 9 天

[LV.3]偶尔看看II

鲜花(0) 鸡蛋(0)
发表于 2007-12-21 11:43 | 显示全部楼层
这么复杂啊,看不懂。

该用户从未签到

鲜花(0) 鸡蛋(0)
发表于 2007-12-21 13:45 | 显示全部楼层
有空再慢慢研究。。 这个是要用在网页上的吧?

该用户从未签到

鲜花(0) 鸡蛋(0)
发表于 2007-12-21 14:53 | 显示全部楼层
看一下!常常学习

该用户从未签到

鲜花(0) 鸡蛋(0)
发表于 2007-12-21 21:31 | 显示全部楼层
凭窗远眺朋友,你的大作拜读,我想提点建议: 因为如果仅仅是HTML代码,你说会不会让浏览的人一种非常抽象十分无味提不起兴趣的感觉? 我认为应该演示一下实例,如:






































[ 本帖最后由 闪鸟 于 2007-12-22 19:02 编辑 ]

该用户从未签到

鲜花(0) 鸡蛋(0)
发表于 2007-12-21 21:58 | 显示全部楼层
代码如下为了显示代码,代码开头处少了个\"<\"

EMBED style=\"LEFT: 240px; WIDTH: 520px; POSITION: absolute; TOP: 130px; HEIGHT: 400px\" name=photoFlick pluginspage=http://www.macromedia.com/go/getflashplayer align=middle src=http://flash.picturetrail.com/pflicks/l_photopeel3d_r.swf width=400 height=320 type=application/x-shockwave-flash loop=\"false\" quality=\"high\" FlashVars=\"logopath=http://flash.picturetrail.com/pflicks/ptlogo1.swf&ptdim=50.10&ptxy=400.16&auto=1&wait=4&img1=http://pic60.picturetrail.com:80/VOL1708/10146778/18249762/293667271.jpg&img2=http://pic60.picturetrail.com:80/VOL1708/10146778/18249762/293667269.jpg&img3=http://pic60.picturetrail.com:80/VOL1708/10146778/18249762/293667268.jpg&img4=http://pic60.picturetrail.com:80/VOL1708/10146778/18249762/293666620.jpg&img5=http://pic60.picturetrail.com:80/VOL1708/10146778/18249762/293666618.jpg&img6=http://pic60.picturetrail.com:80/VOL1708/10146778/18249762/293666615.jpg&img7=http://pic60.picturetrail.com:80/VOL1708/10146778/18249762/293666614.jpg&img8=http://pic60.picturetrail.com:80/VOL1708/10146778/18249762/293666612.jpg&img9=http://pic60.picturetrail.com:80/VOL1708/10146778/18249762/293666610.jpg&img10=http://pic60.picturetrail.com:80/VOL1708/10146778/18249762/293666609.jpg&img11=http://pic60.picturetrail.com:80/VOL1708/10146778/18249762/293666608.jpg&img12=http://pic60.picturetrail.com:80/VOL1708/10146778/18249762/293666607.jpg&img13=http://pic60.picturetrail.com:80/VOL1708/10146778/18249762/293666604.jpg&img14=http://pic60.picturetrail.com:80/VOL1708/10146778/18249762/293666600.jpg&img15=http://pic60.picturetrail.com:80/VOL1708/10146778/18249762/293666598.jpg&img16=http://pic60.picturetrail.com:80/VOL1708/10146778/18249762/293666596.jpg&img17=http://pic60.picturetrail.com:80/VOL1708/10146778/18249762/293666593.jpg&img18=http://pic60.picturetrail.com:80/VOL1708/10146778/18249762/293666591.jpg\" wmode=\"transparent\" bgcolor=\"#ffffff\" allowScriptAccess=\"sameDomain\">

[ 本帖最后由 闪鸟 于 2007-12-22 18:53 编辑 ]

签到天数: 1 天

[LV.1]初来乍到

鲜花(0) 鸡蛋(0)
发表于 2007-12-25 22:03 | 显示全部楼层
呵呵,学习学习, 用到帖子上, [ 本帖最后由 叶飞 于 2007-12-25 22:18 编辑 ]

签到天数: 1 天

[LV.1]初来乍到

鲜花(0) 鸡蛋(0)
发表于 2007-12-25 22:41 | 显示全部楼层
这个可以放到播放器里,每放一个歌就翻一个图片。。 不知道这样的实现难不难

该用户从未签到

鲜花(0) 鸡蛋(0)
发表于 2007-12-27 11:48 | 显示全部楼层
有时候慢慢学习,一下子没看懂
您需要登录后才可以回帖 登录 | 中文注册

本版积分规则

网站地图|小黑屋|Archiver|中画网 ( 蜀ICP备11021737号-2 )|网站地图

GMT+8, 2024-11-15 11:48 , Processed in 0.066354 second(s), 23 queries , MemCached On.

上网要文明 发言要理性

Powered by Discuz! © 2008-2023 YinHuaBBS.CN

快速回复 返回顶部 返回列表