vue开发移动端app苹果手机的bug脱坑

vue开发移动端app苹果手机的bug脱坑vue 开发移动端 app 网页打包苹果 app 的坑总结列表设置 overflow auto 后 滚动效果不流畅的问题 可以在列表设置 flex 1 overflow y auto webkit overflow scrolling touch 在 iOS 中出现滚动卡顿问题上诉解决方法还会出现一个问题 就是会导致在列表中如果有弹窗 position fixed 会导致弹窗被覆盖或者覆盖不完全的问题 为此需要将弹窗放在列表外 下面为代码例子

vue开发移动端app 网页打包 苹果app的坑总结

  • 列表设置overflow:auto 后,滚动效果不流畅的问题
//可以在列表设置 flex: 1; overflow-y: auto; -webkit-overflow-scrolling: touch; //在iOS中出现滚动卡顿问题 
  • 上诉解决方法还会出现一个问题,就是会导致在列表中如果有弹窗(position: fixed)会导致弹窗被覆盖或者覆盖不完全的问题,为此需要将弹窗放在列表外,下面为代码例子:
 <div class="quotation-easy-list list-padding flex flex-column"> <div class="scroll-container"> <div v-for="(item, index) in easyList" :key="item.id" class="quotation-easy-out-item" @click="slectRemove(item, index)"> <div class="flex quotation-easy-item" @click="actionSheetListShow(item)" :class="preRemove ? 'pre-remove' : 'pre-remove-no-padding'"> <div class="select" v-show="item.is_remove && preRemove" :class="item.removed ? 'active': ''"> <i class="iconfont icon-dagou" v-show="item.removed"></i> </div> <span class="bold middle-font-size">{ 
  {item.name}}</span> <span v-show="!preRemove" class="bold middle-font-size" :class="item.down === 0 ? '': (item.down === 1 ? 'up-price': 'down-price')" >{ 
  {item.price}}</span> <span v-show="!preRemove" class="bold middle-font-size" :class="item.downSecond === 0 ? '': (item.downSecond === 1 ? 'up-price': 'down-price')" >{ 
  {item.point_price}}</span> </div> </div> </div> <!--这个组件是弹窗 类名为scroll-container的div是列表 存在-webkit-overflow-scrolling: touch属性 弹窗需要放在他的外面才不会被覆盖--> <action-sheet-list @emitAction="emitAction" :actionDescription="actionDescription" ref="ActionSheetList" :actionList="actionList"></action-sheet-list> </div> 
  • 苹果底部会有一个黑色的小滑块,会导致底部导航栏被覆盖的问题,需要使用苹果的安全距离属性
    首先需要在html头部加上
<!-- viewport-fit=cover 为了解决ios安全距离 --> <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,maximum-scale=1,user-scalabel=0,viewport-fit=cover"> 

然后:在需要进行padding-bottom 或者 bottom 或者 margin-bottom处加上(padding-top top margin-top left right xxxxxx 等属性类似 只需要改safe-area-inset-xxxxx 就行了)

 // bottom: env(safe-area-inset-bottom); //苹果底部安全距离 // bottom: constant(safe-area-inset-bottom); //苹果安全距离 //padding-bottom: env(safe-area-inset-bottom); //苹果底部安全距离 //padding-bottom: constant(safe-area-inset-bottom); //苹果安全距离 <!--这个属性会导致padding-bottom 被覆盖, 在安卓上无效果 如果需要在安卓上默认有一个padding-bottom 需要再套一层div 加padding-bottom 或者其他解决办法--> 
  • 这两行代码可以判断是否为ios终端
var u = navigator.userAgent; var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端 
  • 采用flex布局(即 body,html设置宽高100%, #app设置高度100%, 底部导航栏高度自适应, 内容(router-view)设置 flex:1 overflow: auto )进行整个app的架构开发的话,会导致苹果的*橡皮筋效果*越加明显,经过各种解决办法 目前只能先有一种办法 暂时解决(有小bug):
body,
html {
  width: 100%;
  height: 100%;

}
//只能给body设置fixed属性缓解橡皮筋效果
body {
  position: fixed;
  top: 0;
  left: 0;
  overflow: hidden;
}

#app {
  height: 100%;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232141.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 微信 网页授权_微信解除其他app授权

    微信 网页授权_微信解除其他app授权一、背景近期实现微信招聘公众号的需求,需要在微信用户同意公众号授权后,获取到微信用户信息。这一步操作在前端无法完成,所以这里我们使用了C#WebApi项目,通过接口实现后台获取微信用户数据再重定向到前端页面。二、思路具体而言,微信网页授权流程分为四步:1、引导用户进入授权页面同意授权,获取code;2、通过code换取网页授权access_toke…

    2025年7月25日
    5
  • 给定一个罗马数字,将其转换成整数_计算并输出给定整数n的所有因子

    给定一个罗马数字,将其转换成整数_计算并输出给定整数n的所有因子问题描述:给定一个整数转换成对应的罗马字符。罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如,罗马数字2写做II,即为两个并列的1。12写做XII,即为X+II。27写做…

    2022年9月27日
    5
  • VB学习总结「建议收藏」

    VB学习总结「建议收藏」无论是生活还是学习,都要不断的总结和思考。学习中,不可以偷懒,你对它偷懒,它就会对你更加偷懒;同样,没有规律和反思的生活是平淡如水,没有进步的,今天的我们应该能和昨天面对面,每天进步一点点。   这次的总结是对全部模块的总结,记录此刻的学习轨迹,以供以后反思学习,同时分享给大家,欢迎大家批评建议。      1.总结大纲——时间管理,计划同步    2.

    2022年6月21日
    22
  • linux搭建邮件服务器配置_docker 邮件服务器

    linux搭建邮件服务器配置_docker 邮件服务器Postfix配置并设置账户认证(Postfix+Sasl)记录一下,比较简单的使用安装Postfix系统一般都自带了Postfix,如果不清楚可以使用下面的指令检查rpm-qa|greppostfix如果没用安装Postfix则使用以下指令安装yum-yinstallpostfix安装sasldb、saslauthd用来提供smtp的虚拟账户和密码服务sasldb2包含在saslauthd当中使用指令yum-yinstallcyrus-saslcy.

    2022年10月20日
    3
  • sql触发器

    sql触发器在SQLServer里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。常见的触发器有三种:分别应用于Insert,Update,Delete事件。我为什

    2022年7月3日
    23
  • vue富文本编辑器tinymce_idea代码高亮设置

    vue富文本编辑器tinymce_idea代码高亮设置1.查找IntelliJIDEA是否已经安装vue.js 注:之前有写过关于使用cmd命令搭建vue项目的全部过程,详情在此打开IDEA编辑器,快捷键Ctrl+Alt+S打开Settings(设置)——&gt;Plugins——&gt;搜索vue.js(图中已经安装,没有安装的点击InstallJetBrainsplugins…进行安装即可),安装成功后重启IDE…

    2022年8月26日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号