Onsen UI组件实现下拉刷新和固定定位
前言:最近用 Vue + Cordova + Onsen
UI开发APP的过程中,在页面上遇到两个问题。
(1)没法实现正常的类似于PC端页面中的固定定位,像position:fixed
,这种css属性在app中是会经常出现问题的。
(2)v-ons-pull-hook
不论写在页面哪个位置,都只能在 v-ons-tool-bar
下生效,导致我们无法在页面中间或者底部的固定div内下拉刷新。
固定定位
- 解决思路:
访问 Onsen UI的 v-ons-page,找到demo页面,f12查看v-ons-tool-bar
元素的样式,它如何实现固定定位,你就如何实现。简化demo代码结构如下:
<v-ons-page> <v-ons-toolbar> <!-- 略 --></v-ons-toolbar><div class="content"> <!-- 略 --></div></v-ons-page>
通过调试台,看到代码被编译成这样子,右边为每个元素对应的主要css,这些css起到了页面布局的关键作用(头部固定层级最高,背景和内容区域重叠,但是内容区域能够向下滑动,从而露出背景,可以显示刷新):
<ons-page> <ons-toolbar class="toobar"> <!-- position:absolute;z-index:10000 --> <!-- 略 --></ons-toolbar><div class="page__background"> <!-- position:absolute;top:44px; --> <div class="content page__content"> <!-- position:absolute;top:44px;overflow:auto --><!-- 略 --></div></ons-page>
- 实现
<v-ons-page> <v-ons-toolbar> <!-- 略 --></v-ons-toolbar><div style="position:absolute;z-index:10000;
height:50px;top:44px">固定定位</div><div class="content" style="top:94px"> <!-- 94px为toolbar的高度加固定定位div的高度 --> <!-- 略 --></div></v-ons-page>
下拉刷新
这次切到 v-ons-pull-hook demo页面,简化demo代码如下:
<v-ons-page><v-ons-toolbar><!-- 略 --></v-ons-toolbar><v-ons-pull-hook> <!-- position:relative --><span> Pull to refresh </span><span> Release </span><span> Loading... </span></v-ons-pull-hook><!-- <div class="content"> --> <!-- 加不加这层div决定v-ons-pull-hook的父级元素是谁 --><v-ons-list><v-ons-list-item v-for="n in 10">list</v-ons-list-item></v-ons-list><!-- </div> --></v-ons-page>
通过控制台,我们发现v-ons-pull-hook
的height
和它的父元素的margin-top
互为相反数,即v-ons-pull-hook
的height
默认为64px,v-ons-page
的margin-top
则为-64px,并且它的css使用了相对定位。
以上现象说明它的位置和高度定义都会影响到父元素。所以,应该将v-ons-pull-hook
元素放入<div class="content"></div>
实现如下:
<v-ons-page><v-ons-toolbar><!-- 略 --></v-ons-toolbar><div style="position:absolute;z-index:10000;
height:50px;top:44px">固定定位</div><div class="content" style="top:94px"><v-ons-pull-hook> <!-- position:relative --><span> Pull to refresh </span><span> Release </span><span> Loading... </span></v-ons-pull-hook><v-ons-list><v-ons-list-item v-for="n in 10">list</v-ons-list-item></v-ons-list></div></v-ons-page>
- 总结得仓促,表达得不清楚
- 只是根据控制台猜想,正确的步骤是看源码实现
- 先实现需求,日后再补
Onsen UI组件实现下拉刷新和固定定位相关推荐
- 优化小程序中频繁下拉刷新导致的定位获取失败问题
getLocation() {return new Promise((resolve, reject) => {let that =thiswx.getLocation({type: " ...
- 在cube ui中使用better-scroll 自定义下拉刷新和上拉加载内容
在这次写项目中,偶然看到cube-ui组件库,看到这个ui组件库滚动盒子都是根据better-scroll封装的,在移动端上滑动效果体验比较不错,于是我决定使用cube-ui组件库,在使用过程中,在自 ...
- [ vant ] vue移动端下拉刷新组件
学习关键语句: vant list组件和下拉刷新 vant 下拉刷新和局部滚动冲突 写在前面 每一次 ! 我是说每一次我在使用 vant 组件库里面 list组件和下拉刷新连在一起用的时候 都会出现下 ...
- refreshcontrol 实现下拉刷新的功能
该组件实现下拉刷新的功能.不过该组件是用在ScrollView的内部的,为ScrollView添加一个下拉刷新的功能.当ScrollView的垂直方向的偏移量scrollY:0的时候,手指往下拖拽Sc ...
- react-native ListView 封装 实现 下拉刷新/上拉加载更多
1.PageListView 组件封装 src/components/PageListView/index.js /*** 上拉刷新/下拉加载更多 组件*/ import React, { Compo ...
- 微信小程序自定义导航栏与自带下拉刷新冲突
在使用HbuilderX开发微信小程序时(在HbuilderX中写代码,在微信开发者工具编译),由于微信小程序自带的导航栏功能少,样式单一等,于是采用colorUI自定义导航栏实现需求.而问题就一而再 ...
- android下拉刷新动画效果代码_vue项目实录:下拉刷新组件的开发及slot的使用
"下拉刷新"和"上滑加载更多"功能在前端.尤其是移动端项目中非常重要,这里笔者由曾经做过的vue项目中的"blink"功能和各位探讨下[下拉 ...
- Vue2:使用Vant UI实现网易云评论页上拉和下拉刷新
目录 一.项目数据API接口地址 二.实现页面效果 三.实现思路 四.实现思路代码 1.发送ajax请求获取20条评论 2.下拉触发onRefresh事件 3.上拉触发onLoad事件 五.实现功能完 ...
- uni-app 小程序项目三 1. 商品列表、过滤器、封装商品item组件、上拉加载、节流阀、下拉刷新、2. 商品详情、轮播图、商品价格闪烁问题 3.加入购物车、vuex、持久化存储、mixiins
1.0 创建 goodslist 分支 1.1 定义请求参数对象 为了方便发起请求获取商品列表的数据,我们要根据接口的要求,事先定义一个请求参数对象: data() {return {// 请求参数对 ...
最新文章
- 数字进度条组件NumberProgressBar
- python画柱形图-Python绘制精美图表之双柱形图
- “傻子”阿甘的大智慧
- throwable_您想了解的所有Throwable
- 在JupyterNotebook中使用多个Python环境
- hive select 语句
- 模板引擎 - Thymeleaf
- 《洞见》罗伯特·赖特
- 小米云服务器怎么管理员密码,小米路由器初始密码是什么 小米路由器管理密码是多少-192路由网...
- SAP 增强学习(4):四代增强 隐式增强(Enhancement-Point)
- 黑马程序员_IO输入输出流
- __attribute__((__aligned__(n)))对结构体对齐的影响
- SAP idoc功能够强大: 采购订单下达自动触发销售订单创建
- 漫步微积分二十九——微积分基本定理
- 普博也有120万房补!40万安家费+50万科启,硕士也可入教职!浙江该高校大量招人...
- webstorm项目上传git遇到的坑
- does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE),
- 自动泊车(之三)车位线定位(视觉定位)
- [网摘]深入浅出解读微软云计算:让云触手可及
- 回环检测回环校正(二):回环校正原理