【问题标题】:On overflow create a new div and transfer overflow text to the new div在溢出时创建一个新 div 并将溢出文本传输到新 div
【发布时间】:2016-01-13 19:03:30
【问题描述】:

上下文:

我正在做一个项目,如果完成得当,它应该可以用作专门的文本编辑器。它特别需要页面来输出,因此与大多数在线文本编辑器不同,它们可以简单地使用不断扩展的文本框或机械上类似的东西,我正在寻找一种方法来创建一个“新页面”(本质上是一个新的容器 div),当它溢出时它在里面。

我找到了一个related stackoverflow question,从我的搜索看来,大多数解决方案都不是主动更改文本的最佳解决方案,而是更适合在页面渲染中使用。在最佳情况下,它的功能应该类似于在 Word 文档上创建新页面(溢出时自动创建)并使用 javascript/jquery。

我意识到这样做可能比最初看起来更复杂,但我希望有人知道一篇文章或一段代码可以为我指明正确的方向。

问题:

我认为我实际上可以处理“创建新页面”(下一个容器 div),但我不确定如何处理主动溢出的文本。例如,如果有人删除了第一页上的一些文本,那么如果第二页上的文本只是挂在那里,那将非常笨拙。如果您正在编辑 Word 文档,我希望文本/页面的反应至少类似

我不想在每次添加或删除字符时检查文本,但这是唯一的方法吗?如果是这样,对我来说最有效的方法是什么,这样我就不会让浏览器陷入困境。

这是我正在进行的项目,旨在提供更多背景信息http://www.naturalcrit.com/homebrew/

【问题讨论】:

  • 我认为您必须主动检查用户输入才能重排文本。为什么不使用 collumnizer 插件之类的东西作为起点:welcome.totheinter.net/columnizer-jquery-plugin
  • 我不明白你会如何摆脱看击键。除非你能捕捉到像:overflow 这样的伪样式选择器,但那是不存在的。需要一个你正在做什么的例子才能肯定地说出来。您可以将div 包裹在div 中并查看内部div 的高度或宽度达到外部div 的阈值,然后移动“溢出”。您仍然必须将事件与击键联系起来,因为每次更改其内容时,您都在测量内部divwh。也许你可以绑定到.change()
  • 查看stackoverflow.com/questions/2059743/… 了解一些溢出检测技术。
  • @BornToDoStuff 我认为对于这个应用程序,我会坚持使用 1 div 并且只显示它的一部分,在某种意义上是一个视口,并且随着更多内容的附加或更改,更多的列是创建了文本换行的内容。然后我们在视口中滚动 div。
  • @BornToDoStuff 是的!让列不断增长。我在页面中的列样式方面没有看到太多,但我看起来也不是很努力。

标签: javascript jquery html css


【解决方案1】:

我认为功能性和简单性的最佳答案是使用 CSS3 column 并让它横向扩展。然后为列或其他元素添加样式,使它们看起来 像页面。添加一个 x 轴滚动条来滚动浏览伪页面(这只是很多具有固定高度的列)并且它实际上完成了。

这意味着页面将从左到右而不是从上到下,但这并不是一个糟糕的解决方案。感谢@Twisty 使用我已经在使用并且可以轻松访问的东西的简单解决方案。它甚至不涉及代码,只是更多的 CSS!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    相关资源
    最近更新 更多