【小程序】固定导航栏在顶部,跟随下滑

一、效果演示

在这里插入图片描述

二、实现原理

在js中有一个函数是用来监听页面的滑动的,这个函数叫做onPageScroll,下面是我从官网上面查到的有关信息
在这里插入图片描述
我们可以利用这个函数的功能,获取页面在垂直方向已经滚动的距离,当滚动的距离达到一定数值时,我们通过js来改变样式,让原有的模块固定住不再移动

三、相关代码

1.说明(一定要看)

我把整个页面的代码全部拷过来了,wxml中最上面的部分是导航栏的
wxss中最下面的两个样式是对应的样式
js中的onPagescroll是关键代码

2.相关代码

1.wxml

中间很多空view是为了流出空间可以用来下滑
里面的图片需要自己导入自己的图片

<view class="{{scrollTop>145 ? 'topnavFixed' : 'topnavAbsolute'}}" >
  <view class="top_Navigation">
    <view class="Nav_tiems" wx:for="{{Navigation}}">
        <text class="Nav_text">{{item}}</text>
    </view>
</view>
</view>

<view class="top_serach">
     <view class="search_border">
          <image class="search_icon" src="/images/01.jpg"></image>
          <input class="input" placeholder="请输入文字"></input>
     </view>
     <image class="Create_image" src="/images/01.jpg"></image>
</view>

<view class="container">
 
</view>

<view class="container">
 
</view>
<view class="container">
 
</view>
<view class="container">
 
</view>
<view class="container">
 
</view>
<view class="container">
 
</view>

<view class="container">
 
</view>


<view class="top_Navigation">
    <view class="Nav_tiems" wx:for="{{Navigation}}">
        <text class="Nav_text">{{item}}</text>
    </view>
</view>


2.wxss

/* pages/gzj/gzj.wxss */
.search_border{
   width: 85%;
   height: 80rpx;
   border-radius: 25rpx;
   display: flex;
   align-items: center;
   background: rgb(220, 221, 218);
}

.top_serach{
  width: 100%;
  margin-top: 10rpx;
  display: flex;
  flex-direction: row;
}

.input{
  width: 600rpx;
  margin-left: 20rpx;
}

.search_icon{
  margin-left: 30rpx;
  width: 60rpx;
  height: 60rpx;
}

.top_Navigation{
  width: 100%;
  height: 100rpx;
  background: cadetblue;
  display: flex;
  flex-direction: row;
  justify-content: space-around;
}

.Nav_tiems{
  width: 25%;
  height: 100rpx;
  background: cornflowerblue;
}

.Nav_text{
  height: 100rpx;
  display: flex;
  align-items: center;
  justify-content: center;
}

.Create_image{
  width: 75rpx;
  height: 75rpx;
  display: flex;
  align-items: center;
  margin-left: 20rpx;
}

.topnavFixed{
  border-top-left-radius:20rpx;
  border-top-right-radius:20rpx;
  position:fixed;width:100%;height:100rpx; top:0rpx;background:white;z-index: 1;
  }
  .topnavAbsolute{
  border-top-left-radius:20rpx;
  border-top-right-radius:20rpx;
  position:absolute;width:100%;height:100rpx; top:340rpx//top值会影响组件到屏幕顶端的距离,以及影响下拉时造成的闪动 适当调小后可以解决闪动问题 ;background:white;z-index: 1;
  }

3.js

// pages/gzj/gzj.js
Page({

 
  data: {
    Navigation:[
      "提出问题",
      "解答问题",
      "吸收经验"
    ]

  },

  onPageScroll: function (e) {//监听页面滚动
    this.setData({
      scrollTop: e.scrollTop
    })
  },

})

本文章收录于我的小程序目录中,点击我的主页即可看见我的小程序目录,里面还有更多有关小程序的内容且不断更新!可以的话点个赞吧!

在Flutter中,通过隐藏导航栏,可以给用户提供更大的展示空间和更好的用户体验。实现下滑隐藏导航栏的功能可以按照以下步骤进行: 1. 安装依赖:在pubspec.yaml文件中添加"flutter_staggered_animations"和"provider"依赖,并运行"flutter packages get"命令进行安装。 2. 创建工具类:创建一个全局工具类,用于管理导航栏的显示与隐藏状态。可以使用"provider"库,通过ChangeNotifier类和Provider类进行全局状态管理。 3. 监听滑动:在滑动的组件中使用ScrollController类来监听滑动事件。可以在页面的"build"方法中创建一个ScrollController对象,并在dispose方法中释放掉该对象。 4. 监听滑动位置:通过设置ScrollController的addListener方法,在滑动过程中不断更新导航栏的状态。可以获取滑动位置的信息,并进行相应的判断和操作。 5. 设置导航栏动画:根据滑动位置的变化,使用Tween和AnimationController来实现导航栏的动画效果。可以设置动画的开始和结束值,以及动画的时间和曲线。 6. 更新导航栏状态:通过工具类中的状态管理,在滑动位置变化时,更新导航栏的显示与隐藏状态。可以使用Provider.of方法获取全局状态对象,并调用相应的方法来更新状态。 7. 页面布局调整:根据导航栏的显示与隐藏状态,调整页面的布局。可以使用Stack、Positioned或者AnimatedContainer等组件来实现布局的动态调整。 通过上述步骤,就可以实现在Flutter中下滑隐藏导航栏的功能。具体的实现方式可能因项目需求而异,可以根据具体情况进行相应的调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值