【问题标题】:CSS columns: both fluid and flexible in widthCSS 列:宽度灵活灵活
【发布时间】:2011-10-08 23:50:45
【问题描述】:

在 2011 年,我被 2 列布局难住了。我感到惭愧。 ;)

挑战是想出这个:

+--------------------------------------++----------------+
| This is a header with potentially    || button div     |
|                                      ||                |
| long text that will wrap most likely |+----------------+
|                                      |
| but can't go under the button to the |
|                                      |
| right                                |
+--------------------------------------+

对于典型的 2 列布局,您将左列的边距设置为与右侧 div 的边距相等,这没什么大不了的。然而,这个特定示例中的变量是,我不知道在任何给定时间右侧的 div 有多宽(它基于会变化的文本行。

总之,我需要:

  • 2 列布局
  • 两列都占满了整个宽度
  • 右侧的列与其包含的文本一样宽
  • 左侧的列与剩余空间一样宽

似乎我之前必须构建它,但我很难过。

我对 CSS、JS 或 jQuery 解决方案持开放态度。

编辑:

实际上,我已经可以看到一个相当简单的 jQuery 解决方案。我可以抓取右侧 div 的渲染宽度,然后做一些数学运算,从父容器的宽度中减去该宽度,然后将左列的宽度设置为相同。如果没有干净的 CSS 选项,那将是我的后备计划。

【问题讨论】:

  • 列必须等高吗?您需要支持哪些浏览器?
  • 不...不需要等高。浏览器支持...现在,我们只说 webkit(有效的浏览器)。

标签: css fluid-layout two-column-layout


【解决方案1】:

见:http://jsfiddle.net/vpADP/

它适用于 IE7+ 和所有现代浏览器。

HTML:

<div id="buttonDiv">button div as wide as text</div>
<div id="leftDiv">
    left div
</div>

CSS:

#leftDiv {
    overflow: hidden
}
#buttonDiv {
    float: right
}

这不是overflow: hiddenread this for details 的典型用法。

【讨论】:

  • 太棒了!我对这种技术一无所知。那太棒了。唯一挑剔的是它会反转标记中的内容流,但这是我在这个特定实例中可以愉快地忍受的副作用。
  • 是的,这是一个缺点。这种技术不可能解决这个问题。 This 是你尝试时会出现的那种疯狂 :)
  • 我也需要这样做,但要求颠倒了(左列优先,右列得到废料)。我试着弄乱小提琴,但我无法让它工作。
  • @RTF:看着your question,你想要这个吗? jsfiddle.net/thirtydot/PJdNW/3
  • @thirtydot 是的!这正是我一直在寻找的。我实际上刚刚走了 JS 路线,效果很好,但这绝对是可取的。如果您想将其放入我的问题的答案中,我会为您接受。否则,我会用你的代码自己回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-09
  • 2018-07-10
  • 1970-01-01
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多