【问题标题】:Inconsistent background-size shorthand behavior between Chromium 51 and Chromium 51 WebViewChromium 51 和 Chromium 51 WebView 之间的背景大小速记行为不一致
【发布时间】:2016-07-14 13:54:47
【问题描述】:

我在我们的应用程序中遇到了奇怪的行为,这是一个在 Android 上运行的 Phonegap 包装的 WebView。我不确定我是否正在查看错误或可能有其他原因,因此提出了这个问题。

大约从 2013 年开始,对于 Chromium,background CSS 属性还可以包含 background-size 的简写定义,由 / 分隔。

例如:background: green url(../img/hk.svg) center center / 100% auto

此语法在 Android 版 Chrome 浏览器中运行良好,在 UA Chrome/51.0.2704.81 上进行了测试。由于 KitKat,系统中的 Chromium 内核也用于 WebView 而不是普通浏览器,因此我们的 Phonegap 应用程序使用与 Chrome 应用程序完全相同的渲染内核 (Chrome/51.0.2704.81)。

但是,background-size 简写在 WebView 变体中不起作用。在开发工具中,语法显示为正确,但表现为background 字符串中的background-size 定义不存在。如果之后显式设置了background-size,问题就解决了。

下面,我提供了一个包含的小 .apk,您可以使用它通过 Chrome 中的设备检查进行调试来测试此行为。

完整的 UA Chrome 字符串Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5 Build/MOB30D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.81 Mobile Safari/537.36

完整的 UA Chrome WV 字符串Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5 Build/MOB30D; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/51.0.2704.81 Mobile Safari/537.36

Test case for Chrome browser - codepen
Test case APK for Android - 最小的 Phonegap Hello World 包装器,没有请求权限

APK 使用以下相关的 HTML/CSS:

<div class="block"></div>
<div class="block extended"></div>

.block { background: green url(../img/hk.svg) center center / 100% auto; }
.extended { background-size: 100% auto; }

如您所见,只有 .extended 类的 div 才能正确渲染,而两者都应该正确渲染。

谢谢!

【问题讨论】:

  • 我在设备中安装了apk。已在此处附上应用程序页面的屏幕截图 - imgur.com/f8L2gNN 不确定您在这里提到的问题到底是什么。能给我介绍一下吗?
  • 嗨@Gandhi,问题是两个图像实际上具有相同的CSS - 第一个背景使用简写background 和背景大小定义,第二个使用独立的background-size 属性在定义background 之后。两者都应该渲染得很好。第一个背景在 WebView 中无法正确渲染,但在同一核心版本的 Chrome Android 中却可以正确渲染。
  • @Gandhi 我已将您在 APK 中看到的确切 HTML/CSS 添加到问题中。

标签: android css cordova webview chromium


【解决方案1】:

我分解了您发布的 APK 文件并将您的源代码复制到我新创建的 cordova 项目中。我构建了我的项目并在运行 Android Marshmallow 的设备上进行了测试。它工作正常。也请找到结果的screenshot

还在我的github page 中添加了示例项目。请求您查看它并从中生成 APK,因为这可能是您的项目设置的问题。我正在使用 Cordova 6.2.0 版和 Cordova Android 5.1.1 版

我还遇到过其他link,其中指出您必须在使用背景大小的速记之前指定位置 (0%)。您可以在设置中尝试该选项一次。希望对你有帮助

【讨论】:

  • 非常好,感谢提供源代码。鉴于它适用于您,我认为这必须基于一些 Cordova 设置。我已经使用最新的 Cordova 和他们的 Hello World 演示应用程序包装器来生成测试 APK,所以问题应该与默认值相差不远。调查差异...
  • @mystrdat 我很好奇 让我发帖。干杯
  • 你是在本地编译还是使用Phonegap构建服务? @甘地
  • @mystrdat 我正在使用cordova CLI 编译和构建应用程序,这是我迄今为止使用的唯一方法,并且到目前为止工作起来就像一个魅力。你找到差异了吗?
  • 不幸的是还没有。我以为我有它,因为 Phonegap-CLI 5.2.0 默认我们使用比我们更低的 Android 平台版本,但即使我们强制它使用平台 5.1.1,错误仍然存​​在。在这一点上,我确信这是在 Phonegap 黑盒构建过程中的某个地方,我正在研究可能的原因。你的回答足以帮助你达到这个状态,所以这里是赏金!当然,也会为您更新任何消息。谢谢! @甘地
【解决方案2】:

据报道herebackground-size android webview 的简写在版本 4.4api 级别 19)以下不起作用。

但我认为kitkat还有一些问题(看这个问题:background-sizecover-not-working-in-android-native-browser)。

【讨论】:

  • 我知道 4.4 的功能介绍,但我们在测试版本中已经过了 - 使用 Android 6.0.1 和足够的 webview,即 Chromium 51。
  • @Frix33 我觉得答案不是很相关,因为问题表明它在 Android 6 上进行了测试。您可以删除答案以造福他人。谢谢
猜你喜欢
  • 2019-06-25
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多