【问题标题】:Text Weighted to Last Line of Paragraph文本加权到段落的最后一行
【发布时间】:2012-03-02 18:54:34
【问题描述】:

这是一个不寻常的人,而且是一个可以雄辩地解释的强硬派!

我试图强制段落的第一行包含最少的字符数,而在正常情况下它将是最后一行。这可能没有多大意义,所以我将使用一个示例。

文本通常格式如下:

Lorem ipsum dolor sit amet, consectetur adipiscing
elit. Curabitur mollis lorem sit amet nisl
scelerisque mollis. Vestibulum tincidunt sodales
turpis quis convallis. Curabitur id diam dictum
arcu placerat lobortis.

我希望文本格式如下:

Lorem ipsum dolor
sit amet, consectetur adipiscing elit. Curabitur
mollis lorem sit amet nisl scelerisque mollis.
Vestibulum tincidunt sodales turpis quis convallis.
Curabitur id diam dictum arcu placerat lobortis

如您所见,第一行是最短的。我已经尝试寻找解决方案,但无济于事;很难知道实际要搜索什么!

我假设如果有人曾经这样做过,那么解决方案将是脚本而不是 CSS。我通常会自己用 PHP 编写脚本,但一想到它就伤脑筋!

有人有什么想法吗?

【问题讨论】:

  • 所以想法是最后一行尽可能接近一行的整个宽度? JavaScript 是一种选择吗?
  • 可以使用从右到左/从左到右的阅读顺序吗?
  • 感谢您的快速响应。是的,最后一行应该有一个完整的文本宽度(或尽可能接近)。 Javascript 绝对是一种选择,事实上任何存在的代码我确信我可以适应使用 php/js。
  • 这里不能使用 rtl,JohnP,最后一行仍然是最短的,不过,感谢您的建议。

标签: php css text formatting paragraph


【解决方案1】:

如果我正确理解了您的问题,这应该会给您想要的结果:

<?php

$str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id magna ut dui cursus volutpat at at orci. Cras aliquam, est sit amet malesuada pulvinar, justo massa pellentesque mi, nec gravida nunc velit vitae risus. Nullam bibendum purus non lacus malesuada faucibus in auctor eros. In vulputate magna quis elit gravida a dignissim elit sagittis. Sed purus dolor, imperdiet a sodales vitae, semper sed dolor. Nunc iaculis leo non justo volutpat lobortis dapibus purus pharetra. Curabitur quis dolor tortor. Mauris egestas euismod justo, vel rutrum ligula dictum nec. Quisque a arcu nibh, ac dapibus diam. Ut eget sapien pretium nulla viverra malesuada. Donec at lectus quam.";

echo strrev(wordwrap(strrev($str), 50));

?>

输出:

Lorem
ipsum dolor sit amet, consectetur adipiscing elit.
Nunc id magna ut dui cursus volutpat at at orci.
Cras aliquam, est sit amet malesuada pulvinar,
justo massa pellentesque mi, nec gravida nunc
velit vitae risus. Nullam bibendum purus non lacus
malesuada faucibus in auctor eros. In vulputate
magna quis elit gravida a dignissim elit sagittis.
Sed purus dolor, imperdiet a sodales vitae, semper
sed dolor. Nunc iaculis leo non justo volutpat
lobortis dapibus purus pharetra. Curabitur
quis dolor tortor. Mauris egestas euismod
justo, vel rutrum ligula dictum nec. Quisque a
arcu nibh, ac dapibus diam. Ut eget sapien pretium
nulla viverra malesuada. Donec at lectus quam.

【讨论】:

  • 完美。好吧几乎!只需要一个 nl2br 在 HTML 中正确回显,即 'echo nl2br(strrev(wordwrap(strrev($str), 50)));'谢谢凯文。
【解决方案2】:

我刚刚上传了一个名为 Virgin Headlines 的新插件(概念)。在寻找其他实现效果的方法时,我发现了你的问题。如果我没记错的话,我的插件可以解决您的问题。它还没有完成,但如果你按照 github 上的自述文件中的方式使用它,它就可以使用:

https://github.com/coocoomoo/VirginHeadlines

这是一个演示: http://coocoomoo.com/dev/virgin-headlines/

如果您尝试过,请报告浏览器问题!谢谢!

【讨论】:

    【解决方案3】:

    您需要反转字符串的单词,正常格式化,检查最后一行有多少单词,然后将原始字符串格式化为第一行的单词数与反转字符串的最后一行的单词数相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-02
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 2011-04-09
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      相关资源
      最近更新 更多