W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
應(yīng)用當(dāng)需要展示二級以上內(nèi)容時,屏幕頂部會展示一個標(biāo)簽欄,并提供在應(yīng)用的不同部分之間快速切換的功能。標(biāo)簽欄在所有屏幕方向上保持相同的高度。 選項(xiàng):根據(jù)業(yè)務(wù)場景需要可以設(shè)定2個以上選項(xiàng),當(dāng)選項(xiàng)超過屏幕寬度后可以橫滑選項(xiàng)行查看所有內(nèi)容。 新內(nèi)容標(biāo)記:選項(xiàng)卡上能顯示未讀或者新內(nèi)容標(biāo)記。 場景描述:當(dāng)選項(xiàng)卡內(nèi)容提供給用戶自定義配置時提供編輯/新建入口,用戶可以由此進(jìn)入編輯頁面進(jìn)行修改。
說明:
{
"defaultTitle": "Tabs 橫向選項(xiàng)卡",
"usingComponents": {
"tabs": "mini-ali-ui/es/tabs/index",
"tab-content": "mini-ali-ui/es/tabs/tab-content/index"
}
}
<tabs
tabs="{{tabs2}}"
tabsName="activeTab2"
onTabClick="handleTabClick"
onChange="handleTabChange"
onPlusClick="handlePlusClick"
activeTab="{{activeTab2}}"
showPlus="{{true}}"
capsule="{{false}}"
hasSubTitle="{{false}}"
tabBarUnderlineWidth="20px"
stickyBar="{{true}}"
>
<block a:for="{{tabs2}}">
<tab-content key="{{index}}" tabId="{{index}}" activeTab="{{activeTab2}}" a:if="{{index === 0}}">
<view class="tab-content" style="height: 300px;">高度為 300px {{item.title}}</view>
</tab-content>
<tab-content key="{{index}}" tabId="{{index}}" activeTab="{{activeTab2}}" a:elif="{{index === 2}}">
<view class="tab-content" style="height: 200px;">改變 tab-content 高度為 200px {{item.title}}</view>
</tab-content>
<tab-content key="{{index}}" tabId="{{index}}" activeTab="{{activeTab2}}" a:else>
<view class="tab-content">content of {{item.title}}</view>
</tab-content>
</block>
</tabs>
Page({
data: {
tabs2: [
{
title: '選項(xiàng)',
subTitle: '描述文案',
number: '66',
showBadge: true,
badge: {
arrow: false,
stroke: true,
},
},
{
title: '選選',
subTitle: '描述文案',
number: '文字',
showBadge: true,
badge: {
arrow: true,
},
},
{
title: '二二',
subTitle: '描述文案',
showBadge: true,
number: 0,
},
{
title: '選二',
subTitle: '描述文案',
number: '99+',
showBadge: false,
},
{
title: '項(xiàng)二',
subTitle: '描述文案',
number: '6',
},
{
title: '二二',
subTitle: '描述文案',
},
{
title: '選二',
subTitle: '描述文案',
},
{
title: '項(xiàng)二',
subTitle: '描述文案',
number: '6',
},
],
activeTab2: 0,
},
handleTabClick({ index, tabsName }) {
this.setData({
[tabsName]: index,
});
},
handleTabChange({ index, tabsName }) {
this.setData({
[tabsName]: index,
});
},
handlePlusClick() {
my.alert({
content: 'plus clicked',
});
},
onPageScroll({ scrollTop }) {
// onPageScroll 主要是用于電梯組件(elevator 模式)滾動時的高度計算;
// activeTab 被觸發(fā)高亮的 tab;
// getFloorNumber 當(dāng)前 tab-content 所在的索引值;
// this.data.floorNumber 將會有組件內(nèi)部根據(jù) tab-content 的高度計算;
// ※※※ 當(dāng)使用 elevator 模式的 tabs 組件時,這部分的代碼請直接 copy 使用 ※※※
if (scrollTop === 0) {
this.setData({
activeTab: 0,
getFloorNumber: 0,
});
} else {
// 電梯組件時需要添加,計算頁面滾動時,tab 的切換;
for (let i = 0; i <= this.data.floorNumber.length; i++) {
if (scrollTop >= this.data.floorNumber[i]) {
this.setData({
activeTab: i,
getFloorNumber: i,
});
}
}
}
},
});
.tab-content {
display: flex;
justify-content: center;
align-items: center;
padding: 40rpx;
box-sizing: border-box;
/* 如果 swipeable="{{true}}",需要增加 height */
/* height: 350px; */
/* 為了體現(xiàn) stickyBar 的作用而增加的 tab-content 的高度 */
height: 100vh;
}
tabs 橫向選項(xiàng)卡主要是由 <tabs>
和 <tab-content>
兩個標(biāo)簽組成,包含的類型較多,可通過 <tabs>
的屬性進(jìn)行配置
屬性 | 類型 | 默認(rèn)值 | 描述 | 必填 | 最低版本 |
---|---|---|---|---|---|
className | String | - | 自定義 class。 | - | - |
activeCls | String | - | 自定義激活 tabbar 的 class(設(shè)置字體樣式和寬度)。 | - | - |
tabs | Array | - | tab 數(shù)據(jù),其中包括選項(xiàng)標(biāo)題 title、副標(biāo)題(描述)文案 subTitle、膠囊形式 tab 中的數(shù)字 number,如需要以 badge 方式展示數(shù)字,添加 showBadge 并設(shè)置為 true 即可。 | true | 1.0.9 支持 showBadge |
tabsName | String | - | tab 選項(xiàng)卡的名字,與 activeTab 的 key 值相同 。 | true | - |
activeTab | Number | 0 | 當(dāng)前激活的 Tab 索引。 | true | - |
tabBarCls | String | - | tabbar的自定義樣式 class。 | - | - |
tabBarUnderlineColor | String | #1677FF | 選中選項(xiàng)卡下劃線顏色。 | - | - |
tabBarActiveTextColor | String | #1677FF | 選中選項(xiàng)卡字體顏色。 | - | - |
capsuleTabBarActiveTextColor | String | #ffffff | 膠囊選中選項(xiàng)卡字體顏色。 | - | - |
capsuleTabBarBackgroundColor | String | #e5e5e5 | 膠囊未選中的背景色 | - | 1.0.12 |
tabBarInactiveTextColor | String | #333333 | 未選中選項(xiàng)卡字體顏色。 | - | - |
tabBarSubTextColor | String | #999999 | 未選中描述字體顏色。 | - | - |
tabBarActiveSubTextColor | String | #ffffff | 選中描述字體顏色。 | - | - |
tabBarBackgroundColor | String | #ffffff | 選項(xiàng)卡背景顏色。 | - | - |
showPlus | Boolean | false | 是否顯示 + icon。 | - | - |
swipeable | Boolean | true | tabs 內(nèi)容區(qū)是否可拖動。 | - | - |
animation | Boolean | true | 選項(xiàng)卡切換時滑動動畫。 | - | - |
duration | Number | 500 | tabs 內(nèi)容區(qū)切換動畫時長。 | - | - |
capsule | Boolean | false | 是否為膠囊 tab。 | - | - |
hasSubTitle | Boolean | false | 是否有副標(biāo)題(描述)內(nèi)容。 | - | - |
elevator | Boolean | false | 是否電梯組件。 | - | - |
elevatorTop | String | 0px | 電梯組件中 tab 置頂時的位置控制 | - | 1.0.8 |
elevatorContentTop | Number | 0 | 電梯組件中 tab-content 距離頂部的位置。 | - | 1.0.10 |
onPlusClick | EventHandle | () => {} | + icon 被點(diǎn)擊時的回調(diào)。 | - | - |
onTabClick | EventHandle | (index: Number,tabsName:String) => void | tab 被點(diǎn)擊的回調(diào)。 | - | - |
onChange | EventHandle | (index: Number,tabsName:String) => void | tab 變化時觸發(fā)。 | - | - |
tabsName | String | - | tab 選項(xiàng)卡的名字,與 activeTab 的 key 值相同。 | true | - |
tabBarUnderlineWidth | String | 100% | 設(shè)置 tab 選項(xiàng)卡選中態(tài)的下劃線寬度 | - | 1.0.10 |
tabBarUnderlineHeight | String | 2px | 設(shè)置 tab 選項(xiàng)卡選中態(tài)的下劃線高度 | - | 1.0.10 |
onTabFirstShow | EventHandle | (index: Number, tabsName: String) => {} | tab 選項(xiàng)卡首次出現(xiàn)時的回調(diào) | - | 1.0.12 |
tabContentHeight | String | - | 當(dāng) swipeable 為 true 時,可通過該屬性值重設(shè)高度強(qiáng)制讓 swiper 組件支持“自適應(yīng)”高度的行為 |
- | 1.1.2 |
plusIcon | String | add | icon 類型可參考 am-icon 類型 | - | 1.1.4 |
plusIconSize | Number | 16 | 改變 icon 大小 | - | 1.1.4 |
plusIconColor | String | - | 改變 icon 顏色 | - | 1.1.4 |
plusImg | String | - | 使用圖片替換 icon | - | 1.1.4 |
plusImgWidth | String | - | 設(shè)置替換 icon 后的圖片寬度 | - | 1.1.4 |
plusImgHeight | String | - | 設(shè)置替換 icon 后的圖片高度 | - | 1.1.4 |
stickyBar | Boolean | false | tabBar 是否在頁面滾動的時候定位在頂部的某個位置,可結(jié)合 elevatorTop 設(shè)置距離頂部的位置。 |
false | 1.1.5 |
屬性 | 描述 | 類型 | 默認(rèn)值 |
---|---|---|---|
index | 列表項(xiàng)的唯一索引。 | String | - |
tabId | tab 內(nèi)容序列索引。 | Number | {{index}} |
activeTab | 選項(xiàng)卡當(dāng)前激活序列索引。 | Number | {{activeTab}} |
elevator | 電梯組件時需要指定。 | Boolean | false |
capsule
為 true 時,tab 選項(xiàng)卡顯示為膠囊模式。hasSubTitle
為 true 時,tabs 選項(xiàng)卡會顯示帶有描述的模式,但如果 tabs 數(shù)據(jù)中的 subTitle
為空,將不會顯示描述文案。number
值顯示數(shù)字。elevator
為 true
,則為電梯組件,<tab-content>
將豎排展示,自動計算每個 <tab-content>
的坐標(biāo)后,根據(jù)索引值定位指向;
elevator
模式中,this.data.floorNumber
將會根據(jù)所有 tab-content 的高度計算所得,無需修改;onPageScroll({ scrollTop }) {}
,具體可參考代碼示例中的代碼;tabsName
是為了能更好獲取到當(dāng)前 tab 選項(xiàng)卡的名稱進(jìn)行識別,值需要與 activeTab
的 key 值相同,如:activeTab="{{activeTab2}}"
,那么 tabsName="activeTab2"
。showBadge
為 true 時,number
中的值會以 badge
形式展示,并且不受 tab 類型影響,否則 number
中的值僅在膠囊 tab 中有效;
badge: { arrow: true, stroke: true, }
控制 badge 的樣式;arrow
可展示有箭頭的 badge,箭頭僅有左方向;stroke
可展示有描邊的 badge;elevatorTop
的值為 px 單位時,elevatorContentTop
距離頂部的高度則是 elevatorTop
+ tab 選項(xiàng)卡的高度;plusImg
的值為空時才可以使用 plusIcon
、 plusIconSize
以及 plusIconColor
這三個值;plusImg
的值為空時, plusImgWidth
和 plusImgHeight
設(shè)置將無效;plusIcon
為空, plusIconSize
和 plusIconColor
修改的是默認(rèn)的 icon 大小以及顏色;tabs 組件內(nèi)容區(qū)域高度是否能夠自適應(yīng),需要注意 swipeable 的值:
swipeable='{{true}}'
:內(nèi)容區(qū)域可滑動,且相對應(yīng) tab 標(biāo)簽卡;但內(nèi)容區(qū)域高度為固定值,需要在 acss 文件中設(shè)定 height 值,否則高度會異常;如需要自適應(yīng)高度的話,那么請使用 tabContentHeight
重設(shè)高度,實(shí)現(xiàn)方法:點(diǎn)擊不同 tab 標(biāo)簽卡,獲取當(dāng)前 tab-content
的高度,賦值給 tabContentHeight
即可;<tab-content>
中無 tabId
和 activeTab
兩個屬性,此時的高度將以所有內(nèi)容區(qū)域中最高的為基準(zhǔn)展示;<tab-content>
中包含 tabId
和 activeTab
兩個屬性時 tabId="{{index}}" activeTab="{{activeTab}}"
,內(nèi)容區(qū)域所展示的高度將會隨著不同模塊的高度而改變。Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: