【问题标题】:3 column layout with 100% width and variable centered div具有 100% 宽度和可变居中 div 的 3 列布局
【发布时间】:2012-07-26 16:20:40
【问题描述】:

我想创建一个 3 列布局,其中一个居中 div,一个左一个右 div。左右 div 应该从居中的 div 扩展到页面的左右端。居中的 div 包含具有透明区域的元素,因此居中的 div 不应与左右 div 重叠。如果居中的 div 具有固定宽度,我设法创建了一个解决方案。问题是,是否可以创建一个类似的布局,但具有动态宽度的居中 div?

jsFiddle Link

这里是固定宽度的代码。

CSS:

#divCenter{
  position:absolute;
  top:0%;
  left:0;
  right:0;
  height:50px;
  width:500px;
  margin:0 auto;
  border: 1px solid #aaaaff;
  background:#aaaaff;
  z-index:2;
}
#divLeft{
  position:absolute;
  top:0;
  left:0%;
  width:50%;
  border: 1px solid #aaffaa;
  z-index:1;
}
#divLeftInner{
  height:60px;
  margin-right:250px;
  background:#aaffaa;
}
#divRight{
  position:absolute;
  top:0;
  right:0%;
  width:50%;
  border: 1px solid #ffaaaa;
  z-index:1;
}
#divRightInner{
  height:60px;
  margin-left:250px;
  background:#ffaaaa;
}

HTML:

<div id="divCenter">
</div>
<div id="divLeft">
  <div id="divLeftInner">
  </div>
</div>
<div id="divRight">
  <div id="divRightInner">
  </div>
</div>

【问题讨论】:

标签: html css layout


【解决方案1】:

将所有列向左浮动并将左右列设置为相等的宽度 - 使用 JavaScript。

HTML

<div id="wrapper">
    <div id="left" class="col"></div>
    <div id="mid" class="col"></div>
    <div id="right" class="col"></div>
</div>​

CSS

.col {float:left;height:200px;}
#left, #right {width:30%;background:red;}
#mid {width:40%;background:blue;}

jQuery

//extra verbose for clarity's sake
var setWidths = function() {
    var wrapWidth = $("#wrapper").width();
    var midWidth = $("#mid").width();
    var leftOverWidth = wrapWidth - midWidth;
    var sideColWidth = leftOverWidth/2;
    $(".sidecol").width(sideColWidth);
}

//set new sizes whenever the window is resized
$(window).on("resize", setWidths);

$(function() {
    setWidths(); //set correct sizes when the DOM has loaded
});​

http://jsfiddle.net/GYGL3/37/

【讨论】:

  • 哦,我明白了。很抱歉错过了那个小细节。 :) 我认为您需要使用 JavaScript 来解决这样的问题。让我为你更新我的答案,等等……
  • 已更新。据 知道您所要求的不仅仅是 CSS 的可行宽度。
  • 感谢您的代码 - 它似乎有效。无论如何,我不想依赖启用的 JavaScript 来实现该布局。如果仅使用 CSS 是不可能的,我将使用固定宽度居中 div 的解决方案。
  • 要使用简单的 CSS,您基本上需要能够以某种方式说“宽度:剩余空间的 50%”,我认为这是不可能的。但我希望我错了,因为它真的很有用。
猜你喜欢
  • 1970-01-01
  • 2012-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-21
  • 2012-06-15
相关资源
最近更新 更多