• 当前位置:首页>>Web Service>>Web Service>>Ajax设计模式之Lightbox
  • Ajax设计模式之Lightbox
  • Lightbox 这个词还真不好翻译,勉强硬解为"灯笼"。

    Lightbox的效果类似于WinXP操作系统的注销/关机对话框,除去屏幕中心位置的对话框,其他的区域都以淡出的效果逐渐变为银灰色以增加对比度,此时除了对话框内的表单控件,没有其他区域可以获取焦点。

    Lightbox的作用则相当于从前只在IE中被支持的"Modal Dialog";现在在FireFox也可用window.open(url, name, " modal=yes ");

    来实现同样的效果。使用"Modal Dialog"将限制用户的操作于弹出的对话框中,只有完成设定好的操作后方才关闭。在一些逻辑敏感的应用中强制吸引用户的注意力以防止用户的误操作导致程序逻辑淆乱。

    其实 Lightbox 并不新鲜,在前年Ajax未诞生之前,它是以 "Inline Popup"的名号出现的。诞生的原因是因为屏蔽弹出窗口的技术纷纷被浏览器采用,而浏览器厂商间也没有一个统一的 Popup 解决方案。当时我记得还有一些说"Inline Popup"破解了弹出窗口屏蔽的报道。

    "Inline Popup" 并不被很多人关注,不过我还是发现国内的163信箱去年改版推出的时候大量使用了此效果。Ajax 名正言顺之时,"Inline Popup"也重装再现了,并换了一个有美感的名字 "Lightbox"。

    在今年,Lightbox JS最早被其作者Lokesh Dhakar用来放大显示图片覆盖于当前页面之上,其是用CSS来定义图片容器,用一幅半透明的png图片实现渐变阴暗的效果。使用相当简单:

    1.加载lightbox.js

    2. 给图片链接增加一个rel="lightbox"属性。如:

    <a href="images/image-1.jpg"rel="lightbox"title="my caption">image #1</a>

    受 Lightbox 的启发,Chris Campbell 认为并决定让Lightbox Gone Wild!。他引入了Prototype1.4.0,配合CSS与HTML 标签的class属性重新实现Lightbox的效果,同时扩展LightBox原来的覆盖显示图片的单纯功能,使得可以通过流行的异步Updator技术动态加载表单。可以去体验一下他提供的 demo。不过似乎他的实现有一些bug,因为该demo在我的FireFox1.5和IE7beta2上都会导致CPU占用率100%。

    alwaysBETA 很快也推出了自己的改进方案。他没有增加新的功能,但是通过引入微型效果类库Moo.FX让Lightbox更漂亮,更容易定制。

    第一次使用WinXP的时候,关机时的阴暗渐变效果让我颇为惊艳。利用Lightbox引导用户的注意力完成预先设定的操作,良好的对比度效果营造温和的视觉氛围。相信在当前交互界面日益接近桌面的Web应用中,Lightbox 也将会成为Ajax的设计模式之一。

    此时我发现就其功能和效果而言,"Lightbox"翻译成"灯笼"似乎也没那么牵强附会了。



  • 上一篇:RIA延续HTML神话
    下一篇:AJAX开发中XMLHttpRequest有效性问题