IOS溢出不滚动的问题及解决方案

最近做的项目在手机端使用的时候踩了个坑,自己埋头研究了挺久才明白问题的源头,现在写出来给大家分享一下

这里说的坑指的是在IOS手机端打开页面以后内部控件的局部滚动效果无法使用的问题,这个情况也只在IOS的手机上会出现,以下:

----------------------------------------我是分割线--------------------------------------------


问题描述:

    ios浏览器局部滚动默认没有弹性滚动的效果。

解决方案:

    在需要使用弹性滚动的控件外层加上一个div,为这个div加上一个比较常用的样式和一个比较少见的样式,分别是

overflow-x:scroll;
-webkit-overflow-scrolling: touch;

这里主要需要的是针对webkit引擎的兼容滚动效果,关于这个样式比较详细的描述文档看这里

在我实际的开发项目中,仅仅引用这两个样式会有点不够用,在第一次使用的时候暴露出比较大的问题,主要原因是这个div没有定义实际的大小,这导致默认的大小来自于子元素的大小撑开,而子元素中其实又很多东西是浮动甚至是做了定位的,这样在自动计算div大小的时候就会存在很大的误差导致展示效果很差。

这个问题其实也好解决,只要加载div的时候为这个div计算出它应有的实际宽高然后固定下来就好了,如果这个宽高不好写有两种方案解决,一种是依靠百分比,一种是使用JS计算以后赋值,我的项目中使用的是后者,各位如有需要可以按照自己的实际情况来进行。

注:在-webkit-overflow-scrolling这个样式的描述文档里说这个样式没有继承,但是在我实际的测试中却是有继承的效果的,嫌麻烦的可以选择直接在主页面(iframe的外层HTML)的body上赋值这个样式,在之后的元素中似乎也能继承上,感兴趣的可以自己使用试试~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值