`

移动端安卓和IOS开发框架Framework7教程-标签页(Tabs)

阅读更多

标签用于控制不同内容区的切换显示。

Tabs标签布局

我们来看一下标签页的布局

  1. <!-- Tabs容器, 需要带有"tabs"类。必需元素 -->
  2. <div class="tabs">
  3.   <!-- 第一个tab, 需要带有"tab"类和唯一的id -->
  4.   <!-- 第一个tab默认是激活显示状态,通过添加"active"类实现 -->
  5.   <div class="tab active" id="tab1">
  6.     ... Tab 1 内容 ...
  7.   </div>
  8.   <!-- 第二个tab, 需要带有"tab"类和唯一的id -->
  9.   <div class="tab" id="tab2">
  10.     ... Tab 2 内容
  11.   </div>
  12.   <!-- 第三个tab, 需要带有"tab"类和唯一的id -->
  13.   <div class="tab" id="tab3">
  14.     ... Tab 3 内容 ...
  15.   </div>
  16. </div>
复制

其中:

  • div class="tabs" - 所有标签页的容器,没有它标签页组件将无法工作
  • div class="tab" - 单独的标签页,需要有唯一的id
  • div class="tab active" - 激活的标签页,即默认显示的tab,需要"active"类

各标签页间切换

完成标签组件HTML布局后,我们需要控件,以便用户可以在各标签间切换。

我们需要创建链接(<a>标签),它拥有名为"tab-link"的类,并且href属性值和目标标签页的id相同:

  1. <!-- 关联到第一个标签, 需要设置和第一个标签id名相同的href属性(tab1) -->
  2. <a href="#tab1" class="tab-link active">Tab 1</a>
  3. <!-- 关联到第二个标签, 需要设置和第二个标签id名相同的href属性(tab2) -->
  4. <a href="#tab2" class="tab-link">Tab 2</a>
  5. <!-- 关联到第三个标签, 需要设置和第三个标签id名相同的href属性(tab3) -->
  6. <a href="#tab3" class="tab-link">Tab 3</a>
复制

如你所见,第一个标签还有"active"类。它不是必需的,但如果所有这些链接在相同的DOM树层级,内部脚本也会将“active”类添加到处于激活态的标签页上。当你的“active”链接有不同的视觉样式时(比如Buttons Row / Segmented Control或者是标签栏中的链接),这会很有用。

切换多标签

上文描述的表示方法通过ID指定我们要切换到的标签。但有时我们想要用一个标签链接来切换多个标签页,这时我们可以用class代替id。标签面板里的a元素使用“data-tab”属性指向需要切换显示内容区的类(一般对应多块div)。比如:

  1. <!-- 顶部 Tabs -->
  2. <div class="tabs tabs-top">
  3.   <div class="tab tab1 active">...</div>
  4.   <div class="tab tab2">...</div>
  5.   <div class="tab tab3">...</div>
  6. </div>
  7. <!-- 底部 Tabs -->
  8. <div class="tabs tabs-bottom">
  9.   <div class="tab tab1 active">...</div>
  10.   <div class="tab tab2">...</div>
  11.   <div class="tab tab3">...</div>
  12. </div>
  13. <!-- Tabs 控制面板 -->
  14. <div class="tab-links">
  15.   <!-- 将同时切换标签内容区到 .tab1 区块-->
  16.   <a href="#" class="tab-link" data-tab=".tab1">Tab 1</a>
  17.   <!-- 将同时切换标签内容区到 .tab2 区块-->
  18.   <a href="#" class="tab-link" data-tab=".tab2">Tab 2</a>
  19.   <!-- 将同时切换标签内容区到 .tab3 区块-->
  20.   <a href="#" class="tab-link" data-tab=".tab3">Tab 3</a>
  21. </div>
复制

其中,data-tab属性是包括tab/tabs的CSS选择器的字符串。

内联标签页示例

  1. <div class="page-content">
  2.   <div class="content-block">
  3.     <!-- tabs控制面板 -->
  4.     <div class="buttons-row">
  5.       <!-- 关联到第一个tab, 默认激活 -->
  6.       <a href="#tab1" class="tab-link active button">Tab 1</a>
  7.       <!-- 关联到第二个tab -->
  8.       <a href="#tab2" class="tab-link button">Tab 2</a>
  9.       <!-- 关联到第三个tab -->
  10.       <a href="#tab3" class="tab-link button">Tab 3</a>
  11.     </div>
  12.   </div>
  13.   <!-- Tabs, 标签内容区容器 -->
  14.   <div class="tabs">
  15.     <!-- Tab 1, 默认激活 -->
  16.     <div id="tab1" class="tab active">
  17.       <div class="content-block">
  18.         <p>This is tab 1 content</p>
  19.         ...
  20.       </div>
  21.     </div>
  22.     <!-- Tab 2 -->
  23.     <div id="tab2" class="tab">
  24.       <div class="content-block">
  25.         <p>This is tab 2 content</p>
  26.         ...
  27.       </div>
  28.     </div>
  29.     <!-- Tab 3 -->
  30.     <div id="tab3" class="tab">
  31.       <div class="content-block">
  32.         <p>This is tab 3 content</p>
  33.         ...
  34.       </div>
  35.     </div>
  36.   </div>
  37. </div>
复制

  实例预览

导航条标签页示例

  1. <div class="navbar">
  2.   <div class="navbar-inner">
  3.     <div class="center">
  4.       <!-- 导航栏中的按键排控制器 -->
  5.       <div class="buttons-row">
  6.         <!-- 关联到第一个tab的链接,默认激活 -->
  7.         <a href="#tab1" class="tab-link active button">Tab 1</a>
  8.         <!-- 关联到第二个tab的链接 -->
  9.         <a href="#tab2" class="tab-link button">Tab 2</a>
  10.         <!-- 关联到第三个tab的链接 -->
  11.         <a href="#tab3" class="tab-link button">Tab 3</a>
  12.       </div>
  13.     </div>
  14.   </div>
  15. </div>
  16. <div class="pages">
  17.   <div class="page">
  18.     <!-- Tabs, tabs容器, page-content为tabs -->
  19.     <div class="page-content tabs">
  20.       <!-- Tab 1,默认激活 -->
  21.       <div id="tab1" class="tab active">
  22.         <div class="content-block">
  23.           <p>This is tab 1 content</p>
  24.           ...
  25.         </div>
  26.       </div>
  27.       <!-- Tab 2 -->
  28.       <div id="tab2" class="tab">
  29.         <div class="content-block">
  30.           <p>This is tab 2 content</p>
  31.           ...
  32.         </div>
  33.       </div>
  34.       <!-- Tab 3 -->
  35.       <div id="tab3" class="tab">
  36.         <div class="content-block">
  37.           <p>This is tab 3 content</p>
  38.           ...
  39.         </div>
  40.       </div>
  41.     </div>
  42.   </div>
  43. </div>
复制

  实例预览

通过标签栏切换视图的例子:

为何Tab不能是一个独立的视图,具有导航和布局?不,它可以!你可以通过tabs切换视图:

  1. <!-- Tabs, 现在容器是"views" -->
  2. <div class="views tabs toolbar-fixed">
  3.   <!-- Tab 1 同时也是 View 1, 默认激活 -->
  4.   <div id="tab1" class="view tab active">
  5.     <div class="navbar">
  6.       <div class="navbar-inner">
  7.         <div class="center">View 1</div>
  8.       </div>
  9.     </div>
  10.     <div class="pages navbar-fixed">
  11.       <div data-page="home-1" class="page">
  12.         <div class="page-content">
  13.           <div class="content-block">
  14.             <p>This is view 1</p>
  15.           </div>
  16.         </div>
  17.       </div>
  18.     </div>
  19.   </div>
  20.   <!-- Tab 2 - View 2 -->
  21.   <div id="tab2" class="view tab">
  22.     <div class="navbar">
  23.       <div class="navbar-inner">
  24.         <div class="center">View 2</div>
  25.       </div>
  26.     </div>
  27.     <div class="pages navbar-fixed">
  28.       <div data-page="home-2" class="page">
  29.         <div class="page-content">
  30.           <div class="content-block">
  31.             <p>This is view 2</p>
  32.           </div>
  33.         </div>
  34.       </div>
  35.     </div>
  36.   </div>
  37.   <!-- Tab 3 - View 3 -->
  38.   <div id="tab3" class="view tab">
  39.     <div class="navbar">
  40.       <div class="navbar-inner">
  41.         <div class="center">View 3</div>
  42.       </div>
  43.     </div>
  44.     <div class="pages navbar-fixed">
  45.       <div data-page="home-3" class="page">
  46.         <div class="page-content">
  47.           <div class="content-block">
  48.             <p>This is view 3</p>
  49.           </div>
  50.         </div>
  51.       </div>
  52.     </div>
  53.   </div>
  54.   <!-- 带有链接的标签栏 -->
  55.   <div class="toolbar tabbar">
  56.     <div class="toolbar-inner">
  57.       <a href="#tab1" class="tab-link active"><i class="icon demo-icon-1"></i></a>
  58.       <a href="#tab2" class="tab-link"><i class="icon demo-icon-2"></i></a>
  59.       <a href="#tab3" class="tab-link"><i class="icon demo-icon-3"></i></a>
  60.     </div>
  61.   </div>
  62. </div>
复制

  实例预览

动画过渡的标签页

我们也可以对标签页切换加上简单的动画过渡,只需要在div class="tabs"外面加上额外的div class="tabs-animated-wrap"容器:

  1. <div class="navbar">
  2.   <div class="navbar-inner">
  3.     <div class="center">
  4.       <!-- 导航栏中的按键排控制器 -->
  5.       <div class="buttons-row">
  6.         <!-- 关联到第一个tab的链接,默认激活 -->
  7.         <a href="#tab1" class="tab-link active button">Tab 1</a>
  8.         <!-- 关联到第二个tab的链接 -->
  9.         <a href="#tab2" class="tab-link button">Tab 2</a>
  10.         <!-- 关联到第三个tab的链接 -->
  11.         <a href="#tab3" class="tab-link button">Tab 3</a>
  12.       </div>
  13.     </div>
  14.   </div>
  15. </div>
  16. <div class="pages">
  17.   <div class="page">
  18.     <div class="page-content">
  19.       <!-- Tabs动画容器, 在动画过渡时需要 -->
  20.       <div class="tabs-animated-wrap">
  21.         <!-- Tabs, tabs容器 -->
  22.         <div class="tabs">
  23.           <!-- Tab 1,默认激活 -->
  24.           <div id="tab1" class="tab active">
  25.             ... Tab 1 content ...
  26.           </div>
  27.           <!-- Tab 2 -->
  28.           <div id="tab2" class="tab">
  29.             ... Tab 2 content ...
  30.           </div>
  31.           <!-- Tab 3 -->
  32.           <div id="tab3" class="tab">
  33.             ... Tab 3 content ...
  34.           </div>
  35.         </div>
  36.       </div>
  37.     </div>
  38.   </div>
  39. </div>
复制

  实例预览

注意,最外层容器div.tabs-animated-wrap需要一个固定的高度,默认是其父亲节点100%的高度

标签页的JS事件

当你需要在标签切换到激活状态后做一些事情时,标签页事件是很有用的:

事件(Event) 目标(Target) 描述(Description)
show 标签元素<div class="tab"> 在目标标签页被切换到可见状态时,事件触发
  1. var myApp = new Framework7();
  2. var $$ = Dom7;
  3. $$('#tab1').on('show', function () {
  4.     myApp.alert('Tab 1 is visible');
  5. });
  6. $$('#tab2').on('show', function () {
  7.     myApp.alert('Tab 2 is visible');
  8. });
  9. $$('#tab3').on('show', function () {
  10.     myApp.alert('Tab 3 is visible');
  11. });
复制

  实例预览

使用JS切换标签页

也可以通过JS切换标签页,我们需要调用以下的App方法:

myApp.showTab(tab)

  • tab - 要打开的标签页的HTML元素或CSS选择器。必选参数
  • 当标签页切换成功后方法会返回true,否则会返回false
  1. <a href="#" class="show-tab-1">Show Tab 1</a>
  2. <a href="#" class="show-tab-2">Show Tab 2</a>
  3. <a href="#" class="show-tab-3">Show Tab 3</a>
复制
  1. var myApp = new Framework7();
  2. var $$ = Dom7;
  3. $$('.show-tab-1').on('click', function () {
  4.     myApp.showTab('#tab1');
  5. });
  6. $$('.show-tab-2').on('click', function () {
  7.     myApp.showTab('#tab2');
  8. });
  9. $$('.show-tab-3').on('click', function () {
  10.     myApp.showTab('#tab3');
  11. });
    复制

  实例预览

2
7
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    前端开源库-markdown-it-expand-tabs

    总的来说,Markdown-it-Expand-Tabs是前端开发中提高Markdown渲染质量的一个实用工具,尤其对于那些依赖Markdown展示代码的项目,可以避免因制表符引起的显示问题,提升用户体验。在实际使用中,结合Markdown-it的...

    手动动态改变el-tabs标签页顺序

    例如:tabs1、tabs2、tabs3、tabs4 tabs2改为tabs4(往后移)则顺序变为tabs1、tabs3、tabs4、tabs2; tabs4改为tabs2(往前移) 则顺序变为tabs1、tabs4、tabs2、tabs3。

    react+ts+antd-mobile 动态tabs和下拉加载及详情

    在React技术栈中,开发移动端应用时,我们经常会遇到动态Tabs、下拉加载以及详情页面的设计。本项目结合了TypeScript(简称TS)的强类型优势和Ant Design Mobile的组件库,来实现这样的功能。接下来,我们将深入探讨...

    jQuery-ui-tabs 分页相关

    使用 `jQuery-ui-tabs` 时,可以通过 CSS 自定义标签页和分页导航的样式,以适应网站的整体设计。参考 `jQuery UI` 的主题生成器,或直接修改 CSS 文件,调整颜色、边框、字体等属性。 6. **性能优化** 对于大量...

    Android代码-simple-chrome-custom-tabs

    simple-chrome-custom-tabs Navigating to external websites from your app? "Yes, that one is easy" Wondering how to keep the user in context? "I know... it can be done using WebView, but I don't like...

    electron-chrome-tabs:电子标签扩展-与chrome标签相似

    在"electron-chrome-tabs"中,开发者可以通过JavaScript调用API,动态地创建和更新标签页,实现界面的实时交互。例如,可以使用JavaScript事件监听和处理机制,当用户点击新建标签按钮时,触发相应的函数来创建一个...

    qiankun-multiple-tabs-demo.rar

    在这个项目中,主应用负责创建和切换标签页,同时为子应用提供统一的通信和状态管理机制。子应用则负责自身的业务逻辑和视图渲染,它们可以是独立开发、独立部署的SPA。 在“qiankun-multiple-tabs-demo”中,我们...

    framework7-template-tabs:已弃用! Framework7选项卡(多个视图)入门应用程序模板

    Framework7 Tabs Starter应用程序模板 选项卡(多个视图)Framework7入门应用程序模板。 用法 1.下载此存储库 git clone https://github.com/framework7io/framework7-template-tabs my-app 存储库将下载到my-app/...

    react-navigation-tabs.zip

    通过集成此库,开发者可以轻松地在不同页面间切换,提供类似于原生iOS和Android应用的用户体验。 在开始使用`react-navigation-tabs`之前,你需要确保已经安装了`react-navigation`基础库和`react-native-gesture-...

    ionic-super-tabs:Ionic的可滑动标签

    超级标签适用于Ionic应用程序的可滑动选项卡模块。入门JavaScript-在制品使用指南JavaScript-在制品配套离子4 在@ionic-super-tabs/范围下发布的软件包与@ionic/angular@^4.0.0 (4.0.0及更高版本)兼容。 @ ionic-...

    Atom-atom-soft-tabs-length,支持软标签长度的Atom包。贡献给Xavierfoucrier/Atom.zip

    总结来说,"Atom-atom-soft-tabs-length"是Atom编辑器的一个实用插件,旨在满足开发者对软标签长度的个性化需求,确保代码的一致性和整洁度。通过灵活的设置,它可以适应各种编码规范和团队合作环境,是提高编程效率...

    android-swipe-views-tabs.7z

    在"android-swipe-views-tabs"项目中,开发者提供了一个完整的示例,演示了如何集成和自定义滑动视图与标签。该项目可能包含以下内容: 1. 示例布局文件:展示了如何在XML中配置ViewPager和TabLayout。 2. 自定义...

    Automatic-Scrolling-Tabs113.zip

    总的来说,"Automatic-Scrolling-Tabs113.zip"是一个专为谷歌浏览器设计的自动滚动标签页插件,特别适用于阅读长篇内容,如在线小说,用户只需切换插件状态就能享受自动滚动和标签切换的便捷服务。安装和使用该插件...

    Python库 | markdown-fenced-code-tabs-1.0.2.tar.gz

    Markdown Fenced Code Tabs是Python开发的一个库,专为Markdown文档增强功能,使代码块支持分页显示,方便阅读和比较长的代码段。这个库的版本是1.0.2,打包成`.tar.gz`格式的压缩包,适用于Python开发环境。 在...

    前端项目-across-tabs.zip

    在前端开发中,跨源站浏览器选项卡之间的通信是一个重要的技术点,特别是在构建大型Web应用或者需要多个页面间协作的功能时。"前端项目-across-tabs.zip"提供的代码示例,显然是一个解决这个问题的解决方案。这个名...

    angularjs渲染bootstraps实现tab页切页面不刷新换使用ui-router-tabs插件

    项目使用 angularJS ui-router-tabs angular-ui-router 实现tab页切换, 1、亮点 1)tab页间切换缓存tab页数据 2)刷新页面,保留已经打开的tab页,当前活动tab为上次活动的tab 3)使用嵌套路由,实现单页面应用

    标签(Tabs)实现多页面切换

    总之,“标签(Tabs)实现多页面切换”是Web开发中的一个重要技能,它结合了Ajax和JavaScript的力量,提供了流畅的用户体验。理解这一技术可以帮助开发者创建更高效、更用户友好的网页应用。通过不断实践和优化,我们...

    react-native-custom-tabs:适用于React Native的Chrome自定义标签

    “自定义标签”仅适用于Android,因此在每个平台上的行为如下。 安卓如果已安装Chrome,请在Chrome中打开您已自定义外观的URL。 如果尚未安装,请在其他浏览器中打开。 的iOS 如果已安装Chrome,请在其中打开URL。 ...

    perl-Text-Tabs+Wrap-2013.0523-395.el8.noarch(1).rpm

    官方离线安装包,亲测可用

    [html5技术]基于bootstrap制作的多标签页(tabs)

    在本教程中,我们将探讨如何利用HTML5和Bootstrap框架来构建一个多标签页(tabs)的界面。 Bootstrap的多标签页功能是通过其Nav组件和Tab插件实现的。Nav组件用于创建导航条,而Tab插件则为这些导航条添加交互性,...

Global site tag (gtag.js) - Google Analytics