如何将 HTML 内容拆分为适合屏幕的页面
How can I split HTML content into pages that fit the screen?
我正在制作一个图书阅读器Web应用程序。从服务器中,我得到了一个长字符串,其中包含所有 HTML 格式的书籍文本。它看起来像这样:
<div><p>Alice was beginning....</p></div></div>to get very ... </div>
我想要的是将此文本拆分为页面。我想得到这样的东西:
<li id='page1'>... text ...</li>
<li id='page2'>... text ...</li>
...
单个页面应填满视口。用户应该无法滚动书籍文本。相反,他们应该能够使用按钮在页面之间移动。
我需要一些函数来测量所有内容,将其拆分为相同最大高度的片段,并用页码标记这些片段。它还必须考虑图片和长段落(可能不适合单个页面(。
我怎样才能完成所有这些工作?
要找出每个内容的尺寸,你必须让浏览器实际呈现它,然后测量它。此外,如果你想在流程中间(例如在段落中间(中断,事情会变得非常困难。(如果不将它们包装在元素中,则无法测量单个字符/单词。您还必须禁用缩放等,以便您的测量具有一些持久的意义。总而言之,HTML 渲染引擎是专门为渲染流内容而量身定制的,这与分页内容几乎相反。
但是,您可以采取一些分页方法,这两种方法实际上都不涉及呈现整个文本和进行测量。
滚动覆盖
我会尝试的一种方法是简单地
- 将所有文本呈现到容器中, 以
- 滚动条不可见的方式设置容器样式(例如,将其推离屏幕(,
- 禁用手动滚动,以及
- 提供"分页"按钮,以编程方式按"页面"的高度准确滚动。
此解决方案的优点是易于实现,但并不完美。图像可以跨中断呈现,用户将无法看到它们的完整。
列
我在短时间内能想到的唯一另一种方法是使用列。你必须
- 将所有文本呈现到容器中,
- 将容器样式设置为"无限"宽,并具有"无限"数量的列,每个列的宽度为页面的宽度,
- 将容器绝对放置在其父容器中,
- 使您的"分页"按钮将容器水平移动页面宽度。
此解决方案需要支持 columns
的现代浏览器,但使用 columns
解决了将流内容正确分解为页面的问题。如果可能的话,我建议先尝试一下。
相关文章:
- 如何将屏幕分辨率乘以 80%,然后在代码中使用
- 在不打开聊天屏幕的情况下制作Zopim-ding代理
- 拆分单词jquery
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 使用图像数组列表的simplegallary.js显示适合桌面屏幕的图像
- 导航栏没有调整到浏览器屏幕的大小
- 调整屏幕大小后不显示子菜单
- 将字符串拆分为数组时出现JavaScript错误
- 如何在p5.js中管理多智力竞赛游戏的多个屏幕
- 在JavaScript中拆分日期字符串的更好方法是什么
- jQuery:当屏幕大小改变时,如何更改默认图像和悬停图像
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- webpack代码拆分了handlerbs文件——结果是文件很大
- 如何知道元素在屏幕上是否可见.如果没有,请滚动页面
- 如果使用javascript函数屏幕太小,我该如何更改HTML文件的背景色
- 如何将字符串拆分为字符,但在javascript中保留空格
- 简单地将拆分变量添加到对象中
- Jquery 验证表单问题,同时拆分 2 个屏幕
- 如何将 HTML 内容拆分为适合屏幕的页面
- 拆分一个HTML页面,在多个屏幕上显示不同的视图