您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 基于jQuery类库的通用网页滑动门技术实现
基于jQuery类库的通用网页滑动门技术实现吴康瑞云南爱因森软件职业学院(昆明,651701)Email:wukangrui@yahoo.cn摘要:本文介绍了作者在实际项目中逐步开发和完善出来的一种简单、通用的网页滑动门技术实现方法。相比互联网上已有的各种实现,本文所介绍的滑动门技术基于著名JavaScript类库——jQuery实现,网页的结构、行为、样式分别由xhtml、JavaScript、CSS承担,彻底实现了三者的分离。论文采用渐进式重构的方法,在介绍滑动门技术实现的同时,对web标准化思想也进行了一定的阐述。关键词:web标准、jQuery、滑动门、网页设计、CSS、JavaScript、XHTMLAbstract:Thisessayintroducesauniversalsimplemethodtoimplementweb-tabstechnology,whichwasdevelopedandimprovedduringtheprogressofanrealproject.ThenewmethodisbasedonjQuerylibraryandw3cweb-standard.Keywords:webstandard,jQuery,tabs,webpagedesign,CSS,JavaScript,XHTML目录前言...................................................................................................................................................2研究背景...........................................................................................................................................3早期滑动门.......................................................................................................................................4JQUERYUITABS.................................................................................................................................5小巧、通用的JQUERYTABS..............................................................................................................8效果演示.........................................................................................................................................12总结.................................................................................................................................................14参考文献.........................................................................................................................................14前言网页上的空间是寸土寸金,虽然显示器的分辨率越来越大,但是直到今天,网页设计中仍然是以至少1024×768像素的支持为主,也就是说,每一屏页面只有区区955×600像素的安全尺寸可以用而已。于是,为了在有限的空间里容纳更多的内容,滑动门式的标签切换(Tabs)方式越来越受欢迎。通过滑动门技术,可以在同一块页面区域内放置数倍的内容。根据用户的选择来决定显示哪一部分。最近我在实际应用中,逐步完善出一种基于jQuery①类库,但是比jQueryUITabs②插件更小巧也更通用的简单Tabs实现。本文将结合web标准化思想和网页重构的方法,介绍这种小巧而通用的网页滑动门实现技术。本文中的部分内容已经以《简单、通用的JQueryTab实现》为题发表到作者的个人博客③以及“博客园”网站④。互联网上有部分该文的转载。①②③④研究背景网页滑动门技术,是指当点击页面上的导航按钮后这个导航按钮的CSS特性发生变化,从而区别于该组的其他导航按钮,提示给操作者,当前浏览的内容就是这个CSS特性发生变化的按钮所指向的内容,该技术的最早起源已不可考证,但是这种网页设计技巧之所以为世界所知并广泛采用,则是由亚马逊网上书店在1999-2000年率先使用的结果。如今已广泛应用于各类网站。其中尤其以内容丰富的门户网站和新闻网站为甚。滑动门技术的出现和广泛应用,是由于信息爆炸时代的网页内容日益丰富和网页尺寸限制造成的。它的主要任务就是为了让有限的网页空间能够容纳更多的信息内容。滑动门技术如今已经非常普及,有各种各样的实现方式。但无论是哪一种的实现,基本上都脱离不了由JavaScript控制CSS样式,从而造成网页样式随着用户的行为改变这个基本原理和思路。2008年,我所在公司的网站进行全面改版,改版的其中一项内容就是大量采用滑动门技术,以便网站首页能够容纳更多栏目的推荐内容。网页设计师很好地贯彻了这一理念,改版设计稿中的每个网页都至少包含了5种以上的滑动门。在实现这些网页设计的过程中,我由改造原来的纯JavaScript滑动门开始,后来引入jQueryUI中的Tabs插件,最后不断精简代码和进行重构。得出了本文将要介绍的滑动门实现技术。早期滑动门最早的滑动门的技术,一般都是利用链接元素的onclick或者onmouseover事件,传递一个表示当前正与用户交互的链接元素的参数给JS函数,JS函数根据传递的参数来决定改变哪一个滑动门标签,显示哪一个滑动门内容。比如:假如网页中有这样的一个函数,就可以在滑动门标签的链接按钮中设置onclick=“showTabs(1)”来设置第二块内容显示,而其它块隐藏。这种方式最大的缺点是:1.HTML代码和JS代码混合,例如(ahref=#onclick=showTabs(1)文字/a);2.可扩展性差;每次增加滑动门标签,都要改动代码,放到别的网页中,还需要修改代码和网页内容。尽管可以通过window.onload绑定事件等方式来实现JS代码从HTML中分离,也可以把函数改得更复杂以实现通用性。但是总的来说,还是很难做到一处定义到处引用。functionshowTabs(n){vartabsNumber=3;for(i=0;itabsNumber;i++){if(i==n){document.getElementById(tabPanel-+i).style.display=block;}else{document.getElementById(tabPanel-+i).style.display=none;}}}代码1jQueryUITabs后来随着各种JS类库的出现,更强大的Tabs出现了,最出名的就是jQueryUI中的tabs插件。一旦加载了jQuery框架和jQueryUI插件,那么要在页面中实现Tabs,就变得简单了许多。首先我们的页面中的Tabs代码这样写:注意:这里的代码非常干净,不含任何的JS代码或者与文档结构无关的定义。然后,在head区域,或者在页面任何地方增加一段JS代码:就实现了Tabs功能,这行JS代码执行后,代码2里的HTML代码就会变成⑤:⑤作者注:这部分代码只能通过网页开发工具查看到,属于运行时网页源代码。divclass=tabsulliahref=#panel-1标签A/a/liliahref=#panel-2标签B/a/li/uldivid=panel-1区域A/divdivid=panel-2区域B/div/div代码2$(function(){$(.tabs).tabs();});代码3结合我们自己编写的CSS,或者jQueryUI自带的CSS,就可以实现滑动门效果。并且,由于jQuery的强大,我们可以在页面中放置多组滑动门,然后一次性设定。要说明的是,这个地方由于只启用了jQueryUI中的Tabs插件,因此生成的代码还是比较干净的,只增加了ui-tabs-xxxx这几个相关的CSS类。如果你同时包含了jQueryUI的其它插件,那么即使不启用,也会添加一堆的CSS定义。而且,jQueryUITabs还提供了非常强大的控制功能,你可以动态地添加tab,可以随意更改激活事件,可以定义切换效果,还可以设置默认激活状态和禁用等。这种滑动门的优点在于:1、原始XHTML简洁明了;2、文档结构清晰;3、符合web标准。但是我在实际应用中遇到了一些问题,除了jQueryUI自带的JS脚本很大,CSS不符合实际应用需求外,还有一个最大的问题,你可能已经注意到了,在作为导航的标签定义中,标签和目标区域的对应是用链接目标来定义的。比如ahref=#panel-1标签A/a和divid=panel-1区域A/div对应,如果你的标签和区域没有对应起来,绑定tabs()就不起作用了。而且,这种方式来带来另一个麻烦,就是当我们需要给标签加上链接的时候,没办法加。即使你将标签的激活事件设置为onmouseover而不是onclick,链接divclass=tabsulclass=ui-tabs-navjquery1239647486215=2liclass=ui-tabs-selectedahref=#panel-1jquery1239647486215=8标签A/a/liliahref=#panel-2jquery1239647486215=9标签B/a/li/uldivid=panel-1class=ui-tabs-paneljquery1239647486215=4区域A/divdivid=panel-2class=ui-tabs-panelui-tabs-hidejquery1239647486215=5区域B/div/div代码4也不能实现,因为链接用于指定目标了。这种需求在我们的实际应用中并不是不存在的。比如:图1图2这两个图片中的tabs标签,都要添加到对应的新闻类别或者论坛板块的链接。这时候jQueryUI的默认绑定就带来了麻烦。所以这种滑动门的缺点是:1、JS代码和XHTML代码的耦合度依然很高——在JS中必须指定滑动门的容器元素;而在XHTML代码中必须设置指向内容元素ID的链接目标。2、滑动门标签的链接必须指定目标内容元素的
本文标题:基于jQuery类库的通用网页滑动门技术实现
链接地址:https://www.777doc.com/doc-2570234 .html