防止文章标题中的寡妇词

Avatar of Chris Coyier
Chris Coyier 发布

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 200 美元的免费积分!

从排版角度来说,“寡妇词”指的是尴尬地独自占据一行的单个单词。 它看起来不舒服,读起来也不舒服。 文章标题由于字体较大/行长较短,特别容易出现这种情况,并且寡妇词看起来异常尴尬。 例如,在这个博客上

很久以前,我曾经使用过一个 WordPress 插件来解决这个问题。 它基于 Typogrify,这是一个帮助简化网络上此类操作的小项目(自动)。 如今,该项目已经发展壮大,现在被称为 WP-Typography。 此插件不仅可以修复寡妇词,还提供各种功能来帮助改进网络排版,例如,自动将你的&符号包装在<span class=”amp”></span> 中,以便你可以 使用最佳的&符号

出于某种原因,我脑子里一直认为我不喜欢使用这样的插件。 我认为这是因为我曾经有一个“保存到 Delicious”按钮。 此插件用于修复寡妇词的技术是在文本块的最后两个单词之间添加一个&nbsp;(不换行空格),从而使寡妇词无法出现。 但是,当有人使用我的“保存到 Delicious”按钮时,&nbsp; 会直接显示在文章标题中,看起来很丑陋和奇怪。

因此,当我再次开始想要解决这个问题时,我转向 JavaScript 寻求帮助,而不是 PHP,这样我就可以单独定位标题,而不是 WordPress 用于显示标题的功能。(**更新** 2013 年 8 月,AJ Zane 建议测试以确保标题不止一个单词,否则它会被移除。)

$("h2 a").each(function() {
  var wordArray = $(this).text().split(" ");
  if (wordArray.length > 1) {
    wordArray[wordArray.length-2] += "&nbsp;" + wordArray[wordArray.length-1];
    wordArray.pop();
    $(this).html(wordArray.join(" "));
  }
});
  1. 将标题拆分为一个单词数组
  2. 使用不换行空格将最后两个单词连接在一起
  3. 删除数组的最后一个项目(现在已冗余)
  4. 使用空格将数组重新连接在一起,并替换标题

效果很好! 尽管现在我的博客上不再有“保存到 Delicious”按钮了,但我认为我会恢复使用功能更强大的 WordPress 插件来执行此操作。 我相信你们大多数人都会同意,对于这样的事情,使用服务器端技术是更明智的做法。 顺便说一下,我对这些社交书签按钮的理论是,如果你已经是 Delicious 等社交书签服务的使用者,那么你已经知道如何添加书签了。 你可用的浏览器工具提供了比点击我帖子上的按钮更好的用户体验……

其他技巧

David Walsh 今天与我合作,并提供了如何使用 MooTools 和 PHP 实现这些消除寡妇词的技术