H5横向滑动菜单

H5横向滑动菜单

最近处理一个需求,产品需要做一个顶部横向的菜单栏,类似于今日头条首页的菜单栏
先来看看效果:
页面滚动前效果
页面滚动后效果图

构思

首先说说我的思路吧 ,通过设置一个横向的导航栏,滑动到顶部后悬浮,然后滑下来后再继续随着页面滑动。

实现过程

1、设置导航栏,这里我们需要一个三层div嵌套的导航

导航栏核心代码

<div class="nav" ref="nav">
    <div class="fixednav" ref="fixednav">
      <div class="fixednavcontent" ref="fixednavcontent">
        <p v-for="item,index of items" class="tabtitle" :class="{selecttab:active===item}" @click="changeTab(item)">{
  {item}}</p>
      </div>
    </div>
  </div>

导航栏样式

.nav {
   
  top: 0;
  height: 90px;
  width: 100%;
  background: white;
  z-index: 1;
  border-bottom: solid 1PX #dbdbdb;
  .fixednav {
   
    overflow-x: scroll;
    .fixednavcontent {
   
      display: flex;
      float: left;
    }
  }
  .tabtitle {
   
    width: 180px;
    font-size: 28px;
    line-height: 88px;
    text-align: center;
    height: 88px;
    border: none;
    box-shadow: none;
    color: #bbb;
  }
  .selecttab {
   
    position: relative;
    color: #4FBF86;
    &::after {
   
      position: absolute;
      content: " ";
      bottom: 0px;
      left: 50%;
      width: 40px;
      height: 8px;
      border-radius: 4px;
      background: #00a86a;
      position: absolute;
      transform: translateX(-50%);
    }
  }
}

2、控制菜单栏滑动到页面头部时固定

toScroll() {
   
      if (this.$refs.headcontent && this.$refs.headcontent.getBoundingClientRect().bottom < 0) {
   
        this.$refs.nav.style.position = 'fixed';
      } else {
   
        this.$refs.nav.style.position = 'relative';
      }
    }

说明一下,这里的this.$refs.headcontent是导航上部分内容,这里取它的下边沿距离页面顶部的距离,来给导航栏设置position为相对定位还是fixed;

3、控制tab切换这里设置active来标记导航当前选中的哪一个

 changeTab(tab) {
   
      if (tab != 
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值