垂直导航 VerticalNavigation

引入组件

{
  "usingComponents": {
    "ac-vertical-navigation": "@csr/awesome_components/components/vertical-navigation/vertical-navigation"
  }
}
<ac-vertical-navigation
  scroll-height="{{scrollHeight}}"
  bindupdateNav="updateActiveNav" activeIndex="{{navIndex}}" nav-length="{{navs.length}}" content-item-id="content-" nav-item-selector=".ac-nav-item">
  <view slot="nav">
    <view
      id="nav-{{index}}" bindtap="onTapNav" data-index="{{index}}"
      wx:for="{{navs}}" wx:key="{{index}}" class="ac-nav-item {{navIndex === index ? 'ac-nav-item-active' : ''}}" >
      {{item}}
    </view>
  </view>
  <view slot="content" class="ac-nav-scroll-right">
    <view
      wx:for="{{contents}}" wx:key="{{index}}"
      id="content-{{index}}" class="ac-nav-scroll-right-item scroll-item">
      {{item}}
    </view>
  </view>
</ac-vertical-navigation>
Page({
  data: {
    navIndex: 0,
    navs: [],
    contents: [],
    scrollHeight: 600
  },
  onShow() {
    const navs = Array.from({length: 25}, (v, i) => `nav-${i}`)
    const contents = Array.from({length: 25}, (v, i) => `content-${i}`)
    this.setData({
      navs,
      contents
    })
  },
  onTapNav({currentTarget: {dataset: {index}}}) {
    this.setData({
      navIndex: index
    })
  },
  updateActiveNav(e) {
    this.setData({
      navIndex: e.detail
    })
  }
})
@import '../../miniprogram_npm/@csr/awesome_components/wxss/vertical-navigation/vertical-navigation.wxss';

API

属性 类型 说明 默认值
scrollHeight String 导航高度,需要传单位 100vh
nav-length Number 左边导航数组的长度
content-item-id String 右边内容区包裹内容元素id,id的格式为xxx-当前展示面板的下标(index),例如第一个导航对应的面板就是'xxx-0',不用传递# content-
nav-item-selector String 导航区导航元素的选择器,用于确定每个导航的高度,需要传递.或者# .ac-nav-item
activeIndex Number 激活的导航下标(index) 0

事件

事件名 说明 参数
updateNav 当右边区域滚动到对应左边区域中的导航时,触发。event.detail = index event: Event

slot

名称 说明
nav 左边可滚动内容
content 右边可滚动内容

wxss

名称 说明
ac-nav-item 导航条的样式
ac-nav-item-active 导航条激活的样式
ac-nav-item-active 导航条激活的样式
ac-nav-scroll-right 右边整个可滚动区域的样式
ac-nav-scroll-right-item 右边可滚动区域中每一项包裹内容元素的样式

TIP

左右两边联动的功能需要组件使用者监听updateNav事件,然后在使用组件的页面改动当前激活的导航下标,该组件提供了一套默认的css样式,需要使用者自行导入。