向 React Native WebView 添加 CSS 样式

2024-01-22

所以我对此有点困惑......我在应用程序的一部分中使用了 WebView,使用 WebView 的原因是因为我们从返回给我们 HTML 字符串的 API 端点拉取。此 HTML 字符串中的字体大小和其他内容的样式不是为了在移动应用程序中使用而设计的,因此我们尝试对其添加一些样式更改以提高可视性。我见过人们在 html 文件顶部添加样式标签,以向元素添加特定的 html 样式,除了每次我单击具有以下内容的屏幕时,WebView 的 HTML 中的字体大小呈现不同之外,一切都正常工作。其中包含WebView。

这是当前代码(样式+html+脚本):

let rawHTML = htmlStyle + this.props.itemDetails.body_html.replace("\n", "").replace(/("\/\/[c])\w/g, "\"https://cd").replace(/(width: 10.094%;)/g, "").replace(/(width: 84.906%;)/g, "") + heightScript

我还在调试器中控制台记录了该字符串,以确保它缝合良好,甚至创建了 index.html 并将确切的字符串粘贴到其中,以确保它正确显示在那里。

这是样式字符串:

let htmlStyle = `<style>
                        #height-calculator {
                          margin: 0;
                          padding: 0;
                        }
                        #height-calculator {
                            position: absolute;
                            top: 0;
                            left: 0;
                            right: 0;
                            margin: 0;
                            padding: 0;
                        }
                        body {
                          width:100%;
                        }
                        h2 {
                          font-size: 48px;
                        }
                        p {
                          font-size: 18px;
                        }
                        h3 {
                          font-size: 32px
                        }
                        img {
                          width:98%;
                        }
                        td {
                          display: block !important;
                          width: 95% !important;
                        }
                        img {
                          width:98%;
                        }
                        hr {
                          width: 98%;
                        }
                        ol li ol li ol li {
                          position: relative; right: 85px;
                        }
                        ul {
                          width: 98%,
                          margin-left: -25px;
                        }
                        li {
                          width: 98%;
                        }
                        .tabs {
                          display: none;
                        }
                        .tabs > li {
                          display: none;
                        }
                        .tabs-content {
                          padding: 0;
                          list-style-type: none;
                        }
                        tr {
                          display: flex;
                          flex-direction: column;
                        }
               </style>`

最后是 WebView:

<WebView
  javaScriptEnabled={true}
  onNavigationStateChange={this.onNavigationStateChange.bind(this)}
  scrollEnabled={false}
  source={{html: rawHTML}}
  style={{height: Number(this.state.height)}}
  domStorageEnabled={true}
  scalesPageToFit={true}
  decelerationRate="normal"
  javaScriptEnabledAndroid={true} />

另外,正如我提到的,应用的所有其他样式都有效,主要是字体大小是超级不可预测的。

这是我单击一次时的视图:

然后我不更改或退出应用程序,我只是返回,然后单击相同的按钮进入相同的显示,有时我会得到这个(有时需要多次单击......这是非常不可预测的):

我也有一个视频,如果你觉得这对解释有帮助的话。我正在尽力重述它,哈哈。

Edit:

我认为这可能只是与模拟器相关的问题?如果有人能对此发表一些智慧,那就太棒了。我似乎无法在生产版本中重现此错误。


我最近遇到了同样的问题。我只在 iOS 上遇到过这种情况,在 Android 上没有。

最奇怪的部分是复制的不一致。我找不到任何模式来说明 WebView 内容的大小何时会有所不同。相同的 HTML 会导致字体大小有时正常,但有时又非常小。

我的解决方案来自(RN 0.47)WebView https://facebook.github.io/react-native/docs/webview.html prop:

缩放页面适合?:bool

控制是否缩放 Web 内容以适合视图并允许用户更改比例的布尔值。默认值为true.

我尝试设置scalesPageToFit to false,瞧,页面停止缩小了:

<WebView
  source={{ html: myHtml }}
  scalesPageToFit={false}
/>

唯一的问题是,这导致我的内容缩放得比 Android 上的 WebView 容器更大。为了解决这个问题,我只需设置scalesPageToFit根据平台有条件地支持:

<WebView
  source={{ html: myHtml }}
  scalesPageToFit={(Platform.OS === 'ios') ? false : true}
/>

对我来说就像一个魅力!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向 React Native WebView 添加 CSS 样式 的相关文章

  • 如何使用CSS将背景图像放入选择选项标签中

    我有一个从 json 响应接收的国家 地区下拉列表 并且想要在国家 地区名称旁边添加相应的国家 地区国旗图标 也从 json 响应获取图像 我已经尝试了不同的 jQuery 和 bootstrap 插件 但他们所做的是破坏我以前的选择框样式
  • 使用本机 JavaScript 获取过渡中的 CSS 值

    这个问题之前被问过 但答案使用了 jQuery here https stackoverflow com q 8920934 3186555 因此 我将调整问题以专门询问native解决方案 to 最小化依赖关系 假设您有一个 div 然后
  • 将 Div 放置在另一个 DIV 下方

    我有两个 DIV 元素 其中之一具有绝对位置 主 DIV 的左下角 第二个 DIV 是隐藏的 只有单击链接才能显示 我需要第二个出现在第一个下方 但由于第一个 div 的位置是绝对的 第二个 div 出现在第一个 div 之上 HTML 代
  • 从顶部开始在同一水平线上显示同一行中的两个 div

    这是我的代码 floating box display inline block width 150px margin 10px border 3px solid 73AD21 after box border 3px solid red
  • 无法正确显示行

    我应该在这个问题的开头说我完全没有 html css javascript 背景 所以请对我宽容点 如果我使用了错误的术语或者问了一个愚蠢的问题 没有提供足够的信息 请抱歉 我正在尝试让一个可扩展的表工作 通过阅读论坛线程 教程 将 nex
  • 删除特定数据表上的所有边框

    我需要使用 PrimeFaces 隐藏一个数据表的所有边框 而不是全部 我尝试了很多事情 但没有人奏效 有谁知道该怎么做 我已将以下样式 单独 应用于ui datatable class border hidden important bo
  • save_and_open_page 已停止提供我的 CSS

    我的测试设置工作得很好 每当我打电话时 都能提供正确格式的 css 页面save and open page从测试中 然后 我设置了一些 javascript 测试 并对我的设置进行了一些更改 抱歉 我无法详细说明所有内容 我没有足够详细地
  • React Native 弹出菜单移动选项框

    我有一个 React Native 弹出菜单 实现如下 import React Component from react import Text from react native import Icon Divider from rea
  • Bootstrap:如何将按钮组对齐在中心(垂直)

    在下面的代码中
  • 为什么我无法在 WebView (UWP) 中打开外部浏览器中的链接?

    我正在开发一个即将完成的 Web 应用程序 该应用程序有一个本地 Web 应用程序 其中有一些链接 我想在外部浏览器 Edge Chrome 等 中打开它们 我的代码分为 3 部分 1 Windows运行时组件 using System u
  • 想要动态处理与分页相关的页码显示:ReactJS

    我有一些分页逻辑工作得很好 唯一的问题是我只能让它显示并固定数量的页面可供选择 现在我已经把它放到了 5 页 但我希望它能够根据总记录动态更改 假设我有 100 条记录 每页限制为 10 条 将有 10 页 现在我只能让它以这种方式显示 第
  • 如何在Yii框架中向Form添加类?

    我在 Yii 中有一个表单 我想向该表单添加一个类
  • ReactTransitionGroup 不适用于 React-redux 连接组件

    我正在开发一个更大的项目 但我创建了这个简短的示例来说明问题 如果我使用Box组件 它的工作原理 它在控制台中输出componentWillEnter and componentWillLeave当我们点击按钮时 如果我使用BoxConta
  • React autoFocus 将光标设置为输入值的开头

    我有一个受控输入 最初显示一个值 我已将该输入设置为自动聚焦 但当我希望它出现在末尾时 光标出现在输入的开头 我知道这可能是因为自动对焦是在值之前添加的 但我不能 100 确定 在输入字段末尾完成光标初始化的最佳方法是什么 var Test
  • 合并 2 个大型 CSS 文件的有效方法

    我正在寻找一个可以合并 2 个大型 CSS 文件的工具 到目前为止我尝试过的所有方法 例如CSSMerge 都没有成功 其中一些只是随机删除属性 其他人则因 webkit 和 moz 等非标准属性而窒息 并给我错误 我还需要保留每条规则大小
  • CSS 到底如何计算相对尺寸

    我想更好地理解某些 CSS 行为 这与具体问题无关 我只是在调试网站时遇到的 让我们在固定位置的 div 中放置一个全宽图像 div img style width 100 src https via placeholder com 150
  • 在 React Native 中调试应用程序崩溃

    我是 React Native 新手 我正在尝试安装 React Native Facebook SDK 以便我可以使用我的应用程序进行 Facebook 登录 我按照此处列出的步骤操作 https tylermcginnis com in
  • React 键“mods”的切片缩减器在初始化期间返回未定义。 (还原)

    减速器 index js import combineReducers from redux import mods from mods js export default combineReducers lt error comes fr
  • 使用 next.js 进行服务器端渲染与传统 SSR

    我非常习惯 SSR 意味着页面得到完全刷新并从服务器接收完整 HTML 的方法 其中根据后端堆栈使用 razor pub other 进行渲染 因此 每次用户单击导航链接时 它只会向服务器发送请求 整个页面将刷新 接收新的 HTML 这就是
  • react-native - 图像需要来自 JSON 的本地路径

    你好社区 我正在react native中开发一个测试应用程序 并尝试从本地存储位置获取图像 我实际在做什么 我将图像直接链接源提供给 var 并在渲染函数中调用此方法 react 0 14 8 react native 0 23 1 np

随机推荐

  • 猫鼬聚合框架中按日期排序

    我正在使用 mongoose 开发一个 nodejs mongodb 项目 现在我遇到了一个我不知道答案的问题 我正在使用聚合框架来获取分组结果 分组是在不包括时间数据字段的日期完成的 例如 2013 02 06 代码如下所示 MyMode
  • 在 CTE 内设置变量

    这是我第一次使用 SQLServer 2012 我的代码不起作用 CREATE PROCEDURE ReadCodeBuffer gint bigint pres tinyint level bigint quantity smallint
  • Python 需要 GIL。但 Jython 和 IronPython 没有。为什么?

    为什么您可以运行 Jython 和 IronPython 而无需 GIL 但 Python CPython 需要 GIL 解释器的某些部分不是线程安全的 尽管主要是因为通过大量使用锁使它们全部线程安全会极大地减慢单线程速度 source h
  • 使用 Leak Canary 防止误报

    我们观察到 Leak Canary 有很多误报 即 Leak Canary 检测到存在泄漏 但随后返回消息 LeakCanary NO LEAK FOUND 我认为这是因为GC没有及时声明对象 我们可以采取什么措施来减少这些误报 带过滤器查
  • C#,检测Windows上选定的文本?

    我会制作一个类似谷歌工具栏翻译功能的工具 但它是针对桌面的 我想做的是 在任何应用程序 word pdf liveMessenger等 中突出显示文本 并通过谷歌翻译API进行翻译 作为工具提示返回 我搜索了有关监视文本的msdn 我只发现
  • Imagemagick“mogrify -strip”-更改图像?

    In my 最后一个问题 https stackoverflow com questions 24683912 imagemagick depth convert询问转换和位深度 所以 这样做 convert in png out eps
  • 各种 .NET Framework 版本的操作系统兼容性

    每个 Net 框架的最低操作系统要求是什么 例如 对于哪个版本不可能运行每个操作系统 视窗95 视窗98 视窗98SE 视窗ME Windows NT 3 x 视窗NT 4 视窗2000 我相信所有 Net 框架都与 XP Vista Wi
  • 如何使用 Eclipse RCP 的打印选项打印 jasper 报告?

    我的问题 我在 Eclipse RCP 应用程序中有一个 ViewerComposite 它显示集成到其中的 Jasper Report jrxml 此 ViewerComposite 中显示的报告可以导出为 PDF RTF XML jrx
  • Krakenex API 多对查询

    我正在尝试使用 Krakenex python 库一次查询多个货币对的订单簿 当我对单一货币执行此操作时 这是有效的 如下所示 con krakenex API con load key kraken key con query publi
  • 创建一个处理 DatabaseFactory 的 DbContext 以更轻松地使用 DapperExtensions

    这几天我尝试使用一些基本的 CRUD 函数创建一个抽象的基础存储库简洁的扩展 https github com tmsmith Dapper Extensions 但作为示例给出的代码使用 SqlConnection 来连接到 SQL Se
  • .NET Core 项目与 .NET Framework 中为 System.Data.DataTable 生成的 JSON 的变化

    下面的程序在 NET Core 项目与 NET Framework 应用程序中运行时生成不同的 JSON Code class Program internal static readonly MediaTypeFormatter Defa
  • openlayers3如何始终启用徒手绘制

    在 OpenLayers3 v3 5 中 如何始终启用徒手绘制 默认启用徒手绘制是通过freehandCondition的财产ol interaction Draw 当前默认设置为 Shift 键 draw new ol interacti
  • “致命错误:无法找到本地 grunt。”在 Windows 7 上

    我根本无法让 grunt 在 Windows 7 上工作 按照 Grunt 网站上的说明进行操作 http gruntjs com getting started http gruntjs com getting started 我已经跑了
  • 如何合并多个 PDB 文件?

    我们目前正在使用单个命令行工具在 Windows 和 Linux 上构建我们的产品 到目前为止 它工作得很好 允许我们从源代码构建 并且具有比我们之前的任何构建系统所允许的更精细的依赖关系 这为我们带来了强大的增量和并行构建能力 为了简要描
  • 如何在Excel应用程序中使用javascript打开Excel html文件

    如何使用javascript或jQuery从浏览器中打开excel中的html文件 我一直在尝试仅使用 window open href 打开 html excel 文件 它在服务器上的位置是 server excelfiles myexc
  • 理解列表推导式的语法

    我不明白列表理解的语法 newList expression element for element in oldList if condition 我不明白的是 element 假设您有以下代码 List character for ch
  • Monotouch:UITableViewCell 高度

    我一直在网上冲浪以弄清楚如何使我的表格单元格高度适合其内容 我的内容具有不同的高度 我试着看看这个样本 http simon nureality ca simon says project d uitableviewcells autosi
  • 如何制作响应式表格[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个表来表示 html 页面中的一些数据 我正在尝试使该表具有响应能力 我怎样才能做到这一点 这里是Demo http jsfid
  • 如何在Android中的DatePicker中仅阻止过去的日期

    如何在Android中的DatePicker中仅阻止过去的日期 我正在使用过去日期和当前日期被阻止的示例代码 我只需要阻止过去的日期 而不是当前日期 这是我的代码 private DatePickerDialog OnDateSetList
  • 向 React Native WebView 添加 CSS 样式

    所以我对此有点困惑 我在应用程序的一部分中使用了 WebView 使用 WebView 的原因是因为我们从返回给我们 HTML 字符串的 API 端点拉取 此 HTML 字符串中的字体大小和其他内容的样式不是为了在移动应用程序中使用而设计的