【发布时间】:2018-08-26 02:49:44
【问题描述】:
我想使用动态 html 作为源,创建类似于 epub/ebook 阅读器(如 Kindle 应用程序或 iBooks)的响应式、移动优化阅读体验。
想象一篇长篇文章或博客文章需要大量垂直滚动才能阅读,尤其是在小型移动设备上。我想做的是将长页面分成多个全屏部分,允许用户使用左/右导航箭头和/或滑动手势来“翻页”文章。
有许多可用的 JS 库可以创建预定义幻灯片的“幻灯片放映”或“轮播”(使用 div 或其他容器元素)。但我希望文本和 html 内容能够动态地重新流动以适应任何设备视口并且仍然可读......就像 epub/ebook 用户界面,如 Kindle 应用程序或 iBooks。因此,对于同一篇文章,手机上的“页面”将比平板电脑或桌面视口上的多得多,并且如果/当视口大小发生变化时,这些“页面”将需要动态创建/调整(比如在移动设备上从纵向切换到横向)。
这是一个 javascript .epub 阅读器的示例:epub.js
...注意响应行为。当您调整视口大小时,所有文本都会重新排列以适应可用空间,从而增加或减少“页面”的总数。问题是 epub.js 需要一个 .epub 文件作为其源。
我想要的是与 html 页面相同的用户界面和功能。
我已经搜索并搜索了某种可以开箱即用的库,但找不到任何东西。
我意识到我可以使用转换脚本将我的 html 页面转换为 .epub 文件,然后使用 epub.js 在浏览器中呈现该文件,但这似乎非常迂回和笨拙。使用 html 作为直接源来模拟或模拟 .epub 阅读器用户体验会好得多,呈现/模拟客户端响应式电子书用户体验。
有谁知道这样的东西是否已经存在,或者我该如何自己构建它?
关键功能是动态/响应式文本重排。当视口尺寸减小时,文本/内容需要回流到下一个“页面”以避免任何垂直滚动的需要。我不知道如何有效地做到这一点。如果我自己编写代码,我可能会使用 jQuery Columnize 插件之类的东西,将所有列设置为width: 100vw; height: 100vh,这样每一列就像一个“页面”,然后弄清楚如何在这些“之间创建一个滑动 UI”页”。
非常感谢任何帮助!
【问题讨论】:
-
这是一个非常广泛的问题,并不具体或技术性不够,无法在此处发布。因此,它不值得回答,也许需要消失?无论如何,您需要寻找“响应式分页”脚本/库。从 2012 年开始,here's an answer,这就是我要开始的地方。使用 JS 分析“长格式”HTML 内容并根据视口大小动态分解。从那里找出动画页面的控件(滑动、箭头等)。如果您还考虑过动态服务器通信,那就是另一种蠕虫。
-
@user2655393 你找到解决办法了吗?
标签: javascript jquery html css