标签页
Tab 可以简单地切换不同的内容。
标签布局
让我们看看 Tab 布局:
<!-- Tabs wrapper, shoud have "tabs" class. Required element -->
<div class="tabs">
<!-- First tab, should have "tab" class and unique id attribute -->
<!-- First tab is active by default - additional "tab-active" class -->
<div class="tab tab-active" id="tab1">
... Tab 1 content goes here ...
</div>
<!-- Second tab, should have "tab" class and unique id attribute -->
<div class="tab" id="tab2">
... Tab 2 content goes here ...
</div>
<!-- Third tab, should have "tab" class and unique id attribute -->
<div class="tab" id="tab3">
... Tab 3 content goes here ...
</div>
</div>
Where:
div class="tabs"
- 所有 Tab 的必要包装器。如果你遗漏了这个元素,Tab 将不会工作!div class="tab"
- 单个 Tab。应该有唯一id
属性div class="tab tab-active"
- 单个激活的 Tab。默认情况下激活(可见)的 Tab 应该有附加tab-active
类
可滚动的标签
如果你把 Tab 放在可滚动的<div class="page-content">
里面,它们将会有相互滚动 - 滚动一个 Tab 基本上会滚动所有的 Tab。为了避免这种情况(如果这是情况),建议把每个 Tab 作为页面内容,在这种情况下每个 Tab 将会有自己的滚动:
<div class="page">
<div class="navbar">...</div>
<!-- tabs is a direct child of page -->
<div class="tabs">
<!-- each tabs is a "page-content" -->
<div class="page-content tab tab-active" id="tab1">
... Tab 1 content goes here ...
</div>
<div class="page-content tab" id="tab2">
... Tab 2 content goes here ...
</div>
<!-- Third tab, should have "tab" class and unique id attribute -->
<div class="page-content tab" id="tab3">
... Tab 3 content goes here ...
</div>
</div>
</div>
在标签之间切换
在我们有 Tab 布局之后,我们需要一些控制器,以便用户可以在它们之间切换。
为了使其工作,我们需要创建带有<a>
标签的链接(tab-link
类和href
属性等于目标 Tab 的id
属性:
<!-- Link that activates first tab, has the same href attribute (#tab1) as the id attribute of first tab (tab1) -->
<a href="#tab1" class="tab-link tab-link-active">Tab 1</a>
<!-- Link that activates 2nd tab, has the same href attribute (#tab2) as the id attribute of 2nd tab (tab2) -->
<a href="#tab2" class="tab-link">Tab 2</a>
<!-- Link that activates 3rd tab, has the same href attribute (#tab2) as the id attribute of 3rd tab (tab3) -->
<a href="#tab3" class="tab-link">Tab 3</a>
如你所见,第一个链接也有tab-link-active
类。它不是必需的,但如果所有这样的链接都在同一个 DOM 树级别(相同级别的子元素),那么脚本也会改变与此激活的 Tab 相关的链接的tab-link-active
类。当你的“激活”链接有不同的视觉样式时(如分段控制中的按钮或Tabbar)
切换多个标签
这样的符号使用 ID 属性来指定我们需要切换到的 Tab。但有时我们可能需要使用一个 Tab 链接来切换几个 Tab,在这种情况下我们可以使用类而不是 ID 和data-tab
属性来指定 Tab 链接。例如:
<!-- Top Tabs -->
<div class="tabs tabs-top">
<div class="tab tab1 tab-active">...</div>
<div class="tab tab2">...</div>
<div class="tab tab3">...</div>
</div>
<!-- Bottom Tabs -->
<div class="tabs tabs-bottom">
<div class="tab tab1 tab-active">...</div>
<div class="tab tab2">...</div>
<div class="tab tab3">...</div>
</div>
<!-- Tabs links -->
<div>
<!-- This links will switch top and bottom tabs to .tab1 -->
<a href="#" class="tab-link tab-link-active" data-tab=".tab1">Tab 1</a>
<!-- This links will switch top and bottom tabs to .tab2 -->
<a href="#" class="tab-link" data-tab=".tab2">Tab 2</a>
<!-- This links will switch top and bottom tabs to .tab3 -->
<a href="#" class="tab-link" data-tab=".tab3">Tab 3</a>
</div>
其中data-tab
Tab 链接的属性带有目标 Tab/Tab 的 CSS 选择器
视图作为标签页
为什么单个 Tab 不能作为一个独立的视图,有自己的导航和布局?它可以,所以你可以直接切换视图作为 Tab。在这种情况下,我们将会有一种 Tabbed 应用程序结构,其中每个 Tab 表示一个单独的视图:
<body>
<!-- App root -->
<div id="app">
<!-- Views/Tabs container -->
<div class="views tabs">
<!--
Tabbar for switching views-tabs. Should be a first child in Views.
Additional "toolbar-bottom" class to set it on bottom
-->
<div class="toolbar tabbar toolbar-bottom">
<div class="toolbar-inner">
<a href="#view-home" class="tab-link tab-link-active">
<i class="icon icon-home"></i>
</a>
<a href="#view-catalog" class="tab-link">
<i class="icon icon-catalog"></i>
</a>
<a href="#view-settings" class="tab-link">
<i class="icon icon-settings"></i>
</a>
</div>
</div>
<!-- Your main view/tab, should have "view-main" class. It also has "tab-active" class -->
<div id="view-home" class="view view-main tab tab-active">
...
</div>
<!-- Catalog View -->
<div id="view-catalog" class="view tab">
...
</div>
<!-- Settings View -->
<div id="view-settings" class="view tab">
...
</div>
</div>
</div>
...
</body>
带动画的标签页
也可以使用简单的过渡来切换 Tab。这需要额外的div class="tabs-animated-wrap"
包装器来包装div class="tabs"
:
<!-- Tabs animated wrapper, required to switch tabs with transition -->
<div class="tabs-animated-wrap">
<!-- Tabs, tabs wrapper -->
<div class="tabs">
<!-- Tab 1, active by default -->
<div id="tab1" class="tab tab-active">
... Tab 1 content ...
</div>
<!-- Tab 2 -->
<div id="tab2" class="tab">
... Tab 2 content ...
</div>
<!-- Tab 3 -->
<div id="tab3" class="tab">
... Tab 3 content ...
</div>
</div>
</div>
注意,动画的 Tab 包装器div class="tabs-animated-wrap"
必须有固定高度。默认情况下,它是其父元素的高度的 100%
可滑动的标签页
也可以使用滑动来切换 Tab。这需要使用Swiper 元素(它已经是 Framework7 的一部分)。
在这个示例中,让我们把 Tab 链接放在 Subnavbar 中,我们将使用页面内容作为tab来保持每个 Tab 的滚动位置:
<!-- Swiper Element should be used as Tabs -->
<swiper-container class="tabs">
<!-- Each Tab must be a "swiper-slide" element -->
<!-- Tab 1, active by default -->
<swiper-slide id="tab1" class="tab tab-active">
... Tab 1 content ...
</swiper-slide>
<!-- Tab 2 -->
<swiper-slide id="tab2" class="tab">
... Tab 2 content ...
</swiper-slide>
<!-- Tab 3 -->
<swiper-slide id="tab3" class="tab">
... Tab 3 content ...
</swiper-slide>
</swiper-container>
标签应用方法
我们可以使用以下应用程序方法来控制 Tab:
app.tab.show(tabEl, animate)
- tabEl - HTMLElement或字符串(带有 CSS 选择器)的 Tab 来显示。必需
- animate - 布尔值- 它是否应该带有动画显示或不显示(在动画或可滑动 Tab 的情况下)。可选
- 此方法返回一个带有
newTabEl
和oldTabEl
属性的对象,显示和隐藏的 Tab HTML 元素
app.tab.show(tabEl, tabLinkEl, animate)
- tabEl - HTMLElement或字符串(带有 CSS 选择器)的 Tab 来显示。必需
- tabLinkEl - HTMLElement或字符串(带有 CSS 选择器)的 Tab 链接/按钮来激活此 Tab。有用的,以便在具有复杂布局的情况下传递,以告诉 Framework7 哪个 Tab 链接/按钮必须被激活
- animate - 布尔值- 它是否应该带有动画显示或不显示(在动画或可滑动 Tab 的情况下)。可选
- 此方法返回一个带有
newTabEl
和oldTabEl
属性的对象,显示和隐藏的 Tab HTML 元素
Tabs 事件
Tab 将在 Tab 元素上触发以下 DOM 事件,并在应用程序实例上触发事件:
DOM 事件
事件 | Target | 描述 |
---|---|---|
tab:show | Tab 元素<div class="tab"> | 当选项卡变得可见/活动时,将触发事件 |
tab:hide | Tab 元素<div class="tab"> | 当选项卡变得隐藏/非活动时,将触发事件 |
page:tabshow | 页面元素<div class="page"> | 当页面的父视图作为选项卡变得可见时,将触发事件 |
page:tabhide | 页面元素<div class="page"> | 当页面的父视图作为选项卡变得隐藏时,将触发事件 |
应用实例事件
还有应用程序实例事件:
事件 | 参数 | Target | 描述 |
---|---|---|---|
tabShow | tabEl | app | 当 Tab 变得可见/激活时,将触发事件。作为参数,事件处理程序接收变得可见的 Tab |
tabHide | tabEl | app | 当 Tab 变得隐藏/非激活时,将触发事件。作为参数,事件处理程序接收隐藏的 Tab |
pageTabShow | pageEl | app | 当页面的父视图作为选项卡变得可见。作为参数,事件处理程序接收页面的元素,它是变得可见的 View-Tab 的子元素 |
pageTabHide | pageEl | app | 当页面的父视图作为选项卡变得隐藏。作为参数,事件处理程序接收页面的元素,它是变得隐藏的 View-Tab 的子元素 |
可路由选项卡
Tab 可以是可路由的。什么是可路由的 Tab 以及为什么这是好的?
- 首先,它提供了通过普通链接而不是所谓的特殊标签导航到标签的机会。
- 第二,当导航到这样的 Tab 路由时,你可以加载带有所需 Tab 打开的页面。
- 第三,启用浏览器历史记录后,当你向后和向前导航历史记录时,将打开相同的标签。
- 最后但同样重要的是,当使用可路由的 Tab 时,你可以像加载页面一样加载 Tab 内容,即使用
url
,content
,component
或componentUrl
首先我们需要在应用程序路由中指定 Tab 路由。假设我们在/tabs/
路由上有一个带有可路由 Tab 的页面:
routes = [
{
// Page main route
path: '/tabs/',
// Will load page from tabs/index.html file
url: './pages/tabs/index.html',
// Pass "tabs" property to route, must be array with tab routes:
tabs: [
// First (default) tab has the same url as the page itself
{
// Tab path
path: '/',
// Tab id
id: 'tab-1',
// Fill this tab content from content string
content: `
<div class="block">
<h3>About Me</h3>
<p>...</p>
</div>
`
},
// Second tab
{
path: '/tab-2/',
id: 'tab-2',
// Fill this tab content with Ajax request:
url: './pages/tabs/tab-2.html',
},
// Third tab
{
path: '/tab-3/',
id: 'tab-3',
// Load this tab content as a component with Ajax request:
componentUrl: './pages/tabs/tab-3.html',
},
],
}
]
在/tabs/index.html
页面上,我们可能有以下结构,例如:
<div class="page">
<div class="navbar">
<div class="navbar-bg"></div>
<div class="navbar-inner">
<div class="title">Routable Tabs</div>
</div>
</div>
<div class="toolbar tabbar toolbar-bottom">
<div class="toolbar-inner">
<!-- additional "data-route-tab-id" must match to tab's ID in the specified routes -->
<a href="/" class="tab-link" data-route-tab-id="tab-1">Tab 1</a>
<a href="/tab-2/" class="tab-link" data-route-tab-id="tab-2">Tab 2</a>
<a href="/tab-3/" class="tab-link" data-route-tab-id="tab-3">Tab 3</a>
</div>
</div>
<!-- Additional "tabs-routable" is required on tabs -->
<div class="tabs tabs-routable">
<div class="tab page-content" id="tab-1"></div>
<div class="tab page-content" id="tab-2"></div>
<div class="tab page-content" id="tab-3"></div>
</div>
</div>
与普通 Tab 几乎相同,但区别在于 Tab 链接和 Tab 上不再有“tab-link-active”和“tab-active”类。这些类和 Tab 将被路由器切换。还有一个新的属性和类:
data-route-tab-id
- 额外的 Tab 链接属性,这是必需的,以便 Tab 切换器知道哪个链接与所需的路由相关tabs-routable
- 在tabs
元素之前插入元素
注意,视图不能用作可路由的 Tab。可路由的 Tab 只能用在 View/Router 内!
可路由标签事件
当可路由的 Tab 内容加载时,路由器将在 Tab 元素上触发以下 DOM 事件,并在路由器/视图/应用程序实例上触发事件:
DOM 事件
事件 | Target | 描述 |
---|---|---|
tab:init tab:mounted | Tab 元素<div class="tab"> | 在可路由的 Tab 内容加载后立即触发事件 |
tab:beforeremove | Tab 元素<div class="tab"> | 在可路由的 Tab 内容移除前立即触发事件 |
路由器实例事件
路由器实例在自身实例上发出事件,然后在其父实例和view
instance and app
实例上发出事件:
事件 | Target | 参数 | 描述 |
---|---|---|---|
tabInit tabMounted | 路由器 view app | (newTabEl, tabRoute) | 可在可路由的 Tab 内容加载后触发事件。作为参数,事件处理程序接收:
|
tabBeforeRemove | 路由器 view app | (oldTabEl, newTabEl, tabRoute) | 可在可路由的 Tab 内容移除前触发事件。作为参数,事件处理程序接收:
|
示例
<div class="page">
<div class="navbar">
<div class="navbar-bg"></div>
<div class="navbar-inner sliding">
<div class="title">Static Tabs</div>
</div>
</div>
<div class="toolbar toolbar-bottom tabbar">
<div class="toolbar-inner">
<a href="#tab-1" class="tab-link tab-link-active">Tab 1</a>
<a href="#tab-2" class="tab-link">Tab 2</a>
<a href="#tab-3" class="tab-link">Tab 3</a>
</div>
</div>
<div class="tabs">
<div id="tab-1" class="page-content tab tab-active">
<div class="block">
<p>Tab 1 content</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ullam enim quia molestiae facilis laudantium
voluptates obcaecati officia cum, sit libero commodi. Ratione illo suscipit temporibus sequi iure ad
laboriosam accusamus?</p>
<p>Saepe explicabo voluptas ducimus provident, doloremque quo totam molestias! Suscipit blanditiis eaque
exercitationem praesentium reprehenderit, fuga accusamus possimus sed, sint facilis ratione quod, qui
dignissimos voluptas! Aliquam rerum consequuntur deleniti.</p>
<p>Totam reprehenderit amet commodi ipsum nam provident doloremque possimus odio itaque, est animi culpa modi
consequatur reiciendis corporis libero laudantium sed eveniet unde delectus a maiores nihil dolores? Natus,
perferendis.</p>
<p>Atque quis totam repellendus omnis alias magnam corrupti, possimus aspernatur perspiciatis quae provident
consequatur minima doloremque blanditiis nihil maxime ducimus earum autem. Magni animi blanditiis similique
iusto, repellat sed quisquam!</p>
<p>Suscipit, facere quasi atque totam. Repudiandae facilis at optio atque, rem nam, natus ratione cum enim
voluptatem suscipit veniam! Repellat, est debitis. Modi nam mollitia explicabo, unde aliquid impedit!
Adipisci!</p>
<p>Deserunt adipisci tempora asperiores, quo, nisi ex delectus vitae consectetur iste fugiat iusto dolorem
autem. Itaque, ipsa voluptas, a assumenda rem, dolorum porro accusantium, officiis veniam nostrum cum cumque
impedit.</p>
<p>Laborum illum ipsa voluptatibus possimus nesciunt ex consequatur rem, natus ad praesentium rerum libero
consectetur temporibus cupiditate atque aspernatur, eaque provident eligendi quaerat ea soluta doloremque.
Iure fugit, minima facere.</p>
</div>
</div>
<div id="tab-2" class="page-content tab">
<div class="block">
<p>Tab 2 content</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ullam enim quia molestiae facilis laudantium
voluptates obcaecati officia cum, sit libero commodi. Ratione illo suscipit temporibus sequi iure ad
laboriosam accusamus?</p>
<p>Saepe explicabo voluptas ducimus provident, doloremque quo totam molestias! Suscipit blanditiis eaque
exercitationem praesentium reprehenderit, fuga accusamus possimus sed, sint facilis ratione quod, qui
dignissimos voluptas! Aliquam rerum consequuntur deleniti.</p>
<p>Totam reprehenderit amet commodi ipsum nam provident doloremque possimus odio itaque, est animi culpa modi
consequatur reiciendis corporis libero laudantium sed eveniet unde delectus a maiores nihil dolores? Natus,
perferendis.</p>
<p>Atque quis totam repellendus omnis alias magnam corrupti, possimus aspernatur perspiciatis quae provident
consequatur minima doloremque blanditiis nihil maxime ducimus earum autem. Magni animi blanditiis similique
iusto, repellat sed quisquam!</p>
<p>Suscipit, facere quasi atque totam. Repudiandae facilis at optio atque, rem nam, natus ratione cum enim
voluptatem suscipit veniam! Repellat, est debitis. Modi nam mollitia explicabo, unde aliquid impedit!
Adipisci!</p>
<p>Deserunt adipisci tempora asperiores, quo, nisi ex delectus vitae consectetur iste fugiat iusto dolorem
autem. Itaque, ipsa voluptas, a assumenda rem, dolorum porro accusantium, officiis veniam nostrum cum cumque
impedit.</p>
<p>Laborum illum ipsa voluptatibus possimus nesciunt ex consequatur rem, natus ad praesentium rerum libero
consectetur temporibus cupiditate atque aspernatur, eaque provident eligendi quaerat ea soluta doloremque.
Iure fugit, minima facere.</p>
</div>
</div>
<div id="tab-3" class="page-content tab">
<div class="block">
<p>Tab 3 content</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ullam enim quia molestiae facilis laudantium
voluptates obcaecati officia cum, sit libero commodi. Ratione illo suscipit temporibus sequi iure ad
laboriosam accusamus?</p>
<p>Saepe explicabo voluptas ducimus provident, doloremque quo totam molestias! Suscipit blanditiis eaque
exercitationem praesentium reprehenderit, fuga accusamus possimus sed, sint facilis ratione quod, qui
dignissimos voluptas! Aliquam rerum consequuntur deleniti.</p>
<p>Totam reprehenderit amet commodi ipsum nam provident doloremque possimus odio itaque, est animi culpa modi
consequatur reiciendis corporis libero laudantium sed eveniet unde delectus a maiores nihil dolores? Natus,
perferendis.</p>
<p>Atque quis totam repellendus omnis alias magnam corrupti, possimus aspernatur perspiciatis quae provident
consequatur minima doloremque blanditiis nihil maxime ducimus earum autem. Magni animi blanditiis similique
iusto, repellat sed quisquam!</p>
<p>Suscipit, facere quasi atque totam. Repudiandae facilis at optio atque, rem nam, natus ratione cum enim
voluptatem suscipit veniam! Repellat, est debitis. Modi nam mollitia explicabo, unde aliquid impedit!
Adipisci!</p>
<p>Deserunt adipisci tempora asperiores, quo, nisi ex delectus vitae consectetur iste fugiat iusto dolorem
autem. Itaque, ipsa voluptas, a assumenda rem, dolorum porro accusantium, officiis veniam nostrum cum cumque
impedit.</p>
<p>Laborum illum ipsa voluptatibus possimus nesciunt ex consequatur rem, natus ad praesentium rerum libero
consectetur temporibus cupiditate atque aspernatur, eaque provident eligendi quaerat ea soluta doloremque.
Iure fugit, minima facere.</p>
</div>
</div>
</div>
</div>
带动画的标签页
<div class="page">
<div class="navbar">
<div class="navbar-bg"></div>
<div class="navbar-inner sliding">
<div class="title">Animated Tabs</div>
</div>
</div>
<div class="toolbar toolbar-bottom tabbar">
<div class="toolbar-inner">
<a href="#tab-1" class="tab-link tab-link-active">Tab 1</a>
<a href="#tab-2" class="tab-link">Tab 2</a>
<a href="#tab-3" class="tab-link">Tab 3</a>
</div>
</div>
<div class="tabs-animated-wrap">
<div class="tabs">
<div id="tab-1" class="page-content tab tab-active">
<div class="block">
<p>Tab 1 content</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ullam enim quia molestiae facilis laudantium
voluptates obcaecati officia cum, sit libero commodi. Ratione illo suscipit temporibus sequi iure ad
laboriosam accusamus?</p>
<p>Saepe explicabo voluptas ducimus provident, doloremque quo totam molestias! Suscipit blanditiis eaque
exercitationem praesentium reprehenderit, fuga accusamus possimus sed, sint facilis ratione quod, qui
dignissimos voluptas! Aliquam rerum consequuntur deleniti.</p>
<p>Totam reprehenderit amet commodi ipsum nam provident doloremque possimus odio itaque, est animi culpa modi
consequatur reiciendis corporis libero laudantium sed eveniet unde delectus a maiores nihil dolores? Natus,
perferendis.</p>
<p>Atque quis totam repellendus omnis alias magnam corrupti, possimus aspernatur perspiciatis quae provident
consequatur minima doloremque blanditiis nihil maxime ducimus earum autem. Magni animi blanditiis similique
iusto, repellat sed quisquam!</p>
<p>Suscipit, facere quasi atque totam. Repudiandae facilis at optio atque, rem nam, natus ratione cum enim
voluptatem suscipit veniam! Repellat, est debitis. Modi nam mollitia explicabo, unde aliquid impedit!
Adipisci!</p>
<p>Deserunt adipisci tempora asperiores, quo, nisi ex delectus vitae consectetur iste fugiat iusto dolorem
autem. Itaque, ipsa voluptas, a assumenda rem, dolorum porro accusantium, officiis veniam nostrum cum cumque
impedit.</p>
<p>Laborum illum ipsa voluptatibus possimus nesciunt ex consequatur rem, natus ad praesentium rerum libero
consectetur temporibus cupiditate atque aspernatur, eaque provident eligendi quaerat ea soluta doloremque.
Iure fugit, minima facere.</p>
</div>
</div>
<div id="tab-2" class="page-content tab">
<div class="block">
<p>Tab 2 content</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ullam enim quia molestiae facilis laudantium
voluptates obcaecati officia cum, sit libero commodi. Ratione illo suscipit temporibus sequi iure ad
laboriosam accusamus?</p>
<p>Saepe explicabo voluptas ducimus provident, doloremque quo totam molestias! Suscipit blanditiis eaque
exercitationem praesentium reprehenderit, fuga accusamus possimus sed, sint facilis ratione quod, qui
dignissimos voluptas! Aliquam rerum consequuntur deleniti.</p>
<p>Totam reprehenderit amet commodi ipsum nam provident doloremque possimus odio itaque, est animi culpa modi
consequatur reiciendis corporis libero laudantium sed eveniet unde delectus a maiores nihil dolores? Natus,
perferendis.</p>
<p>Atque quis totam repellendus omnis alias magnam corrupti, possimus aspernatur perspiciatis quae provident
consequatur minima doloremque blanditiis nihil maxime ducimus earum autem. Magni animi blanditiis similique
iusto, repellat sed quisquam!</p>
<p>Suscipit, facere quasi atque totam. Repudiandae facilis at optio atque, rem nam, natus ratione cum enim
voluptatem suscipit veniam! Repellat, est debitis. Modi nam mollitia explicabo, unde aliquid impedit!
Adipisci!</p>
<p>Deserunt adipisci tempora asperiores, quo, nisi ex delectus vitae consectetur iste fugiat iusto dolorem
autem. Itaque, ipsa voluptas, a assumenda rem, dolorum porro accusantium, officiis veniam nostrum cum cumque
impedit.</p>
<p>Laborum illum ipsa voluptatibus possimus nesciunt ex consequatur rem, natus ad praesentium rerum libero
consectetur temporibus cupiditate atque aspernatur, eaque provident eligendi quaerat ea soluta doloremque.
Iure fugit, minima facere.</p>
</div>
</div>
<div id="tab-3" class="page-content tab">
<div class="block">
<p>Tab 3 content</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ullam enim quia molestiae facilis laudantium
voluptates obcaecati officia cum, sit libero commodi. Ratione illo suscipit temporibus sequi iure ad
laboriosam accusamus?</p>
<p>Saepe explicabo voluptas ducimus provident, doloremque quo totam molestias! Suscipit blanditiis eaque
exercitationem praesentium reprehenderit, fuga accusamus possimus sed, sint facilis ratione quod, qui
dignissimos voluptas! Aliquam rerum consequuntur deleniti.</p>
<p>Totam reprehenderit amet commodi ipsum nam provident doloremque possimus odio itaque, est animi culpa modi
consequatur reiciendis corporis libero laudantium sed eveniet unde delectus a maiores nihil dolores? Natus,
perferendis.</p>
<p>Atque quis totam repellendus omnis alias magnam corrupti, possimus aspernatur perspiciatis quae provident
consequatur minima doloremque blanditiis nihil maxime ducimus earum autem. Magni animi blanditiis similique
iusto, repellat sed quisquam!</p>
<p>Suscipit, facere quasi atque totam. Repudiandae facilis at optio atque, rem nam, natus ratione cum enim
voluptatem suscipit veniam! Repellat, est debitis. Modi nam mollitia explicabo, unde aliquid impedit!
Adipisci!</p>
<p>Deserunt adipisci tempora asperiores, quo, nisi ex delectus vitae consectetur iste fugiat iusto dolorem
autem. Itaque, ipsa voluptas, a assumenda rem, dolorum porro accusantium, officiis veniam nostrum cum cumque
impedit.</p>
<p>Laborum illum ipsa voluptatibus possimus nesciunt ex consequatur rem, natus ad praesentium rerum libero
consectetur temporibus cupiditate atque aspernatur, eaque provident eligendi quaerat ea soluta doloremque.
Iure fugit, minima facere.</p>
</div>
</div>
</div>
</div>
</div>
可滑动的标签页
<div class="page">
<div class="navbar">
<div class="navbar-bg"></div>
<div class="navbar-inner sliding">
<div class="title">Swipeable Tabs</div>
</div>
</div>
<div class="toolbar toolbar-bottom tabbar">
<div class="toolbar-inner">
<a href="#tab-1" class="tab-link tab-link-active">Tab 1</a>
<a href="#tab-2" class="tab-link">Tab 2</a>
<a href="#tab-3" class="tab-link">Tab 3</a>
</div>
</div>
<swiper-container class="tabs">
<swiper-slide id="tab-1" class="page-content tab tab-active">
<div class="block">
<p>Tab 1 content</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ullam enim quia molestiae facilis laudantium
voluptates obcaecati officia cum, sit libero commodi. Ratione illo suscipit temporibus sequi iure ad
laboriosam accusamus?</p>
<p>Saepe explicabo voluptas ducimus provident, doloremque quo totam molestias! Suscipit blanditiis eaque
exercitationem praesentium reprehenderit, fuga accusamus possimus sed, sint facilis ratione quod, qui
dignissimos voluptas! Aliquam rerum consequuntur deleniti.</p>
<p>Totam reprehenderit amet commodi ipsum nam provident doloremque possimus odio itaque, est animi culpa modi
consequatur reiciendis corporis libero laudantium sed eveniet unde delectus a maiores nihil dolores? Natus,
perferendis.</p>
<p>Atque quis totam repellendus omnis alias magnam corrupti, possimus aspernatur perspiciatis quae provident
consequatur minima doloremque blanditiis nihil maxime ducimus earum autem. Magni animi blanditiis similique
iusto, repellat sed quisquam!</p>
<p>Suscipit, facere quasi atque totam. Repudiandae facilis at optio atque, rem nam, natus ratione cum enim
voluptatem suscipit veniam! Repellat, est debitis. Modi nam mollitia explicabo, unde aliquid impedit!
Adipisci!</p>
<p>Deserunt adipisci tempora asperiores, quo, nisi ex delectus vitae consectetur iste fugiat iusto dolorem
autem. Itaque, ipsa voluptas, a assumenda rem, dolorum porro accusantium, officiis veniam nostrum cum cumque
impedit.</p>
<p>Laborum illum ipsa voluptatibus possimus nesciunt ex consequatur rem, natus ad praesentium rerum libero
consectetur temporibus cupiditate atque aspernatur, eaque provident eligendi quaerat ea soluta doloremque.
Iure fugit, minima facere.</p>
</div>
</swiper-slide>
<swiper-slide id="tab-2" class="page-content tab">
<div class="block">
<p>Tab 2 content</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ullam enim quia molestiae facilis laudantium
voluptates obcaecati officia cum, sit libero commodi. Ratione illo suscipit temporibus sequi iure ad
laboriosam accusamus?</p>
<p>Saepe explicabo voluptas ducimus provident, doloremque quo totam molestias! Suscipit blanditiis eaque
exercitationem praesentium reprehenderit, fuga accusamus possimus sed, sint facilis ratione quod, qui
dignissimos voluptas! Aliquam rerum consequuntur deleniti.</p>
<p>Totam reprehenderit amet commodi ipsum nam provident doloremque possimus odio itaque, est animi culpa modi
consequatur reiciendis corporis libero laudantium sed eveniet unde delectus a maiores nihil dolores? Natus,
perferendis.</p>
<p>Atque quis totam repellendus omnis alias magnam corrupti, possimus aspernatur perspiciatis quae provident
consequatur minima doloremque blanditiis nihil maxime ducimus earum autem. Magni animi blanditiis similique
iusto, repellat sed quisquam!</p>
<p>Suscipit, facere quasi atque totam. Repudiandae facilis at optio atque, rem nam, natus ratione cum enim
voluptatem suscipit veniam! Repellat, est debitis. Modi nam mollitia explicabo, unde aliquid impedit!
Adipisci!</p>
<p>Deserunt adipisci tempora asperiores, quo, nisi ex delectus vitae consectetur iste fugiat iusto dolorem
autem. Itaque, ipsa voluptas, a assumenda rem, dolorum porro accusantium, officiis veniam nostrum cum cumque
impedit.</p>
<p>Laborum illum ipsa voluptatibus possimus nesciunt ex consequatur rem, natus ad praesentium rerum libero
consectetur temporibus cupiditate atque aspernatur, eaque provident eligendi quaerat ea soluta doloremque.
Iure fugit, minima facere.</p>
</div>
</swiper-slide>
<swiper-slide id="tab-3" class="page-content tab">
<div class="block">
<p>Tab 3 content</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ullam enim quia molestiae facilis laudantium
voluptates obcaecati officia cum, sit libero commodi. Ratione illo suscipit temporibus sequi iure ad
laboriosam accusamus?</p>
<p>Saepe explicabo voluptas ducimus provident, doloremque quo totam molestias! Suscipit blanditiis eaque
exercitationem praesentium reprehenderit, fuga accusamus possimus sed, sint facilis ratione quod, qui
dignissimos voluptas! Aliquam rerum consequuntur deleniti.</p>
<p>Totam reprehenderit amet commodi ipsum nam provident doloremque possimus odio itaque, est animi culpa modi
consequatur reiciendis corporis libero laudantium sed eveniet unde delectus a maiores nihil dolores? Natus,
perferendis.</p>
<p>Atque quis totam repellendus omnis alias magnam corrupti, possimus aspernatur perspiciatis quae provident
consequatur minima doloremque blanditiis nihil maxime ducimus earum autem. Magni animi blanditiis similique
iusto, repellat sed quisquam!</p>
<p>Suscipit, facere quasi atque totam. Repudiandae facilis at optio atque, rem nam, natus ratione cum enim
voluptatem suscipit veniam! Repellat, est debitis. Modi nam mollitia explicabo, unde aliquid impedit!
Adipisci!</p>
<p>Deserunt adipisci tempora asperiores, quo, nisi ex delectus vitae consectetur iste fugiat iusto dolorem
autem. Itaque, ipsa voluptas, a assumenda rem, dolorum porro accusantium, officiis veniam nostrum cum cumque
impedit.</p>
<p>Laborum illum ipsa voluptatibus possimus nesciunt ex consequatur rem, natus ad praesentium rerum libero
consectetur temporibus cupiditate atque aspernatur, eaque provident eligendi quaerat ea soluta doloremque.
Iure fugit, minima facere.</p>
</div>
</swiper-slide>
</swiper-container>
</div>
可路由选项卡
var app = new Framework7({
routes: [
{
path: '/',
id: 'tab1',
content: `
<div class="block">
<p>Tab 1 content</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ullam enim quia molestiae facilis laudantium voluptates obcaecati officia cum, sit libero commodi. Ratione illo suscipit temporibus sequi iure ad laboriosam accusamus?</p>
<p>Saepe explicabo voluptas ducimus provident, doloremque quo totam molestias! Suscipit blanditiis eaque exercitationem praesentium reprehenderit, fuga accusamus possimus sed, sint facilis ratione quod, qui dignissimos voluptas! Aliquam rerum consequuntur deleniti.</p>
<p>Totam reprehenderit amet commodi ipsum nam provident doloremque possimus odio itaque, est animi culpa modi consequatur reiciendis corporis libero laudantium sed eveniet unde delectus a maiores nihil dolores? Natus, perferendis.</p>
</div>
`,
},
{
path: '/tab2/',
id: 'tab2',
content: `
<div class="block">
<p>Tab 2 content</p>
<p>Suscipit, facere quasi atque totam. Repudiandae facilis at optio atque, rem nam, natus ratione cum enim voluptatem suscipit veniam! Repellat, est debitis. Modi nam mollitia explicabo, unde aliquid impedit! Adipisci!</p>
<p>Deserunt adipisci tempora asperiores, quo, nisi ex delectus vitae consectetur iste fugiat iusto dolorem autem. Itaque, ipsa voluptas, a assumenda rem, dolorum porro accusantium, officiis veniam nostrum cum cumque impedit.</p>
<p>Laborum illum ipsa voluptatibus possimus nesciunt ex consequatur rem, natus ad praesentium rerum libero consectetur temporibus cupiditate atque aspernatur, eaque provident eligendi quaerat ea soluta doloremque. Iure fugit, minima facere.</p>
</div>
`,
},
{
path: '/tab3/',
id: 'tab3',
content: `
<div class="block">
<p>Tab 3 content</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ullam enim quia molestiae facilis laudantium voluptates obcaecati officia cum, sit libero commodi. Ratione illo suscipit temporibus sequi iure ad laboriosam accusamus?</p>
<p>Deserunt adipisci tempora asperiores, quo, nisi ex delectus vitae consectetur iste fugiat iusto dolorem autem. Itaque, ipsa voluptas, a assumenda rem, dolorum porro accusantium, officiis veniam nostrum cum cumque impedit.</p>
<p>Laborum illum ipsa voluptatibus possimus nesciunt ex consequatur rem, natus ad praesentium rerum libero consectetur temporibus cupiditate atque aspernatur, eaque provident eligendi quaerat ea soluta doloremque. Iure fugit, minima facere.</p>
</div>
`,
},
]
});
<div class="page">
<div class="navbar">
<div class="navbar-bg"></div>
<div class="navbar-inner sliding">
<div class="title">Tabs Routable</div>
</div>
</div>
<div class="toolbar toolbar-bottom tabbar">
<div class="toolbar-inner">
<a href="./" class="tab-link" data-route-tab-id="tab1">Tab 1</a>
<a href="tab2/" class="tab-link" data-route-tab-id="tab2">Tab 2</a>
<a href="tab3/" class="tab-link" data-route-tab-id="tab3">Tab 3</a>
</div>
</div>
<div class="tabs tabs-routable">
<div class="page-content tab" id="tab1"></div>
<div class="page-content tab" id="tab2"></div>
<div class="page-content tab" id="tab3"></div>
</div>
</div>