问题:

1.微信小程序ios中如果自定义导航栏取消了橡皮筋效果页面无法滑动

2.如果不取消,页面往下拉时会与顶部有一大片空白(安卓本身scrollTop不会有负值)

3.fixed之后absolute,页面移动时候会有fixed抖动现象 如下图

<!--下拉刷新-->
<view style="position:fixed; top:{{statusBarHeight + NavHeigth}}px;z-index: -99;"><view style="height: {{scroll_pulldownY}}px;width: 100vw; text-align:center;border:1px solid gray;"><text class="pulldown"style="height: {{scroll_pulldownY}}px;line-height: {{scroll_pulldownY}}px;background-color: blue;">{{refresh}}</text></view>
</view>

解决办法:

外面多加一层fixed固定 有移动距离scroll_pulldownY

fixed是相对父元素定位的

<!--下拉刷新-->
<view style="position:fixed; top:{{statusBarHeight + NavHeight - 5}}px;z-index: -50;"><view style="position:fixed; top:{{statusBarHeight + NavHeigth}}px;z-index: -99;"><view style="height: {{scroll_pulldownY}}px;width: 100vw; text-align:center;border:1px solid gray;"><text class="pulldown"style="height: {{scroll_pulldownY}}px;line-height: {{scroll_pulldownY}}px;background-color: blue;">{{refresh}}</text></view></view>
</view>

列表的top也要添加一个移动距离view_pulldownY

<!--列表-->
<view id="scroll_ttt" style="top:{{statusBarHeight + NavHeight + 10 + view_pulldownY}}px;position: relative;height: auto;" class="test"bindtouchstart="st" bindtouchend="en" bindtouchmove="mo"><view class="scroll" wx:for="{{list_note}}" wx:key="_id" data-index="{{index}}"><view class="v1-"><view class="v2"><text>{{item.task_num}}</text></view></view></view>
</view>

效果如下图


JS文件设置移动距离:

Page页面中要用watch来监控滚动条的scrollTop距离

    onPageScroll(ev) {this.watch.look_scroll(ev.scrollTop, this)},watch: {look_scroll(ev, obj) {if (flag == false) {flag = true //记录第一下flag_num = ev //第一下的位置if (flag_num >= 0) {//滚动条往下走 不会导致下拉加载//下拉加载滚动条是往上走的flag = false //恢复flag_num = 0return;}} //else {flag_num = ev//flag为真的时候代表滚动条往上走了 第一下的位置是负数if (ev == 0) {//最终回弹了flag = false //重设flag_num = 0}}},scroll_start() {//console.log("start")},scroll_move() {//console.log("move")},scroll_end() {//console.log("end")}},

1.st函数记录触摸开始的位置

    st(e) {if (flag_num < 0) {this.setData({starty: flag_num})}},

2.en函数记录触摸结束的位置并计算changeY(与开始位置的相隔距离)

注意:

changeY要取反(越往下拉scrollY越接近负无穷)

    en(e) {//ios设置这个this.watch.scroll_end()var changeY = -(flag_num - this.data.starty)if (changeY >= this.data.scroll_set) {this.setData({refresh: "正在刷新……",scroll_pulldownY: this.data.scroll_set,view_pulldownY: this.data.scroll_set})//延迟2svar that = thissetTimeout(function() {that.onPullDownRefresh()that.setData({refresh: "下拉刷新",scroll_pulldownY: 0,view_pulldownY: 0})}, 2000)} //else {this.setData({refresh: "下拉刷新",scroll_pulldownY: 0,view_pulldownY: 0})}},

3.mo函数计算移动过程中不断变化的相隔距离

注意:

1.如果changeY大于0 则代表往上拉了 这个changeY就没有意义了

往上拉的时候onPageScroll得到的值是为正的

因为只有flag_num小于0(滚动条在最顶部往下拉的时候才为负值)才设置starty

2.页面与顶部会有间隔的空白 滚动组件与页面也会有同样的间隔距离

所以scroll_pulldownY要为两倍

而组件只与页面有间隔距离 只为1倍

    mo(e) {//ios this.watch.scroll_move()var changeY = -(flag_num - this.data.starty)if (changeY < 0) {changeY = 0} //else if (changeY <= this.data.scroll_set) {this.setData({refresh: "下拉刷新"})} //else if (changeY > this.data.scroll_set) {this.setData({refresh: "松手试试刷新"})}this.setData({scroll_pulldownY: changeY * 2, //ios的要两倍view_pulldownY: changeY})},

微信小程序 ios自定义导航栏 下拉“橡皮筋” 效果相关推荐

  1. 微信小程序的自定义导航栏

    微信小程序的导航栏主要分为两个部分:状态栏和标题栏. 关于微信小程序的自定义导航栏也就是通过微信小程序官方提供的API接口来算出状态栏和标题栏的高度. 注意获取到的数值单位都是px. 首先要开启自定义 ...

  2. 微信小程序,自定义导航栏组件

    微信小程序,自定义导航栏组件,可兼容iPhone 11及以上留海屏显示,关于参数获取设置参照微信小程序-收藏_羽筠的博客-CSDN博客 可定义设置的内容如下: 文字及返回箭头颜色 背景图片(优先级高于 ...

  3. 微信小程序仿系统自带下拉刷新效果

    微信小程序仿系统自带下拉刷新效果 前言 思路分析 实现 尾巴 前言 看到标题也许有人会说:系统不是已经自带了下拉刷新,你去仿照系统的下拉刷新是不是吃多了没事干?其实真相并不是这样的.在微信小程序手把手 ...

  4. 【微信小程序】 自定义导航栏(navigationStyle=custom)

    前言 基础库 2.12.0 开发者工具 1.03.2008270 自定义导航栏 navigationStyle 可用的值为:default 默认样式.custom 自定义导航栏(只保留右上角胶囊按钮) ...

  5. 微信小程序之顶部导航栏(选项卡)实例 —— 微信小程序实战系列(1)

    需求:顶部导航栏 效果图: wxml: <!--导航条--> <view class="navbar"><text wx:for="{{na ...

  6. 微信小程序标题栏和导航栏的设置 —— 微信小程序教程系列(7)

    设置标题栏 标题栏window 在app.json文件里面,通过window对象里面的属性进行设置 示例: app.json: 运行: 设置导航栏 导航栏TabBar 如果我们的小程序是一个多 tab ...

  7. 微信小程序——沉浸式导航栏实现

    微信小程序--沉浸式导航栏实现 微信小程序中导航栏一般来说是默认的展示标题等等,可以做的样式改变仅仅能通过配置一些官方提供的属性来实现.除此之外小程序还提供了navigationStyle这个属性可以 ...

  8. 微信小程序--动态设置导航栏颜色

    微信小程序--动态设置导航栏颜色 既然要动态设置导航栏颜色,估计 自定义导航栏 也跑不了 关于动态设置导航栏颜色,微信小程序官方文档给出了一个API: wx.setNavigationBarColor ...

  9. 微信小程序制作顶部导航栏

    1问题描述 使用微信小程序开发者工具制作顶部导航栏. 2算法描述 首先就是对微信小程序开发者工具的配置,官网搜索后进入,选择稳定版,Windows64位下载. 然后点开开发者工具,选择小程序,点击图片 ...

最新文章

  1. 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC
  2. css 动态rem_【面试题】CSS知识点整理(附答案)
  3. winform 窗口 属性
  4. Asp.Net细节性问题技巧精萃(转载)
  5. WKWebView之cookie请求
  6. 8-1日复习 模板函数 模板类
  7. Kafka分区分配策略(2)——RoundRobinAssignor和StickyAssignor
  8. 我在 Go 圈儿里的几位老朋友
  9. spark集群详细搭建过程及遇到的问题解决(三)
  10. require.js学习记录
  11. c 语言栈,C语言栈
  12. 121 Best Time to Buy and Sell Stock
  13. JAVA可不可以编写应用程序_编写一个java应用程序
  14. 企业实战(Jenkins+GitLab+SonarQube)_01_Jenkins下载
  15. 浅析SQL SERVER执行计划中的各类怪相
  16. 【转】.Net 架构图
  17. Java编程思想精彩评注分享之二
  18. 异数OS 织梦师-Xnign(四)-- 挑战100倍速Nginx,脚踩F5硬件负载均衡
  19. Linux服务器 mysql5.7安装流程
  20. 服务器不能读取无线网卡,无线网卡无法获得IP地址的解决方案

热门文章

  1. python爬虫项目实战教学视频_('[Python爬虫]---Python爬虫进阶项目实战视频',)
  2. word在点击关闭后会弹出来一个提问框长安之星车长多少米,必须回答正确才能关闭
  3. 如果华为手机升级EMUI10后,电池耗电很快!要记得调整这3个设置
  4. 如果使用华为手机,记得要开启这3个省电功能,能有效增加续航时间
  5. android引导页自动轮播,Android使用ViewPager实现自动轮播
  6. SpringBoot集成XxlJob分布式任务调度中心(超详细之手把手教学)
  7. 分享一些Android集成融云音视频通话遇到的问题
  8. java连接mysql数据库时出现乱码_java连接mysql数据库乱码怎么办
  9. JavaScript中各种选择器
  10. java最新jdk版本_java版本和jdk版本