【问题标题】:Right padding/margin not working correctly in UIWebView (embedded mobile safari)UIWebView 中的右填充/边距无法正常工作(嵌入式移动 safari)
【发布时间】:2012-11-15 02:30:37
【问题描述】:

这是在 iOS 应用程序内的 UIWebView 中使用的。它在普通的 Mobile Safari 中似乎可以正常工作,但在嵌入式浏览器中却不行。

基本上,我有一些 HTML 和 CSS。 HTML 元素四周都应用了一些填充,而 BODY 元素则没有。我期望看到的是被空白空间包围的 BODY 的内容。在桌面 Safari 中,这是可行的。但由于某种原因,在 Mobile Safari(嵌入式 Safari)中,HTML 标记的右填充被忽略,或者 BODY 标记可能被拉伸 - 不确定是哪个。请查看这些屏幕截图以进行说明:

请注意在 Mobile Safari 示例中填充似乎是如何消失的。注意:这些只是我在 Photoshop 中模拟的图像,不是屏幕截图,但行为是相同的。

这是代码(当然是简化的):

<html>
<head>
<style>
html {
    background-color: #FFF;
    padding: 10px;
}
body {
    background-color: #0F0;
}
</style>
<body>
<div> ... some stuff ... </div>
</body>
</html>

为了确保没有拉伸 BODY 标签的宽度,我尝试删除所有不需要的 HTML 和 CSS,基本上只保留一个带有绿色背景的空 BODY 标签,如图所示。这仍然有同样的问题。我也尝试在 BODY 标记周围放置边距,而不是在 HTML 标记中填充,但这不起作用。

编辑:我也尝试将盒子模型设置为边框框,as discussed here,但它不起作用。

有什么想法吗?

【问题讨论】:

  • 您尝试过重置样式表吗?
  • 确保你没有设置 width:100%;在 HTML 或 Body 标签上,我以前见过这种情况,这是罪魁祸首,因为在宽度:100% 之后应用了填充;由于盒模型属性。您的上述代码在 iPad 3rd Gen 上的 Mobile Safari 中运行良好。
  • 不,我现在没有设置宽度:100%。它似乎在 Mobile Safari 中运行良好,但在应用程序中使用 UIWebView 时却不行。
  • 有一个名为 iWebInspector 的调试工具:iwebinspector.com 不过不确定它是否允许检查 UIWebViews。

标签: ios css uiwebview mobile-safari padding


【解决方案1】:

from this answer(对我有用)

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *padding = @"document.body.style.margin='0';document.body.style.padding = '0'";
    [webView stringByEvaluatingJavaScriptFromString:padding];
}

【讨论】:

    【解决方案2】:

    原来 UIWebView 没有被初始化为任何尺寸。它根本没有被显式初始化,例如[[UIWebView alloc] initWithFrame:....]。使用适当的尺寸显式初始化它可以解决问题。

    【讨论】:

    • 一开始你是如何初始化它的?
    猜你喜欢
    • 1970-01-01
    • 2021-11-23
    • 2016-10-19
    • 2012-07-03
    • 2018-05-28
    • 1970-01-01
    • 2017-06-24
    • 2017-01-07
    • 1970-01-01
    相关资源
    最近更新 更多