前言:最近用 Vue + Cordova + Onsen UI开发APP的过程中,在页面上遇到两个问题。
(1)没法实现正常的类似于PC端页面中的固定定位,像position:fixed,这种css属性在app中是会经常出现问题的。
(2)v-ons-pull-hook 不论写在页面哪个位置,都只能在 v-ons-tool-bar 下生效,导致我们无法在页面中间或者底部的固定div内下拉刷新。

固定定位

  1. 解决思路:
    访问 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>
  1. 实现
<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-hookheight和它的父元素的margin-top互为相反数,即v-ons-pull-hookheight默认为64px,v-ons-pagemargin-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>
  1. 总结得仓促,表达得不清楚
  2. 只是根据控制台猜想,正确的步骤是看源码实现
  3. 先实现需求,日后再补

Onsen UI组件实现下拉刷新和固定定位相关推荐

  1. 优化小程序中频繁下拉刷新导致的定位获取失败问题

    getLocation() {return new Promise((resolve, reject) => {let that =thiswx.getLocation({type: " ...

  2. 在cube ui中使用better-scroll 自定义下拉刷新和上拉加载内容

    在这次写项目中,偶然看到cube-ui组件库,看到这个ui组件库滚动盒子都是根据better-scroll封装的,在移动端上滑动效果体验比较不错,于是我决定使用cube-ui组件库,在使用过程中,在自 ...

  3. [ vant ] vue移动端下拉刷新组件

    学习关键语句: vant list组件和下拉刷新 vant 下拉刷新和局部滚动冲突 写在前面 每一次 ! 我是说每一次我在使用 vant 组件库里面 list组件和下拉刷新连在一起用的时候 都会出现下 ...

  4. refreshcontrol 实现下拉刷新的功能

    该组件实现下拉刷新的功能.不过该组件是用在ScrollView的内部的,为ScrollView添加一个下拉刷新的功能.当ScrollView的垂直方向的偏移量scrollY:0的时候,手指往下拖拽Sc ...

  5. react-native ListView 封装 实现 下拉刷新/上拉加载更多

    1.PageListView 组件封装 src/components/PageListView/index.js /*** 上拉刷新/下拉加载更多 组件*/ import React, { Compo ...

  6. 微信小程序自定义导航栏与自带下拉刷新冲突

    在使用HbuilderX开发微信小程序时(在HbuilderX中写代码,在微信开发者工具编译),由于微信小程序自带的导航栏功能少,样式单一等,于是采用colorUI自定义导航栏实现需求.而问题就一而再 ...

  7. android下拉刷新动画效果代码_vue项目实录:下拉刷新组件的开发及slot的使用

    "下拉刷新"和"上滑加载更多"功能在前端.尤其是移动端项目中非常重要,这里笔者由曾经做过的vue项目中的"blink"功能和各位探讨下[下拉 ...

  8. Vue2:使用Vant UI实现网易云评论页上拉和下拉刷新

    目录 一.项目数据API接口地址 二.实现页面效果 三.实现思路 四.实现思路代码 1.发送ajax请求获取20条评论 2.下拉触发onRefresh事件 3.上拉触发onLoad事件 五.实现功能完 ...

  9. uni-app 小程序项目三 1. 商品列表、过滤器、封装商品item组件、上拉加载、节流阀、下拉刷新、2. 商品详情、轮播图、商品价格闪烁问题 3.加入购物车、vuex、持久化存储、mixiins

    1.0 创建 goodslist 分支 1.1 定义请求参数对象 为了方便发起请求获取商品列表的数据,我们要根据接口的要求,事先定义一个请求参数对象: data() {return {// 请求参数对 ...

最新文章

  1. 数字进度条组件NumberProgressBar
  2. python画柱形图-Python绘制精美图表之双柱形图
  3. “傻子”阿甘的大智慧
  4. throwable_您想了解的所有Throwable
  5. 在JupyterNotebook中使用多个Python环境
  6. hive select 语句
  7. 模板引擎 - Thymeleaf
  8. 《洞见》罗伯特·赖特
  9. 小米云服务器怎么管理员密码,小米路由器初始密码是什么 小米路由器管理密码是多少-192路由网...
  10. SAP 增强学习(4):四代增强 隐式增强(Enhancement-Point)
  11. 黑马程序员_IO输入输出流
  12. __attribute__((__aligned__(n)))对结构体对齐的影响
  13. SAP idoc功能够强大: 采购订单下达自动触发销售订单创建
  14. 漫步微积分二十九——微积分基本定理
  15. 普博也有120万房补!40万安家费+50万科启,硕士也可入教职!浙江该高校大量招人...
  16. webstorm项目上传git遇到的坑
  17. does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE),
  18. 自动泊车(之三)车位线定位(视觉定位)
  19. [网摘]深入浅出解读微软云计算:让云触手可及
  20. 回环检测回环校正(二):回环校正原理

热门文章

  1. 天津软件外包之软件项目经理
  2. 利用原始socket简单实现FTP的客户端和服务器端程序
  3. go channel原理及用法
  4. CAN总线的终端电阻为什么是120Ω
  5. 4、TC29x BootROM 内容
  6. Win7关机速度慢怎么办 Win7加快关机速度方法
  7. 设计模式:简单工厂模式与工厂生产模式的区别
  8. JavaScript生成 5 个不同的随机数
  9. 实现KMP字符串匹配
  10. MYSQL表结构解析