• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >HBuilder教程 > 在mui框架初始的默认下拉刷新上拉加载的结构之中,无法添加区域滚动的问题

在mui框架初始的默认下拉刷新上拉加载的结构之中,无法添加区域滚动的问题

作者:教程 字体:[增加 减小] 来源:互联网 时间:2017-05-31

本文主要包含在mui框架初始的默认下拉刷新上拉加载的结构之中,无法添加区域滚动的问题等相关知识,教程希望在学习及工作中可以帮助到您
"); </div> 此问题出现在构建类似原生手机端app时遇到的,大概需求是要在一个可下拉刷新的页面之中点击筛选框弹出特定的下拉列表。本来看到mui框架对于区域滚动已经封装了自己的组件后,觉得并没有太大问题。但在实际调试之中发现,利用其封装好的遮罩层Popover来制作弹出菜单时,参照官方文档和其提供的demo示例使用

<div class="mui-scroll-wrapper"> 
  <div class="mui-scroll"> 
     <!-- 此处放置滚动区域内容 --> 
  </div> 
</div>
对popover进行包裹后,在普通页面之中是没有问题的,但是加入到了父子嵌套刷新的页面之中就会出现滚动穿透的问题,popover层的滚动事件不会触发,反而处于遮罩层的列表会继续触发滚动事件。同时在dcloud问答社区也找到了前辈的提问,但是并未有人解决。(点击查看问题链接)另外由于父子页面也会引发另一个问题:
父页面的tab切换栏不能在子页面popover弹出时候进行遮罩来阻止操作。

利用事件的冒泡属性,阻止popover层的滚动事件冒泡到遮罩层。
这个尝试以失败告终,首先这个下拉刷新上来加载页面是通过mui框架封装的父子webview功能来实现的,利用jq的preventDefault()方法并不能取得效果,而且菜单列表还是无法正常的初始化滚动。
抛弃popover的区域滚动,进行高度自适应的填充。
好吧,这居然也算一个解决方案,对于不需要用太多处理的较短筛选列表是可以采用这个方法的,对于第二个问题也是由一种思路可以弥补的,我们放到第三种方法一起讨论。
利用mui框架官方示例之中的另一个上下拉刷新组件来取代原有的父子webview刷新页面,这样做的好处是可以构建出上下拉和区域滚动兼容的一个页面来。
但是与之伴随的问题也来了,这个必须引用额外的js才可以实现,而且整体效果相对于原生的拖动有较大的差异。对于父页面的遮罩,如果利用mui的自定义事件向父页面触发事件应该是可以解决的,自己利用css遮罩层触发popover的弹出操作。但是popover整体在子页面的操作并不是很流畅,需要进一步利用fire方法在父页面向子页面发请求来操作。整体来说是一种解决思路。
利用H5+的nativeUI来构建遮罩层替代popover组件实现需求。
这个想法是在dcloud的官方文章之中找到的,本人不才并没有接触过安卓和ios的原生开发,之后搜索并了解了下这个原生UI的功能。在H5+的文档上发现这个nativeObj提供的view对象是可以达到全屏遮罩层的效果。
但是这个遮罩是全webview置顶的,而且上面无法放置任何html代码,故而无法达到popover的效果。
继续寻找发现在官方给的H5+的示例之中有wbview遮罩层的示例,研究了一番发现有一个直接封装好的方法,可以直接对当前webview设置遮罩层同时绑定遮罩层的点击事件。代码如下:

// 创建Webview窗口带遮罩层 
var wd = plus.webview.create('http://www.dcloud.io/','dcloud',{mask:'rgba(0,0,0,0.5)'}); 
wd.show(); 
 
// 动态修改Webview窗口的遮罩层 
var ws=plus.webview.currentWebview(); 
ws.setStyle({mask:"rgba(0,0,0,0.5)"}); 
// 用户点击Webview窗口后不显示遮罩层 
ws.addEventListener("maskClick",function(){ 
    ws.setStyle({mask:"none"}); 
},false); 
利用这个方法可以将要处理的popover弹出层放置到一个新的子webview中去,这样设计的两个问题就都解决了。而且遮罩层不用自己去手写,相对而言事件的触发也没有变得太多,的确是一个更好的办法。

最终,利用方法4的思路,在子页面触发事件,分别向父页面fire事件打开遮罩层(点击后隐藏)并打开菜单页(放置要处理的弹出菜单)。在菜单页关闭的同时也关闭父页面的遮罩,触发子页面的数据刷新,问题就解决了。

ps.调试发现菜单栏的webview最好不要多次创建,使用时hide和show比多次调用create要流畅不少。

您可能想查找下面的文章:

  • 在mui框架初始的默认下拉刷新上拉加载的结构之中,无法添加区域滚动的问题

相关文章

  • 2017-05-31安卓5.0页面打开,会有非常严重的闪屏现象,求解决?
  • 2017-05-31HBuilder 获取通话记录 (Android)
  • 2017-05-31HBuilder MUI项目中如何防止连续点击导致webview打开出错
  • 2017-05-31MUI图片上传剪切预览代码分享
  • 2017-05-31HBuilder MUI 引导页制作
  • 2017-05-31MUI Android创建最精简离线打包工程
  • 2017-05-31mui 双首页secondwebview配置的使用
  • 2017-05-31Hello MUI增加BeeCloud支付集成示例,无服务端也可完成支付全流程
  • 2017-05-31Hbuilder mui里调用(安卓端)QQ进行客服对话功能分享
  • 2017-05-31mui android native.js获取手机CPU信息

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 分享mui.previewimage.js图片预览的经验
    • mui截图后canvas base64图片上传
    • HBuilder百度地图显示不出来怎么解决?
    • HBuilder开发App教程-最难搞定的是mui
    • 请问用downloader.createDownload 下载的文件放在哪里??
    • mui开发之plusready和init
    • MUI APP关于页面之间的传值,plusready和自定义事件
    • mui 拍照和相册代码分享
    • HBuilder mui中的无等待窗体切换是如何实现的
    • 在mui框架初始的默认下拉刷新上拉加载的结构之中,无法添加区域滚动的问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有