如何为此Javascript幻灯片添加淡入淡出效果?

时间:2013-03-10 14:19:08

标签: javascript slideshow

下面的图片幻灯片脚本按预期工作,因为它循环显示带有可选锚链接和描述的图像数组。

现在我想通过添加淡入/淡出效果来改进此脚本。非常感谢任何帮助。

提前谢谢。

<script language="JavaScript1.2">
  var variableslide = new Array()

  variableslide[0] = ['image1.jpg', 'link here', 'description']
  variableslide[1] = ['image2.jpg', 'link here', 'description']
  variableslide[2] = ['image3.jpg', 'link here', 'description']

  var slidewidth = '600px'
  var slideheight = '250px'
  var slidebgcolor = '#FFFFFF'

  var slidedelay = 3000

  var ie = document.all
  var dom = document.getElementById

  for (i = 0; i < variableslide.length; i++) {
    var cacheimage = new Image()
    cacheimage.src = variableslide[i][0]
  }

  var currentslide = 0

  function rotateimages() {
    contentcontainer = '<center>'
    if (variableslide[currentslide][1] != "")
      contentcontainer += '<a href="' + variableslide[currentslide][1] + '">'
    contentcontainer += '<img src="' + variableslide[currentslide][0] + '" border="0" vspace="3">'
    if (variableslide[currentslide][1] != "")
      contentcontainer += '</a>'
    contentcontainer += '</center>'
    if (variableslide[currentslide][2] != "")
      contentcontainer += variableslide[currentslide][2]

    if (document.layers) {
      crossrotateobj.document.write(contentcontainer)
      crossrotateobj.document.close()
    } else if (ie || dom)
      crossrotateobj.innerHTML = contentcontainer
    if (currentslide == variableslide.length - 1) currentslide = 0
    else currentslide++
      setTimeout("rotateimages()", slidedelay)
  }

  if (ie || dom)
    document.write('<div id="slidedom" style="width:' + slidewidth + ';height:' + slideheight + ';     background-color:' + slidebgcolor + '"></div>')

  function start_slider() {
    crossrotateobj = dom ? document.getElementById("slidedom") : ie ? document.all.slidedom : document.slidensmain.document.slidenssub
    if (document.layers)
      document.slidensmain.visibility = "show"
    rotateimages()
  }

  if (ie || dom)
    start_slider()
  else if (document.layers)
    window.onload = start_slider
</script>
<ilayer id="slidensmain" width=&{slidewidth}; height=&{slideheight}; bgColor=&{slidebgcolor}; visibility=hide>
  <layer id="slidenssub" width=&{slidewidth}; left=0 top=0></layer>
</ilayer>

2 个答案:

答案 0 :(得分:0)

您要做的是以编程方式降低图像DOM对象的opacity属性以淡出,同时增加图像的不透明度以淡入。您启动图像淡入0不透明度并工作你的方式。

我找到了一个示例,根据您的代码风格使用没有jQUery或其他框架的直接JavaScript - 请参阅http://tech.pro/tutorial/725/javascript-tutorial-simple-fade-animation

答案 1 :(得分:0)

你能用jQuery吗?它们已经有fadeIn和fadeOut,您可以在其中设置各种属性,一个是以毫秒为单位的持续时间(以确定它将持续多长时间)。

http://api.jquery.com/fadeIn/

如果你必须使用普通JS,那么它会变得更复杂一些。您需要与旧版浏览器兼容吗?

最简单的方法是setInterval,然后将不透明度降低到0,但并非所有浏览器/版本都支持不透明度。