小程序 类似锚点跳转,滚动

小程序 类似锚点跳转的做法,

这样的做法,只适合导航条放在最顶部,或者固定在左右两边;
前阵子,老大要把这个需求放在大概屏幕三分之二的位置,上面是产品图片,价格和介绍;
做出来后,电脑上没啥问题,(其实有),只是不明显,在手机上调试的时候,怪乖的,一会整个页面在滚动,一会只有导航条下面在滚动,很不好,后来就改成了tabber切换的效果
下面直接上:
网上有很多头部导航是通过数组遍历的
但是我们的导航有时候很简单两个或者三个的时候,调用data的数据渲染有点麻烦,直接写死,比较简洁
可以切换也可以上下滚动,导航栏会固定不动
在这里插入图片描述
xhtml:

<view class="navigate">
  <view bindtap="scrollTap" data-hash="one" class="tip {{to_Id=='one' ? 'checked_tip':''}}">
    商品详情</view>
  <view bindtap="scrollTap" data-hash="two" class="tip {{to_Id=='two' ? 'checked_tip':''}}">
    评价</view>
  <view bindtap="scrollTap" data-hash="three" class="tip {{to_Id=='three' ? 'checked_tip':''}}">
    关于我们</view>
</view>
<scroll-view style="height:{{winHeight}}" scroll-into-view="{{to_Id}}" scroll-y="true">
  <view id="one">
    <view>商品详情 </view>
    <view> 商品详情 </view>
   
    <view> 商品详情 11</view>
    <view> 商品详情1111111111111111 </view>
     <!-- ....篇幅所限,太多不好展示,自己多复制一下,去测试就知道了.............. -->
  </view>
  <view id="two">
    <view>商品评价22</view>
    <view>商品评价22</view>
    <view>商品评价22</view>
    <view>商品评价22</view>
 <!-- .....篇幅所限,太多不好展示,自己多复制一下,去测试就知道了.... -->
    <view>商品评价</view>
    <view>商品评价</view>
    <view>商品评价22222222222222</view>
  </view>
  <view id="three">
    <view>关于我们333</view>
    <view>关于我们333</view>
    <view>关于我们333333</view>
 <!-- ........篇幅所限,太多不好展示,自己多复制一下,去测试就知道了..... -->
  </view>
</scroll-view>

js

Page({
  data: {
    winHeight: '100%',
    to_Id: 'one', //锚点跳转的ID
  },
  onLoad() {
    let that = this;
    wx.getSystemInfo({
      success: function(res) {
        console.log(res)
        //屏幕的宽度/屏幕的高度 = 微信固定宽度(750)/微信高度
        that.setData({
          // 80是上面导航条的高度
          winHeight: res.windowHeight - (res.windowWidth * 80 / 750) + 'px'
        })
      }
    });
  },
  scrollTap: function(e) {
    this.setData({
      to_Id: e.target.dataset.hash
    })
  }
})

层叠样式wxss:

page {
  height: 100%; 
  /* //类似于 pc端里面的html body height: 100%; */
}
.navigate {
  background: #fff;
  height: 80rpx;
  display: flex;
  justify-content: space-around;
}

.tip {
  font-size: 27rpx;
  width: 33.33%;
  height: 80rpx;
  line-height: 80rpx;
  text-align: center;
   background: #666;
  color: #f5f5f5;
  border-top: 1px solid #666;
}
/* 点击的添加class上的css样式 */
.checked_tip {
  background: rgb(223, 223, 223);
  color: #201d1d;
}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值