【发布时间】:2012-12-20 18:02:49
【问题描述】:
我正在开发一个使用响应式布局的网站,但我遇到了 解决较新的 CSS 多列属性的缺点的问题 (http://dev.w3.org/csswg/css3-multicol/)。
当浏览器窗口足够宽时,我将文本一分为二 带有侧边栏的列用于较小的图像。多列 css 属性效果很好,但它们不太聪明。
第一部分被平均分成两个等高的列,但是 他们太高了。对于有人阅读本节,他们必须 沿着第一列向下滚动,然后返回到开头 接下来阅读其余部分。
第二部分也被分成两个等高的列,但是 只有两句话,看起来很别扭;真的没有 足够的内容来证明用户必须阅读的第二列。
在我看来,解决方案是这样的:
- 将部分分成具有固定最大高度的子部分。那 方式,您可以在不滚动页面的情况下跨列阅读,并且看起来更多 喜欢一篇文章。
- 将短于最大高度的部分保留为单列。
问题在于 CSS3 多列不能以这种方式工作。我觉得 唯一的方法是某种涉及做的javascript解决方案 计算字符数、CSS 文本属性和元素 尺寸,然后拆分字符串/附加新的 html 元素以将内容分配到单独的部分以使列正确中断。
记住两点:
- 这些列是可变宽度的,因此无法选择幻数。
- 该过程必须是可逆的,因此响应式布局可以在更窄的浏览器宽度下切换回 1 列。
有点棘手,但我认为这可能足以尝试。有没有人听说过有人可能正在解决 这个问题已经?或者,如果没有,您对如何放置 算法一起做这个?
非常感谢您的帮助。
13 年 1 月 8 日:
为了澄清,这里有一些响应式设计的预期模式的图像。 (因为我是新来的,所以只有两个链接)
模式一:移动端的单列线性化
模式2。Single-column with sidebar for iPad / narrow browser windows
模式 3。Two-column for wide browser windows
模式 3 是问题所在。第一部分的内容太长而无法放在一个页面上,因此在这种情况下,我将其划分为适合浏览器高度的行。这就是我正在寻找的 JavaScript 解决方案。
【问题讨论】:
-
您使用多列而不是三个浮动 div 是否有特定原因?
-
主要原因是网站是响应式的,对于不同的浏览器宽度有不同的css规则,所以使用硬编码的列在语义上是不正确的,而且它会导致我的单列布局出现布局问题.这是浏览器变窄时的屏幕截图:i.imgur.com/91B1P.png
-
您可以使用浮动 div 进行响应式布局。我的网站就是这样设置的。
-
您的网站有一个带有侧边栏的主栏;两种不同的内容。我同意这是非常可行的。但我正在尝试做的是响应式地跨行和列分发一篇文本。
-
为什么不在基于高度的媒体查询(也使用 em)中基于 EM 设置容器的最大高度?如果你想根据字符/字数来做事情,那么你就在 JS 领域,或者因为你控制了内容,为什么不对有足够内容的文章应用 .multiple 类,而对于那些没有的文章则不使用(或包含一个 .single,这是最不需要的)。 --- 我将在接下来的几个小时内开发 codepen.io。
标签: css text responsive-design fluid-layout paragraph