ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:164.20KB ,
资源ID:9487370      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9487370.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于jQuery类库的通用网页滑动门技术实现.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于jQuery类库的通用网页滑动门技术实现.docx

1、基于jQuery类库的通用网页滑动门技术实现基于jQuery类库的通用网页滑动门技术实现吴康瑞云南爱因森软件职业学院 (昆明,651701)Email:wukangrui摘要:本文介绍了作者在实际项目中逐步开发和完善出来的一种简单、通用的网页滑动门技术实现方法。相比互联网上已有的各种实现,本文所介绍的滑动门技术基于著名JavaScript类库jQuery实现,网页的结构、行为、样式分别由xhtml、JavaScript、CSS承担,彻底实现了三者的分离。论文采用渐进式重构的方法,在介绍滑动门技术实现的同时,对web标准化思想也进行了一定的阐述。关键词:web标准、jQuery、滑动门、网页设计

2、、CSS、JavaScript、XHTMLAbstract: This essay introduces a universal simple method to implement web-tabs technology, which was developed and improved during the progress of an real project. The new method is based on jQuery library and w3c web-standard.Keywords: web standard, jQuery, tabs, webpage desig

3、n, CSS, JavaScript, XHTML目录前言 2研究背景 3早期滑动门 4jQuery UI Tabs 5小巧、通用的jQuery Tabs 8效果演示 12总结 14参考文献 14前言网页上的空间是寸土寸金,虽然显示器的分辨率越来越大,但是直到今天,网页设计中仍然是以至少1024768 像素的支持为主,也就是说,每一屏页面只有区区 955600像素的安全尺寸可以用而已。于是,为了在有限的空间里容纳更多的内容,滑动门式的标签切换(Tabs)方式越来越受欢迎。通过滑动门技术,可以在同一块页面区域内放置数倍的内容。根据用户的选择来决定显示哪一部分。最近我在实际应用中,逐步完善出一种基

4、于jQuery类库,但是比 jQuery UI Tabs插件更小巧也更通用的简单 Tabs 实现。本文将结合web标准化思想和网页重构的方法,介绍这种小巧而通用的网页滑动门实现技术。本文中的部分内容已经以简单、通用的JQuery Tab实现为题发表到作者的个人博客以及“博客园”网站。互联网上有部分该文的转载。研究背景网页滑动门技术,是指当点击页面上的导航按钮后这个导航按钮的CSS特性发生变化,从而区别于该组的其他导航按钮,提示给操作者,当前浏览的内容就是这个CSS特性发生变化的按钮所指向的内容,该技术的最早起源已不可考证,但是这种网页设计技巧之所以为世界所知并广泛采用,则是由亚马逊网上书店在1

5、999-2000年率先使用的结果。如今已广泛应用于各类网站。其中尤其以内容丰富的门户网站和新闻网站为甚。滑动门技术的出现和广泛应用,是由于信息爆炸时代的网页内容日益丰富和网页尺寸限制造成的。它的主要任务就是为了让有限的网页空间能够容纳更多的信息内容。滑动门技术如今已经非常普及,有各种各样的实现方式。但无论是哪一种的实现,基本上都脱离不了由JavaScript控制CSS样式,从而造成网页样式随着用户的行为改变这个基本原理和思路。2008年,我所在公司的网站进行全面改版,改版的其中一项内容就是大量采用滑动门技术,以便网站首页能够容纳更多栏目的推荐内容。网页设计师很好地贯彻了这一理念,改版设计稿中的

6、每个网页都至少包含了5种以上的滑动门。在实现这些网页设计的过程中,我由改造原来的纯JavaScript滑动门开始,后来引入jQuery UI中的Tabs插件,最后不断精简代码和进行重构。得出了本文将要介绍的滑动门实现技术。早期滑动门最早的滑动门的技术,一般都是利用链接元素的 onclick 或者 onmouseover 事件,传递一个表示当前正与用户交互的链接元素的参数给 JS 函数,JS函数根据传递的参数来决定改变哪一个滑动门标签,显示哪一个滑动门内容。比如:function showTabs(n) var tabsNumber = 3; for (i = 0; i tabsNumber;

7、i+) if (i = n) document.getElementById(tabPanel- + i).style.display = block; else document.getElementById(tabPanel- + i).style.display = none; 代码1假如网页中有这样的一个函数,就可以在滑动门标签的链接按钮中设置 onclick = “showTabs(1)”来设置第二块内容显示,而其它块隐藏。这种方式最大的缺点是:1. HTML代码和JS代码混合,例如(文字);2. 可扩展性差;每次增加滑动门标签,都要改动代码,放到别的网页中,还需要修改代码和网页内容

8、。尽管可以通过window.onload绑定事件等方式来实现JS代码从HTML中分离,也可以把函数改得更复杂以实现通用性。但是总的来说,还是很难做到一处定义到处引用。jQuery UI Tabs后来随着各种JS类库的出现,更强大的Tabs出现了,最出名的就是jQuery UI中的tabs插件。一旦加载了jQuery框架和jQuery UI插件,那么要在页面中实现Tabs,就变得简单了许多。首先我们的页面中的Tabs代码这样写: 标签A 标签B 区域A 区域B代码2注意:这里的代码非常干净,不含任何的JS代码或者与文档结构无关的定义。然后,在head区域,或者在页面任何地方增加一段JS代码:$(

9、function() $(.tabs).tabs(););代码3就实现了Tabs功能,这行JS代码执行后,代码2里的HTML代码就会变成: 标签A 标签B 区域A 区域B 代码4结合我们自己编写的CSS,或者jQuery UI 自带的CSS,就可以实现滑动门效果。并且,由于jQuery的强大,我们可以在页面中放置多组滑动门,然后一次性设定。要说明的是,这个地方由于只启用了jQuery UI 中的 Tabs 插件,因此生成的代码还是比较干净的,只增加了 ui-tabs-xxxx 这几个相关的CSS类。如果你同时包含了jQuery UI的其它插件,那么即使不启用,也会添加一堆的CSS定义。而且,j

10、Query UI Tabs 还提供了非常强大的控制功能,你可以动态地添加 tab,可以随意更改激活事件,可以定义切换效果,还可以设置默认激活状态和禁用等。这种滑动门的优点在于:1、 原始XHTML简洁明了;2、 文档结构清晰;3、 符合web标准。但是我在实际应用中遇到了一些问题,除了 jQuery UI 自带的JS脚本很大,CSS不符合实际应用需求外,还有一个最大的问题,你可能已经注意到了,在作为导航的标签定义中,标签和目标区域的对应是用链接目标来定义的。比如 标签A和区域A对应,如果你的标签和区域没有对应起来,绑定tabs()就不起作用了。而且,这种方式来带来另一个麻烦,就是当我们需要给标

11、签加上链接的时候,没办法加。即使你将标签的激活事件设置为onmouseover而不是onclick,链接也不能实现,因为链接用于指定目标了。这种需求在我们的实际应用中并不是不存在的。比如:图1图2这两个图片中的tabs标签,都要添加到对应的新闻类别或者论坛板块的链接。这时候 jQuery UI的默认绑定就带来了麻烦。所以这种滑动门的缺点是:1、 JS代码和XHTML代码的耦合度依然很高在JS中必须指定滑动门的容器元素;而在XHTML代码中必须设置指向内容元素ID的链接目标。2、 滑动门标签的链接必须指定目标内容元素的ID,导致滑动门标签不能含有链接。3、 标签和内容紧密联系,改动其中一项必然影

12、响另一项。4、 页头必须包含jQuery UI的类库JS引用,该文件尺寸很大,将造成网页打开速度的下降,占用更多带宽。仅仅为了一个Tabs而引用整个UI类库,非常浪费。小巧、通用的jQuery Tabs其实分析一下,我们在实现滑动门的时候,用以下HTML结构就可以满足需要: 标签A 标签B 区域A 区域B代码6借助 jQuery 库,我们可以通过 $(“.tabs”)找到要实现的标签,然后 .find(“li”) 来找到要添加事件的元素,绑定事件的时候,我们可以通过该元素在$(“.tabs li”)集合中的索引值来明确是哪一个标签被激活,然后对应索引值的panel显示。代码类似这样: $(fu

13、nction () $(.tabs).find(li).mouseover(function(e) if (e.target = this) var tabs = $(this).parent().children(li); var panels = $(this).parent().parent().children(div); var index = $.inArray(this, tabs); if (panels.eq(index)0) tabs.removeClass(ui-tabs-selected) .eq(index).addClass(ui-tabs-selected); p

14、anels.addClass(ui-tabs-hide) .eq(index).removeClass(ui-tabs-hide); ); );代码7这段代码只使用了两个CSS类来处理,并且,自动判断tabs(标签)和panels(内容面板)的对应状态,假如你有4个标签,但是只有前三个启用了,那么你只需要写三个panel就可以,第四个panel不存在,则第四个tab自动不生效。在实际使用中,会遇到一个问题,一般我们会给tab中的文字加链接,那么当鼠标滑过这个tab的时候,如果指到了文字,那么激发事件的对象有可能是a元素而不是li元素,则事件就不能正确激发。所以我们改进代码如下: $(funct

15、ion() $(.ui-tabs-nav li a).mouseover(function(e) if (e.target = this) var tabs = $(this).parent().parent().children(li); var panels = $(this).parent().parent().parent().children(.ui-tabs-panel); var index = $.inArray(this, tabs); if (panels.eq(index)0) tabs.removeClass(ui-tabs-selected) .eq(index).a

16、ddClass(ui-tabs-selected); panels.addClass(ui-tabs-hide) .eq(index).removeClass(ui-tabs-hide); ); );代码8注意重构前后的代码,功能上是完全一样的,但是把事件由li元素移到了a元素。与此对应的HTML结构是: 论坛新帖 最新博文 代码9在上面的代码中,我们使用了一些CSS类,但是这些类跟我们的滑动门在事实上是不相互依赖的,也就是说,只要具备ui-tabs-nav,就会自动实现滑动门功能,其它的CSS样式只是为了实现滑动门和内容的具体显示。我们有以下的CSS类定义:.ui-tabs-nav /*导航

17、容器定义*/.ui-tabs-nav li /*默认标签样式*/.ui-tabs-nav li.ui-tabs-selected /*激活的标签样式*/.ui-tabs-panel /*默认的显示区域样式*/.ui-tabs-hide display: none;代码10这样,就可以根据你的需要,结合自己的CSS,定制不同样式的滑动门了。把相应的JS代码放到页面中,那么在页面里任何地方只要你按照HTML结构编写了一段html,这段html就会自动变成滑动门。而不用在每个页面里单独指定特定的selector来应用滑动门的tabs()方法。并且,根据需要给你的滑动门标签添加需要的链接,或者不要链接

18、(href=”#” 或者 href=”javascript: void(0)”)。这种实现的优点是:1. 代码短小精干,除了jQuery core以外,不依赖其它组件,对网页打开速度和带宽占用降到了最低。2. 非常通用,只要把代码8里的JS嵌入页面或者放置到单独的JS文件中,并在页面中引入,就能全自动检查页面上所有的.ui-tabs-nav元素,并把找到的结构转化为滑动门。3. 只要编写符合web标准的XHTML,指定一个.ui-tabs-nav即可实现,没有任何其它限制和要求。效果演示在我前文所提到的那次改版中,光网站首页一个页面上,就应用了5个不同样式共10组滑动门,而代码则整个网站共享一

19、份代码8。这里列举四个不同样式的滑动门效果截图:图3 - 滑动门一(多个搜索表单,暂时只实现两个,后面三个由于没有对应的ui-tabs-panel,自动禁用,但是链接可以点击。)图4 - 滑动门二(多块商务信息区域,其中第三个由于没有对应的ui-tabs-panel,自动禁用。)图5 - 滑动门三:新闻栏目切换,标签中的文字链接到对应的新闻栏目。图6 - 滑动门四:论坛分板块帖子调用。标签中的文字链接到对应的论坛板块。总结通过本文所介绍的滑动门技术开发可以发现,大型的、功能强大的框架并不总是适应我们的实际需求。几乎所有的通用框架,为了实现复杂的功能和通用型,都会包含大量代码和设置,而这些东西中

20、我们真正需要和用到的可能只有其中一点点。本文同时也从一个侧面说明了web标准化的网页并不缺乏表现力,恰恰相反的是,越是标准化的页面,越能够充分利用代码复用、结构行为表现分离的优势,以更少的代码实现更复杂的功能。参考文献1. Zakas, N.C.: Professional JavaScript for Web DevelopmentM, Wiley Publishing, Inc. 2006-11;2. Flanagan, D.: JavaScript: The Definitive GuideM, OReilly & Associates, Inc. 2003-113. Meyer E.A.: Cascading Style Sheets: The Definitive GuideM, OReilly & Associates, Inc. 2007-10-1

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1