微信小程序 ios自定义导航栏 下拉“橡皮筋” 效果
问题:
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自定义导航栏 下拉“橡皮筋” 效果相关推荐
- 微信小程序的自定义导航栏
微信小程序的导航栏主要分为两个部分:状态栏和标题栏. 关于微信小程序的自定义导航栏也就是通过微信小程序官方提供的API接口来算出状态栏和标题栏的高度. 注意获取到的数值单位都是px. 首先要开启自定义 ...
- 微信小程序,自定义导航栏组件
微信小程序,自定义导航栏组件,可兼容iPhone 11及以上留海屏显示,关于参数获取设置参照微信小程序-收藏_羽筠的博客-CSDN博客 可定义设置的内容如下: 文字及返回箭头颜色 背景图片(优先级高于 ...
- 微信小程序仿系统自带下拉刷新效果
微信小程序仿系统自带下拉刷新效果 前言 思路分析 实现 尾巴 前言 看到标题也许有人会说:系统不是已经自带了下拉刷新,你去仿照系统的下拉刷新是不是吃多了没事干?其实真相并不是这样的.在微信小程序手把手 ...
- 【微信小程序】 自定义导航栏(navigationStyle=custom)
前言 基础库 2.12.0 开发者工具 1.03.2008270 自定义导航栏 navigationStyle 可用的值为:default 默认样式.custom 自定义导航栏(只保留右上角胶囊按钮) ...
- 微信小程序之顶部导航栏(选项卡)实例 —— 微信小程序实战系列(1)
需求:顶部导航栏 效果图: wxml: <!--导航条--> <view class="navbar"><text wx:for="{{na ...
- 微信小程序标题栏和导航栏的设置 —— 微信小程序教程系列(7)
设置标题栏 标题栏window 在app.json文件里面,通过window对象里面的属性进行设置 示例: app.json: 运行: 设置导航栏 导航栏TabBar 如果我们的小程序是一个多 tab ...
- 微信小程序——沉浸式导航栏实现
微信小程序--沉浸式导航栏实现 微信小程序中导航栏一般来说是默认的展示标题等等,可以做的样式改变仅仅能通过配置一些官方提供的属性来实现.除此之外小程序还提供了navigationStyle这个属性可以 ...
- 微信小程序--动态设置导航栏颜色
微信小程序--动态设置导航栏颜色 既然要动态设置导航栏颜色,估计 自定义导航栏 也跑不了 关于动态设置导航栏颜色,微信小程序官方文档给出了一个API: wx.setNavigationBarColor ...
- 微信小程序制作顶部导航栏
1问题描述 使用微信小程序开发者工具制作顶部导航栏. 2算法描述 首先就是对微信小程序开发者工具的配置,官网搜索后进入,选择稳定版,Windows64位下载. 然后点开开发者工具,选择小程序,点击图片 ...
最新文章
- 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC
- css 动态rem_【面试题】CSS知识点整理(附答案)
- winform 窗口 属性
- Asp.Net细节性问题技巧精萃(转载)
- WKWebView之cookie请求
- 8-1日复习 模板函数 模板类
- Kafka分区分配策略(2)——RoundRobinAssignor和StickyAssignor
- 我在 Go 圈儿里的几位老朋友
- spark集群详细搭建过程及遇到的问题解决(三)
- require.js学习记录
- c 语言栈,C语言栈
- 121 Best Time to Buy and Sell Stock
- JAVA可不可以编写应用程序_编写一个java应用程序
- 企业实战(Jenkins+GitLab+SonarQube)_01_Jenkins下载
- 浅析SQL SERVER执行计划中的各类怪相
- 【转】.Net 架构图
- Java编程思想精彩评注分享之二
- 异数OS 织梦师-Xnign(四)-- 挑战100倍速Nginx,脚踩F5硬件负载均衡
- Linux服务器 mysql5.7安装流程
- 服务器不能读取无线网卡,无线网卡无法获得IP地址的解决方案
热门文章
- python爬虫项目实战教学视频_('[Python爬虫]---Python爬虫进阶项目实战视频',)
- word在点击关闭后会弹出来一个提问框长安之星车长多少米,必须回答正确才能关闭
- 如果华为手机升级EMUI10后,电池耗电很快!要记得调整这3个设置
- 如果使用华为手机,记得要开启这3个省电功能,能有效增加续航时间
- android引导页自动轮播,Android使用ViewPager实现自动轮播
- SpringBoot集成XxlJob分布式任务调度中心(超详细之手把手教学)
- 分享一些Android集成融云音视频通话遇到的问题
- java连接mysql数据库时出现乱码_java连接mysql数据库乱码怎么办
- JavaScript中各种选择器
- java最新jdk版本_java版本和jdk版本