我正在一个使用响应式布局的网站上工作,但在解决较新的 CSS 多列属性的缺点时遇到了问题(http://dev.w3.org/csswg/css3-multicol/) .
当浏览器窗口足够宽时,我将文本分成两列,并带有一个用于较小图像的侧边栏。多列 css 属性效果很好,但它们不太聪明。
第一部分被均匀地分成两个等高的列,但它们太高了。对于阅读本节的人,他们必须沿着第一列向下滚动,然后返回到下一列的开头才能阅读其余部分。
第二部分也分成两个等高的栏,但是只有两个句子,看起来很别扭;没有足够的内容来证明用户必须阅读的第二列。
在我看来,解决方案是这样的:
- 将部分分成具有固定最大高度的子部分。这样,您可以在不滚动页面的情况下跨栏阅读,它看起来更像是一篇文章。
- 将短于该最大高度的部分保留为单列。
问题是 CSS3 多列不能以这种方式工作。我认为唯一的方法是某种 javascript 解决方案,涉及对字符数、css 文本属性和元素尺寸进行计算,然后拆分字符串/附加新的 html 元素以将内容分配到单独的部分以使列中断正确。
请记住两件事:
- 这些列是流体宽度的,所以选择幻数是行不通的。
- 该过程必须是可逆的,因此响应式布局可以在更窄的浏览器宽度下切换回 1 列。
有点棘手,但我认为这可能足以尝试。有没有人听说过有人可能已经在解决这个问题?或者,如果没有,您对如何为此组合算法有任何想法吗?
非常感谢你的帮助。
13 年 1 月 8 日:
为了澄清,这里有一些响应式设计的预期模式的图像。(因为我是新来的,所以只有两个链接)
模式一:移动端单列线性化
模式 2. iPad 侧边栏单栏/窄浏览器窗口
模式 3.宽浏览器窗口的两列
模式 3 是问题所在。第一部分的内容太长而无法放在一个页面上,因此在这种情况下,我将其划分为适合浏览器高度的行。这就是我正在寻找的 JavaScript 解决方案。