【问题标题】:iframe size with CSS on iOSiOS 上带有 CSS 的 iframe 大小
【发布时间】:2013-05-31 23:37:45
【问题描述】:

有一个 iframe,它的内容基本上比适合框架的要多。框架的大小基于浏览器屏幕大小并允许溢出滚动,这在除 iOS 之外的所有浏览器上都能完美运行。在 iOS 上,Safari 决定调整框架的大小以适应内容。不是你所期望的。

jsFiddle 上的示例代码:
http://jsfiddle.net/R3PKB/2/

在您的 iOS 设备上试用:
http://jsfiddle.net/R3PKB/2/embedded/result

HTML:

<div class="frame_holder">
  <iframe class="my_frame">
    // The content
  </iframe>
</div>

CSS:

body {
  position: relative;
  background: #f0f0f0;
}

.frame_holder {
  position: absolute;
  top: 50px;
  bottom: 50px;
  left: 50px;
  right: 50px;
  background: #ffffff;
}

.my_frame {
  width: 100%;
  height: 100%;
  border: 1px solid #e0e0e0;
}

【问题讨论】:

  • 赞成我对这个问题的清晰分析。

标签: ios css mobile iframe resize


【解决方案1】:

您可以通过添加带有overflow: auto;-webkit-overflow-scrolling:touch; 的包装div 来使其工作。 这是您的示例:http://jsfiddle.net/R3PKB/7/

根据之前关于 SO 的问题,这是自 iOS 4 以来的一个错误。我在这里找到了更多信息: https://stackoverflow.com/a/6721310/1047398 iframe on iOS (iPad) content cropping issue

【讨论】:

  • 哇!这绝对是迄今为止我见过的最接近的解决方案。但是实现有点复杂,并且不允许 iframe 大于预期大小。
  • 您能否详细解释一下您的意思以及我们可以如何为您提供更多帮助?预期尺寸是多少,屏幕尺寸为 50 像素? (就像您在示例中使用的那样)
  • 标记为答案,因为由于 iOS 中的错误/安全功能,没有其他解决方案。
  • 谢谢,我需要为基于 html 的 iPhone 应用程序设置 iFrame 大小为子帧。
  • 这会破坏 iframe 中的 position:fixed 元素。
【解决方案2】:

这是一个老问题,但由于它首先出现在 google 上,并且现在的 ios 设备上存在该问题,我重新发布了我在此页面上找到的更好的修复: How to get an IFrame to be responsive in iOS Safari?

基本上,如果您有一个带有滚动功能的 iframe(比如说一个 twitter 小部件),那么上面的解决方案将无法很好地工作,因为它使父级可滚动。对我有用的修复方法是将 height: 100% 替换为 height: 1px; min-height: 100%;

【讨论】:

  • 这对我有用,上面的那个不尊重 iframe 内容的响应式布局。
【解决方案3】:

虽然我不需要滚动元素,但使用 height: 1px; min-height: 100%; 对我不起作用。我不得不在周围的div 上使用overflow:auto;。请注意,不鼓励使用此方法,因为它可能会产生意想不到的后果,但我在 Android/iOS 和桌面浏览器上进行了测试,但尚未发现任何问题。 手指交叉

这是 Andy Shora 在某些 iOS 上的一篇不错的帖子iframe 细微差别:http://andyshora.com/iframes-responsive-web-apps-tips.html

【讨论】:

    【解决方案4】:

    如果 iOS Safari 显示您的 iframe 内容的来源与预期不同(即,它移动了一些像素),请尝试将 scrolling="no" 作为属性添加到 iframe。这应该会阻止它自动适应其内容。

    更多here.

    【讨论】:

    • 经过 2 小时寻求好的解决方案.. 这个解决了我的问题!谢谢!
    • 这对我不起作用,但我也是从同一个来源加载的。
    • 我希望我能给这个答案多票。砰,解决了我在 iOS(Safari)中的问题,iframe 内容被水平切断。非常感谢凯尔杜莫维奇
    猜你喜欢
    • 2015-02-04
    • 2019-08-15
    • 1970-01-01
    • 2018-02-01
    • 2014-05-14
    • 2017-04-30
    • 2012-03-11
    • 2013-03-19
    • 1970-01-01
    相关资源
    最近更新 更多