寻找一种在一个页面上运行多个图像循环仪的方法
Looking for a way to run multiple image cyclers on one page.
我正在处理一个网页布局,该布局在网格中布置了多个图像。我希望其中几张图像在两到三张不同的图像中旋转,有些图像的速度与其他图像不同,每张图像之间的淡入淡出效果并不那么突然。我已经搜索了一个 javascript 程序,但我想出的所有程序似乎都不赞成同时在页面上更改 5 个单独的图像。我已经阅读了几个建议,您可以使用五个不同的名称运行相同的程序五次,但是在我尝试过的每个程序上都失败了(第一个工作正常,其余的只显示静态图像(。
我现在有一个解决方案,使所有五个图像旋转,但没有褪色并且同时旋转,所以它看起来像一个非常生涩的、突然的切换五个图像,而不是平滑的淡入淡出过渡这里和那里。此外,在它运行几个周期后,它似乎开始变得......卡住了?看起来闪烁而奇怪。
哦,由于网格布局,每个图像都绝对以特定的坐标定位,所以我需要一些不会引起问题的东西(即图像周围没有框架/边框等(。
我目前拥有的看起来像这样:
<script type="text/javascript">
var ready = 0;
var which = 1;
function isReady( ) {
++ready;
if ( ready == 2 ) {
ready = 0;
setTimeout("swap()",6000);
}
}
function swap( ) {
var i1 = document.getElementById("tst1");
var i2 = document.getElementById("tst2");
var i3 = document.getElementById("tst3");
var i4 = document.getElementById("tst4");
var i5 = document.getElementById("tst5");
var cur = which;
which = ( cur == 0 ) ? 1 : 0;
i1.src = i1.src.replace("-" + cur + ".jpg", "-" + which + ".jpg" );
i2.src = i2.src.replace("-" + cur + ".jpg", "-" + which + ".jpg" );
i3.src = i3.src.replace("-" + cur + ".jpg", "-" + which + ".jpg" );
i4.src = i4.src.replace("-" + cur + ".jpg", "-" + which + ".jpg" );
i5.src = i5.src.replace("-" + cur + ".jpg", "-" + which + ".jpg" );
}
</script>
使用此 HTML:
<!-- row a -->
<!-- top row image (140px x 140px) that rotates in square a2-->
<img id="tst1" class="a2" src="/wp-content/themes/silk/images/home-a2-0.jpg"
onload="isReady()"
alt="brushes"/>
<!-- static image (140px x 140px) in square a3 -->
<img id="estd" class="a3" src="/wp-content/themes/silk/img/2012-home.gif" alt="2012" />
<!-- top row large image (280px x 280px) that rotates in square a5 -->
<img id="tst2" class="a5" src="/wp-content/themes/silk/images/home-a5-0.jpg"
onload="isReady()"
alt="stations"/>
<!-- row b -->
<!-- static image (280px x 280px) in square b1-->
<div id="logo" class="b1"><h1>Silk the Salon</h1></div>
<!-- static image (140px x 140px) in square b4-->
<img id="b4" class="b4" src="/wp-content/themes/silk/images/home-b4-0.jpg" alt="backsplash" />
<!-- middle row image (140px x 140px) that rotates in square b7 -->
<img id="tst3" class="b7" src="/wp-content/themes/silk/images/home-b7-0.jpg"
onload="isReady()"
alt="floor"/>
<!-- row c -->
<!-- bottom row image (140px x 140px) that rotates in square c3 -->
<img id="tst4" class="c3" src="/wp-content/themes/silk/images/home-c3-0.jpg"
onload="isReady()"
alt="stations2"/>
<!-- bottom row image (140px x 140px) that rotates in square c3 -->
<img id="tst5" class="c6" src="/wp-content/themes/silk/images/home-c6-0.jpg"
onload="isReady()"
alt="counter"/>
任何人能给我的任何帮助将不胜感激!
你的代码不是很漂亮,可以在很多方面改进。我做了一个简单的jsFiddle示例来向您展示一两种方法:http://jsfiddle.net/pASkk/
一些评论:
-
不要使用全局变量,它会与其他代码发生冲突。我做了一个自执行的 around 函数来围绕所有代码创建一个闭包。这将保持整洁。
-
不要使用内联编码("onload"属性(将js代码与html分开。当然,CSS也是如此。实际上,在我的示例中,我发现加载是不必要的。所有代码都是在解析 dom 部分后执行的,因此在示例中就足够了。你想在你的页面底部(而不是在头部(加载你的javascript,所以通常这就足够了。如果你想绑定到onload(并且不使用任何库,如jQuery(,请参阅:http://www.quirksmode.org/js/events_advanced.html
使用 setInterval 进行重复交换(或者我在这里误解了你?(,不要使用字符串来调用带有 setInterval 或 setTimeout 的函数;而是使用匿名函数。
我为单个交换创建了一个单独的函数。我无法访问您的图像源,因此您需要处理此图像以达到您想要的方式。如果你想做一些更平滑的图像交换,我建议使用jQuery fadeIn(http://api.jquery.com/fadeIn/(或类似的东西。如果您无法使用该库,则可以检查他们的源代码以了解他们是如何制作的。
祝你好运
- 使用左右控制循环图像
- 循环图像动画
- JavaScript循环图像幻灯片
- JS循环图像文件夹,预加载它们并分配给数组
- 如何制作循环图像幻灯片
- 如何添加 if 语句以循环图像
- JavaScript / CSS 循环图像和内容库 - 我的脚本的第一个小部分不起作用
- 用于循环图像库
- Javascript编辑可自动循环图像
- 我想用jquery创建无限循环图像库
- 我如何在javascript中循环图像来做一些图像处理
- 如何使用jQuery通过数组循环图像来创建幻灯片
- 循环图像滑块与固定的表
- 循环图像上下移动与jquery
- 需要使用开始和停止按钮使用setInterval()循环图像.(仅使用javascript0
- 使用jquery循环图像
- 如何在javascript中使用提取元素循环图像
- 使用JQuery循环图像
- javascript函数调用不循环图像数组
- Javascript:循环图像