在奇数个元素之后,在页面中重新获得垂直节奏

时间:2011-09-06 13:48:09

标签: css typography vertical-rhythm

我正在尝试构建具有一致垂直节奏的2列布局(对齐的基线)。对此的计算非常简单,我让它们正常工作。我的问题是:

当两列文本并排放置时,当列中的垂直边距不是“整行”时,是否可以保持(或重新获得)垂直节奏。

在这个示例中:http://jsfiddle.net/beejamin/PMCXt/我有一个无序列表,其中列表和列表项都有margin-bottom的“半行”。当有一个偶数个列表项时,边距加起来整行,节奏保持不变(这很好!)。但是当有一个奇数时,基线会被抛出,并且不能再连接起来(除非我很幸运,另一个奇数列表出现)。

设置列表项的整行边距太多(特别是长列表),设置无边距是不够的。

有什么方法可以避免/减轻这种情况吗?我不会提前知道行数,我不想使用javascript(我正在尝试构建一个可以重用的通用方案)。

2 个答案:

答案 0 :(得分:2)

好的,所以这是一个纯CSS解决方案。它依赖于:nth-​​child和:last-child选择器,因此只有支持这些选择器的浏览器才会这样做。这对我来说已经足够了,因为它真的只是一个很好的抛光。使用一些javascript也很容易申请旧浏览器。

以下是工作示例:http://jsfiddle.net/beejamin/DpSzW/

关键是这个选择器:

li:nth-child(odd):last-child { margin-bottom: 1.6em /* One full line */}

每当最后一个孩子也是一个奇数孩子时,这会为列表的最后一个孩子添加一个完整行的边距。全线余量取代了物品通常具有的半线,因此恢复了垂直节奏。基本上,它使任何列表总是占用整行数。

当一个列表具有偶数个项目时,选择器什么都不做,一切都很好。

答案 1 :(得分:0)

有趣的问题!

不是100%肯定,因为我没有在所有条件下进行测试,但这似乎有效。

  1. 保持line-height不变。
  2. 保持marginsline-height相同。
  3. 保持font-size不变。
  4. 示例:http://jsfiddle.net/jasongennaro/PMCXt/1/