java tab页签链接页面_JavaScript选项卡/页签/Tab的实现

选项卡,也称页签,英文用Tab(Module-Tabs)表示。Tab将不同的内容重叠放在一个布局块内,重叠的内容区里每次只有其中一个是可见的。

Tab可以在相同的空间里展示更多的信息,它把相似的主题分为一类,用户更好理解。Tab的应用可以缩短页面屏长,降低信息的显示密度,同时又不牺牲信息量。在这种趋势下,Tab这种交互元素成为了一个越来越普遍的应用。

Web里Tab可能最早2005年是amazon.com的首页引入的,如今各大门户,电商及各色网站的首页都采用了Tab表现形式。当前Sina和网易首页使用的Tab不下10处,在门户主要靠广告收入的情景下,首页的位置尺寸是寸土寸金啊。

Sina首页 2014.11.13

f17d1b968ebf6ac875318cc68589b27b.png

Sohu首页 2014.11.13

5ebea2c943bcee878b86f9a2f2f0551d.png

Tab特点

每个页签由标题区和内容区组成

内容区和标题一一对应

至少有两组页签以便可以切换

所有页签只有两种状态:选中和未选中,页面载入后默认显示第一个

选中页签(当前页签)只有一个并突出高亮显示

鼠标点击或移上时切换

标准的Tab标题设计时放在顶部,也有很多放在左侧的

feee9c6a9497531ed67c1e4cde57505e.png

放在底部和右侧的标题较为少见,这不符合人的阅读习惯。

Tab的内容载入方式

通常有三种方式

html片段: 这种方式最常见,tab内容在页面打开后就载入了,缺点是页面内容较多非第一帧内容也加载了导致页面打开较慢

iframe请求: 很多广告采用这种方式,可以加快页面载入,缺点是切换后不能立即展示

Ajax请求: 通过异步请求拼接tab内容,优缺点同iframe

Tab实现

Tab的实现简单,只要HTML结构合理,JS给标题添加click或mouseover事件然后切换显示。这里采用HTML属性配置的方式,主要通过3-5个属性实现。

data-ui="u-tab" :Tab的外层包裹元素

data-ui="tab-nav":Tab的所有标题元素

data-ui="tab-content":Tab的所有内容元素

data-ui="tab-arror":Tab切换时的动画元素

data-iframe="http://xxx.jd.com/a.htm":内容为iframe的Tab元素

示例1:最简单的Tab只要添加前三个属性

8615f3c3e3debce3251a5445c08c4292.png

HTML结构如下

3e79613db2f43334b7d2b404222be4de.png

示例2:切换时当标题横线带有动画效果

5f769b49b37e653150aee885a6e1a7da.png

类似设计在京东首页楼层Tab也有应用。和示例一对比只多了一个data-ui="tab-arror"。如下

80fee3c20661cf3f13580e7ba4636db9.png

示例3:iframe tab

233751a227d325bede1ed6798bdbd3f8.png

这是京东首页右侧的“各类充值”,在标题元素上添加一个data-iframe属性

bd03a7de741fe957f1e33061b05b80a6.png

Tab API

使用jQuery插件方式实现,配置参数如下

/**

* 页签组件

* $(x).tab({

* auto: // @boolean 是否自动切换,默认false

* evtType: // @string 默认mouseover,鼠标移动到上面时切换,可选click

* currCls: // @string 默认curr

* nav: // @string tab的css属性选择器的key,默认为 tab-nav

* content: // @string tab content的css属性选择器的key,默认为 tab-content

* arrow: // @string tab-arrow 切换时动态移动效果

* stay: // @number 自动切换的时间间隔

* defIndex: // @number 默认显示的tab,

* isFade: // @boolean 默认false

* })

*/

当通过HTML属性方式配置不能满足需求时,可直接调用。此外添加了“change”事件,每当tab切换时会触发。

$elem.tab({

evtType: evtType,

currCls: currCls,

auto: auto,

stay: stay,

nav: nav,

content: con,

defIndex: cur

})

// Tab change event

$elem.bind('change', function(ev, idx, $nav, $content) {

// todo

})

有了事件机制,可以轻松实现Ajax Tab,当切换时添加change事件,事件handler内部去执行Ajax请求,更新tab content。

相关:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值