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

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

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

Sina首页 2014.11.13

Sohu首页 2014.11.13

Tab特点

  1. 每个页签由标题区和内容区组成
  2. 内容区和标题一一对应
  3. 至少有两组页签以便可以切换
  4. 所有页签只有两种状态:选中和未选中,页面载入后默认显示第一个
  5. 选中页签(当前页签)只有一个并突出高亮显示
  6. 鼠标点击或移上时切换

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

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

Tab的内容载入方式

通常有三种方式

  1. html片段: 这种方式最常见,tab内容在页面打开后就载入了,缺点是页面内容较多非第一帧内容也加载了导致页面打开较慢
  2. iframe请求: 很多广告采用这种方式,可以加快页面载入,缺点是切换后不能立即展示
  3. Ajax请求: 通过异步请求拼接tab内容,优缺点同iframe

Tab实现

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

  1. data-ui="u-tab" :Tab的外层包裹元素
  2. data-ui="tab-nav":Tab的所有标题元素
  3. data-ui="tab-content":Tab的所有内容元素
  4. data-ui="tab-arror":Tab切换时的动画元素
  5. data-iframe="http://xxx.jd.com/a.htm":内容为iframe的Tab元素

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

HTML结构如下

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

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

示例3:iframe tab

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

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。

相关:

http://blog.xiqiao.info/2009/07/03/409

http://www.smashingmagazine.com/2009/06/24/module-tabs-in-web-design-best-practices-and-solutions/

JavaScript选项卡/页签/Tab的实现的更多相关文章

  1. easyui 获取特定页签tab

    var findTab=$('#mytabs').tabs('getTab','财务信息').panel('options').tab; var findTabIndex = $('#tab').ta ...

  2. ASP.NET MVC搭建项目后台UI框架—4、tab多页签支持

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  3. 制作四个选项卡页 Tab,用户可以通过切换不同的 Tab 页查看不同类别的新闻信息,每个 Tab 有对应的内容版块,点击某个选项卡时,显示对应的内容版块,隐藏其他内容版块,并且为了突出当前的选项卡,还

    查看本章节 查看作业目录 需求说明: 制作四个选项卡页 Tab,用户可以通过切换不同的 Tab 页查看不同类别的新闻信息,每个 Tab 有对应的内容版块,点击某个选项卡时,显示对应的内容版块,隐藏其他 ...

  4. 使用原生js与jQuery分别实现一个简单的tab页签

    tab页签通常适用于空间有限而内容较多同时兼顾页面美观度不给用户一种信息过量视觉疲劳的情形.使用面非常广,下面我们用两种方法简单实现之. 首先,构建页面元素.页签的可点击部分我们通常用列表来承载,包括 ...

  5. Tab页签切换

    js之tab页签切换效果       现在web网站,很多地都需要用到tab页签. 示例:         $(document).ready(function(){               va ...

  6. EBS OAF开发中怎样实现功能页签(Global Tab)

    EBS OAF开发中怎样实现功能页签(Global Tab) (版权声明.本人原创或者翻译的文章如需转载.如转载用于个人学习,请注明出处.否则请与本人联系,违者必究) 功能页签的实现不须要不论什么编码 ...

  7. tab页签

    <div class="fl" id="newsBox"> <div class="tab1 grayBar"> & ...

  8. 用于实现tab页签切换页面的angular路由复用策略

    使用场景 打开菜单页面的时候,出现对应页面的页签.切换页签,原来的页面信息状态保留,关闭页签则保留的信息删除.使用路由复用策略,保存路由快照.实现效果如图所示 实现过程 概述: 1.在app.modu ...

  9. easyui页签更新

    1.首先引入这个js文件 <script src="/Scripts/tabs.js" type="text/javascript"></sc ...

随机推荐

  1. Android填坑系列:Android JSONObject 中对key-value为null的特殊处理

    在与服务端通过JSON格式进行交互过程中,不同版本的JSON库在对于key-value为null情况上的处理不同. Android自带的org.json对key-value都要求不能为null,对于必 ...

  2. HTTP错误大全 404 200 501 502 505

    HTTP错误 大全 403 401 400 404 304 200 HTTP 400 - 请求无效 HTTP 401.1 - 未授权:登录失败 HTTP 401.2 - 未授权:服务器配置问题导致登录 ...

  3. iOS安全笔记

    这一篇文章, 加上里面链接的几篇文章(一个百度的, 两个阮一峰的), 全看完应该了解得差不多了 如何打造一个安全的App?这是每一个移动开发者必须面对的问题.在移动App开发领域,开发工程师对于安全方 ...

  4. cssSlidy.js 响应式手机图片轮播

    cssSlidy是一款支持手机移动端的焦点图轮播插件,支持标题设置,滑动动画,间隔时间等. 在线实例 实例演示 使用方法 <div id="slidy-container"& ...

  5. 用Microsoft.Solver.Foundation进行线性规划,为WPF应用添加智能

    在管理信息系统的开发过程中,往往会涉及到一些线性规划数学模型,例如资源配置优化.微软的Microsoft.Solver.Foundation是一个数学库,可以很好的对线性规划问题进行求解.关于它的细节 ...

  6. Owl Carousel – 支持触摸的 jQuery 响应式传送带插件

    Owl Carousel 是一个 jQuery 插件,使我们能够迅速地创建响应式传送带滑块.这个插件是触摸友好的,能与几乎任何的 HTML 内容兼容使用.另外,强大的选项设置支持分页/滑动速度,启用/ ...

  7. JavaScript数组与对象的关系

    JavaScript的数组,相比其他语言,是比较特殊的.数组是Object类型,只不过,有几个比较特殊的地方: 有索引下标 有默认的length属性 是有序的(注意,对象是无序的) 可以使用一些特殊的 ...

  8. 百度的echart环形图颜色动态设置

    自己参与的有一个项目需要用到环行图,考虑到百度的echart功能很强大兼容性又挺好就使用了这个插件,但是在颜色配置的时候出现了问题按照参考文档的方法是用color:Array这样的形式,但是不知道在哪 ...

  9. UINavigationController和UIScrollView一起使用时导致UIScrollView位置偏移

    iOS7之后,当UIViewController成为UINavigationController的控制视图,UIViewController的控制视图上的第一个子视图是UIScrollView,UIS ...

  10. [Android]使用AdapterTypeRender对不同类型的item数据到UI的渲染

    以下内容为原创,转载请注明: 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3992843.html 本文讲的工具均放在AndroidBucket开源 ...