榆树文本溢出指定的维度:溢出隐藏或滚动

时间:2014-01-13 23:30:09

标签: elm

我发现我需要一个元素来包含一些不是固定大小的文本(采取的操作日志),其中该元素具有固定大小。做出明显的事情会产生不良后果:

http://ikeran.org/images/overflow2.png

我正在使用的代码:

renderLog w h log =
  let rh = truncate ((toFloat h) * 0.2)
      contents = map (\m -> Text.text <| Text.height 12 <| Text.toText m) log
      d = flow down contents in
  size w rh d

我希望“大小”调用可以切断那个大小的内容。它没有。如果您对HTML非常熟悉,那就不足为奇了 - 默认overflowvisible

如果我使用的是CSS,我只需将overflow设置为hiddenscroll,然后继续我的快乐方式。有没有推荐的方法来实现这个与榆树?

1 个答案:

答案 0 :(得分:1)

我所知道的唯一方法是相当低级别。您可以做的是将这些文本行放入日志中,直到用完您想要使用的空间。 I got this idea from the mailing list

renderLog w h log =
  let contents = map (\m -> width w <| Text.text <| Text.height 12 <| Text.toText m) log
      heights = filter (\n -> n <= h) <| scanl1 (+) <| map heightOf contents
      d = flow down <| take (length heights) contents
  in height h d

你所做的是强迫每一段文字都是正确的宽度。这可以确保当您测量高度时,它将是日志中的高度 然后,您测量每个高度,并找出高度总和何时变得大于给定参数h。仅将文本项目置于何时发生将确保您​​的日志不会溢出。

以下是一个正在运行的示例:http://share-elm.com/sprout/52da7873e4b06194fd2d4149