网络编程
位置:首页>> 网络编程>> JavaScript>> JavaScript创建可维护幻灯片效果(2)

JavaScript创建可维护幻灯片效果(2)

作者:blank 来源:蓝色理想 发布时间:2008-06-21 16:42:00 

标签:javascript,幻灯片,效果

第二步:规划脚本(Planning the Script)

一旦你已经评估了问题,并挑选出你想使用的解决方法,你便可以开始规划脚本。本质上,我们的脚本应该做这些:

  • 检查幻灯片列表是否存在,并且包含一些图片(有理由为一张图片创建一个幻灯片效果吗?)。

  • 隐藏所有的照片,但不是第一个。

  • 创建向前和向后的链接,和一个显示我们在哪的指示器。

  • 添加事件处理程序,使链接增加或减少当前显示的图片编号。

  • 确保幻灯片效果没有超出范围,当图片编号小于 0 ,他应该变为最后一张图片,反过来类似。

不同的功能处理

我们有一些方法处理这个问题。其中之一是使用 DOM 遍历每个 LI 条目并隐藏他。在这个事件监听函数,我们先隐藏先前显示的 LI (如果有的话),并显示当前的这个。

:显示和隐藏代替图片的 LI 更有意义,因为他允许维护者在每个幻灯片上添加其他的元素,比如,一些标题。

这个方法的问题在于,我们在 JavaScript 中做必要的样式改变,这意味着如果有需要比刚才我们脚本中改变 display 从 block 到 none 更复杂的样式改变,将使脚本变得更杂乱(没有从行为中分离表现)。

样式留给 CSS 解析器

更简洁的方法是将所有的外观改变(在所有列表项下载完之后隐藏某些)都留给浏览器的 CSS 解析器。在我们的例子中,我们可以在幻灯片中使用一个 CSS 规则很容易地隐藏所有的列表项,并用一个特定的 class 重写当前条目的样式。

HTML:

<ul id="slideshow">
    <li><img src="img/flat1.jpg" alt="Hallway" /></li>
    <li><img src="img/flat2.jpg" alt="Hob" /></li>
    <li><img src="img/flat3.jpg" alt="Bathroom" /></li>
    <li><img src="img/flat4.jpg" alt="Living Room" /></li>
    <li><img src="img/flat5.jpg" alt="Bedroom" /></li>
</ul>

CSS:

#slideshow li{
    display:none;
}
#slideshow li.current{
    display:block;
}

唯一的问题是,如果我们使 CSS 和 JavaScript 不可用,访客将永远不能访问到其他图片。因此,我们需要仅当 JavaScript 可用时,应用这些样式。技巧是,当 JavaScript 可用,在幻灯片的 UL 上应用 class ,例如名为 js 。这允许我们仅当 JavaScript 可用时,显示效果,通过在 CSS 中简单的修改:

CSS:

#slideshow.js li{
    display:none;
}
#slideshow.js li.current{
    display:block;
}

这个 class 的钩子(hook)也能被用来对幻灯片的静态和动态版本提供一个完全不同的外观。

我们所有的脚本需要做的是,通过移除或添加 current 的 class 来显示和隐藏当前及以前的照片。

为了确保我们的脚本将不会影响同一页面上的其他脚本,我们将创建一个主要的对象,并在其上构造所有的方法和属性。这可以确保我们的 init() 函数将不会被覆盖或覆盖其他任何相同名字的函数。

JavaScript::

slideshow = {
    current:0, // 当前幻灯片编码
    init:function(){
        // 初始化和设置事件处理函数
    },
    show:function(e){
        // 事件 *
    }
}

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com