Vant使用经验谈

让Tab组件的content局部滚动

实现局部滚动有一种非常简单的方法,就是利用父元素display: flex; flex-direction: column;,加上某个子元素的flex: 1; overflow: auto;,就可以让该子元素的内容局部滚动起来,有时候为了让其他子元素不被挤扁,还需要给其他子元素设置flex: 0;。但是,这个方案如果套用在Tab组件上,就有点麻烦:

组件代码举例:

<van-tabs v-model="active" class="tabs-container">
  <van-tab title="标签 1" class="tabs-content">内容 1</van-tab>
  <van-tab title="标签 2" class="tabs-content">内容 2</van-tab>
  <van-tab title="标签 3" class="tabs-content">内容 3</van-tab>
  <van-tab title="标签 4" class="tabs-content">内容 4</van-tab>
</van-tabs>

生成的DOM是:

image.png

可以看出,我希望给van-tabs__wrapvan-tabs__content设class,但是我的class却设不到它俩身上。

解决方案:使用这段scss,并且给组件根元素加上class="flex-van-tabs"即可。

<style lang="scss">
.flex-van-tabs {
  display: flex;
  flex-direction: column;

  > .van-tabs__wrap {
    flex: none;
  }
  > .van-tabs__content {
    flex: 1;
    overflow: auto;
  }
}
</style>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。