ios下iframe中fixed定位失效 完美替代方案 并可在iframe里做上拉加载这种操作

8 篇文章 0 订阅
4 篇文章 0 订阅

======================================2019-1-23更新=========================================

楼主这里要纠正一个问题   下面的干货  再实测的时候发现   底部会出现大概4像素的白边 这个东西 楼主找了很久

最后 只能 笃定  是 因为 css 的calc的计算  用百分比减去px的时候 会出现误差  就是楼主说的 大概4像素的白边  这里楼主

提供一个解决办法  利用flex的  grow 属性     把头设置 grow:0  不增长   然后把iframe 或者object 对象 设置成 grow:1 让他

去填充剩下的空间,这样就解决了白边的问题

======================================2019-1-23更新=========================================

最近忙的 好久没写博客了   正好昨天处理了一个问题  记录下来 分享给大家

 

1 项目需求

    要求 vue单页项目引入外部网页,头部由自己写,然后做交互 完成功能

   翻译一下就是:  vue单页项目 嵌套 跨域的 iframe页面 实现 fixed定位及iframe中上拉加载

2 实现

    第一版本 我肯定先想到了 iframe  毕竟很久的东西了,不过 刚期初嵌套进来还好,什么高度自适应啥的   我就不多说了,网上有很多文章介绍,我只提一点新的东西,就是  ios的微信内置浏览器  返回被放在了页面下部,这就很有意思了,如果你iframe内嵌进来的页面 最下面有一个fixed定位的东东,就算你费尽心思定在最下面了,你会发现 安卓还好,在ios里  你还是看不到,不过 我告诉你  是因为 ios微信内置浏览器的返回按钮给挡上了   你需要做的就是   vue的 这个单页里  最外层的div 添加一段css样式  如图

先利用 css 的 calc  让 高度为  总高减去 44   ,其中44 是我估算的 微信下面的 返回导航高度     前面的 ~ 是因为 我这段css写在less里  所以  在less中 如果想用calc 就需要添加~   这段是干货

然后说说  解决 iframe里的fixed定位吧     安卓ok  ios崩溃 大家都懂

我的思路   从父页面  传进来一个高度  然后 赋值个 iframe里面的页面   这里 由于跨域  我用的postmessage     这个你要不知道 你可以白干前端了

然后再iframe里     最外层放一个div  宽高100% 然后position:relative  然后里面的内容分2部分  显示的页面  相对定位 这个div

然后底部原来想fixed的   也absolute  相对这个div定位      这里    实现的效果  第一页 目前确实可以定位在最下面了

然后就是滚动一直在最下面了    这里就要 让 这个原来想fixed定位的导航的 top值 一直等于 第一页的top值 + 滚动的距离

也就是  top=top+ $(window).scrollTop()   这里 基本实现了fixed定位的问题  

不过!!!重点   你会发现  他会有一些嘚瑟(东北话) ,翻译一下 就是 你滚动页面 他就颤抖   因为是计算的嘛  

如果现在能满足你   那就不用往下看了  去实现吧 

   第二版本 通过上面的代码 我觉得 还是不行  所以 管段revent了   不需要让他耽误我们的时间  那怎么做呢

我就用了 h5新出的  Object标签  实现的 

  

因为是公共页面 所以 data 我换成了动态的url    然后你会发现  是可以引入的  而且 fixed定位 进来就好使  你不需要再去一顿定位了

然后说说上拉加载 ,网上的帖子 基本没有说  附带上拉加载的   这里 我用的是 mintUi的  loadmore组件 完成上拉加载的

利用上面object后  你会发现 拉动不了 你一拉动  页面就归为  一直到你都取完值  才可以滚动

所以你要做以下操作 

1 再load标签的上一层div 加入 2个样式

然后 再加上一个计算的高度  去满足不同的手机  

如果 你有和我一样的问题  我想你现在已经懂了

我把  父页面 和子页面的代码 抽出来   供看不懂的人下载  希望可以帮到你们  不过  还是要先看博客 再下载 才能理解如何操作

代码中  我删除了一下 关于公司的信息 不过 解决问题的代码 都在这里  

下载地址 :https://download.csdn.net/download/gaoqiang1112/10880704

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值