我希望左div
与右div
(包含图片)的高度相同。
问题是图像是流动的(也就是说,左边div
不能有特定的尺寸)。
这可能吗?
<div class="container">
<div class="left">
<div>text</div>
<div>text</div>
</div>
<div class="right">
<div>image</div>
</div>
</div>
答案 0 :(得分:2)
可悲的是,这不能用CSS直接完成......它需要JavaScript。以下是使用jQuery
的方法var highestCol = Math.max($('.left').height(),$('.right').height());
$('.container > div').height(highestCol);
这将获得较高的<div>
的高度,然后将其分配给左右两侧。这样两者都具有相同的高度。
我建议您在左右div中添加类似column
的类。然后你可以使用:
var highestCol = Math.max($('.left').height(),$('.right').height());
$('.column').height(highestCol);
我们也可以将它用作jQuery插件......考虑一下:
$.fn.setAllToMaxHeight = function(){
return this.height( Math.max.apply(this, $.map( this , function(e){
return $(e).height()
}) ) );
}
通过这种方式,您可以在任何希望它们具有相同高度的div上使用它。
$('div.columns').setAllToMaxHeight();
当然,我们希望我们的代码在所有图像被加载时运行(因为如果不是并且DOM准备就绪,高度将不正确),所以我们将代码包装在:
$(window).load(function () {
// use the plugin way :
$('div.columns').setAllToMaxHeight();
// or use the other way :
var highestCol = Math.max($('.left').height(),$('.right').height());
$('.column').height(highestCol);
});
答案 1 :(得分:1)
VKen,你想要实现的是人造柱布局。
一个非常简单(无js)的解决方案是使用覆盖容器div的图像:
.container{overflow:hidden;background: url(faux_background.jpg) repeat-y}
.left,
.right{float:left;}
.left{width:30%}
执行以下操作: 无论高度如何,容器都会包裹左右div。 左边的div总是30%。 容器div的背景将释放出无限增长的左div的错觉(假设正确的div更长,反之亦然)。
有关详细信息,请单独列出一篇很好的文章:http://www.alistapart.com/articles/fauxcolumns/
答案 2 :(得分:0)
以下是使用不同方法执行此操作的列表:http://css-tricks.com/fluid-width-equal-height-columns/