html代码

  1. <view class="VerticalBox">
  2. <scroll-view class="VerticalNav nav" scroll-y scroll-with-animation scroll-top="{{VerticalNavTop}}" style="height:calc(100vh)"><!-- 如果顶部有内容100vh-顶部高rpx -->
  3. <view class="cu-item {{index==TabCur?'text-coffee cur':''}}" wx:for="{{publicitylist}}" wx:key="index" bindtap='tabSelect' data-id="{{index}}">
  4. {{item.theme}}
  5. </view>
  6. </scroll-view>
  7. <scroll-view class="VerticalMain" scroll-y scroll-with-animation style="height:calc(100vh)" scroll-into-view="main-{{MainCur}}" bindscroll="VerticalMain"><!-- 如果顶部有内容100vh-顶部高rpx -->
  8. <view class="padding-lr-sm padding-top-sm" wx:for="{{publicitylist}}" wx:for-item="themelist" wx:key="index" id="main-{{index}}">
  9. <view class="text-black shadow bg-white">
  10. <view class='padding-sm solid-bottom bg-white text-coffee text-xl text-bold'>
  11. <view class='action'>
  12. {{themelist.theme}} </view>
  13. </view>
  14. <block wx:for="{{themelist.list}}" wx:for-item="minglist" wx:key="index">
  15. <view class='padding-sm bg-white text-black solid-bottom' bindtap="goarticle">
  16. <view class="text-black" style="font-size: 30rpx;">{{minglist.drugname}}</view>
  17. <view class="text-doublecut margin-tb-xs">{{minglist.title}}</view>
  18. <view class="text-sm text-grey bg-white"><block wx:if="{{minglist.fullname}}">{{minglist.fullname}}|</block>名医名方</view>
  19. </view>
  20. </block>
  21. </view>
  22. </view>
  23. <view style="padding-top: 400rpx;"></view>
  24. </scroll-view>
  25. </view>

js代码

  1. data: {
  2. TabCur: 0,//左边导航默认位置
  3. MainCur: 0,//右边导航默认位置
  4. VerticalNavTop: 0,//列表默认高度
  5. load: true,//右边导航滑动定位左边
  6. publicitylist:[//每个数据给个id用于右边导航给左边定位
  7. {
  8. id:0,
  9. theme:'名医名方',
  10. list:[
  11. {drugname:'1资生汤',title:'由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨123456',fullname:'王会书'},
  12. {drugname:'1资生汤2',title:'由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨123456',fullname:''},
  13. {drugname:'1资生汤3',title:'由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨123456',fullname:'王会书2'},
  14. {drugname:'1资生汤4',title:'由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨123456',fullname:'王会书2'},
  15. ]
  16. },
  17. {
  18. id:1,
  19. theme:'授课手书',
  20. list:[
  21. {drugname:'2资生汤',title:'由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨123456',fullname:'王会书'},
  22. {drugname:'2资生汤2',title:'由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨123456',fullname:'王会书2'},
  23. {drugname:'2资生汤3',title:'由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨123456',fullname:'王会书2'},
  24. {drugname:'2资生汤4',title:'由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨123456',fullname:'王会书2'},
  25. ]
  26. },
  27. {
  28. id:2,
  29. theme:'临证医案',
  30. list:[
  31. {drugname:'3资生汤',title:'由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨123456',fullname:'王会书'},
  32. {drugname:'3资生汤2',title:'由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨123456',fullname:'王会书2'},
  33. {drugname:'3资生汤3',title:'由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨123456',fullname:'王会书2'},
  34. {drugname:'3资生汤4',title:'由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨123456',fullname:'王会书2'},
  35. ]
  36. },
  37. {
  38. id:3,
  39. theme:'手书',
  40. list:[
  41. {drugname:'3资生汤',title:'由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨123456',fullname:'王会书'},
  42. {drugname:'3资生汤2',title:'由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨123456',fullname:'王会书2'},
  43. {drugname:'3资生汤3',title:'由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨123456',fullname:'王会书2'},
  44. {drugname:'3资生汤4',title:'由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨123456',fullname:'王会书2'},
  45. ]
  46. },
  47. ],
  48. },
  49. tabSelect(e) {//左边导航按钮
  50. this.setData({
  51. TabCur: e.currentTarget.dataset.id,
  52. MainCur: e.currentTarget.dataset.id,
  53. VerticalNavTop: (e.currentTarget.dataset.id - 1) * 50//左边导航内容距离顶部位置
  54. })
  55. },
  56. VerticalMain(e) {//右边导航滑动事件
  57. let that = this;
  58. let list = this.data.publicitylist;
  59. let tabHeight = 0;
  60. if (this.data.load) {
  61. for (let i = 0; i < list.length; i++) {
  62. let view = wx.createSelectorQuery().select("#main-" + list[i].id);
  63. view.fields({
  64. size: true
  65. }, res => {
  66. list[i].top = tabHeight;
  67. tabHeight = tabHeight + res.height;
  68. list[i].bottom = tabHeight;
  69. }).exec();
  70. }
  71. that.setData({
  72. load: false,
  73. publicitylist: list
  74. })
  75. }
  76. let scrollTop = e.detail.scrollTop + 20;
  77. for (let i = 0; i < list.length; i++) {
  78. if (scrollTop > list[i].top && scrollTop < list[i].bottom) {console.log();
  79. that.setData({
  80. VerticalNavTop: (list[i].id - 1) * 50,//左边导航内容距离顶部位置
  81. TabCur: list[i].id
  82. })
  83. return false
  84. }
  85. }
  86. },

css代码

  1. /* 下面是左边的导航代码,右边的导航内容可以直接写 */
  2. .VerticalNav.nav {
  3. width: 200rpx;
  4. white-space: initial;
  5. }
  6. .VerticalNav.nav .cu-item {
  7. width: 100%;
  8. text-align: center;
  9. background-color: #fff;
  10. margin: 0;
  11. border: none;
  12. height: 100rpx;
  13. line-height: 100rpx;
  14. position: relative;
  15. }
  16. .VerticalNav.nav .cu-item.cur {
  17. background-color: #f1f1f1;
  18. }
  19. .VerticalNav.nav .cu-item.cur::after {
  20. content: "";
  21. width: 8rpx;
  22. height: 30rpx;
  23. border-radius: 10rpx 0 0 10rpx;
  24. position: absolute;
  25. background-color: currentColor;
  26. top: 0;
  27. right: 0rpx;
  28. bottom: 0;
  29. margin: auto;
  30. }
  31. .VerticalBox{
  32. display: flex;
  33. }
  34. .VerticalMain{
  35. background-color: #f1f1f1;
  36. }

更多相关文章

  1. 安全星球|盘点最新国内外网络安全资讯(5月17日)
  2. 阿里云盘进场,安全星球何以成为云盘界的一股清流
  3. 安全星球:为什么企业都开始用SaaS了?
  4. 安全星球将成为企业办公必备的工具
  5. spark面试该准备点啥
  6. 安全星球企业云盘:释放数据价值,推动企业数字化转型
  7. 欢迎加入Java和Android架构知识星球
  8. 欢迎加入Java和Android架构社群
  9. 移动段开发前景真的凉了么?

随机推荐

  1. TextView英文自动换行解决方法
  2. android如何设置全屏模式
  3. Fedora 15下使用android ndk 编译ffmepg0
  4. Android添加背景音乐的方法
  5. Android自定义标题栏
  6. android 开发 时间选择器TimePicker的使
  7. Android studio 串口通信(动态获取串口)
  8. Android 使用CountDownTimer实现倒计时
  9. Android基于Handler实现倒计时
  10. android安装后控件拖不动问题解答