我希望左侧与右侧(包含图像)div
高度相同。div
问题是图像是流动的(也就是说,我不能在左边有一个特定的大小div
)。
这可能吗?
<div class="container">
<div class="left">
<div>text</div>
<div>text</div>
</div>
<div class="right">
<div>image</div>
</div>
</div>
遗憾的是,这不能用 CSS 直接完成……它需要 JavaScript。这是使用 jQuery 的方法
var highestCol = Math.max($('.left').height(),$('.right').height());
$('.container > div').height(highestCol);
这将获得较高的高度,<div>
然后将其分配给左右两侧。这样,两者将具有相同的高度。
我建议您在column
左右 div 中添加一个类似的类。然后你可以使用:
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);
});
VKen,看起来你想要实现的是一个 Faux Column 布局。
一个非常简单(无 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 更长,反之亦然)。
有关更多信息,A list apart 有一篇很好的文章:http ://www.alistapart.com/articles/fauxcolumns/
这是一个列表,其中包含不同的方法来做到这一点:http ://css-tricks.com/fluid-width-equal-height-columns/