设置一个 DIV 高度等于另一个 DIV

Posted

技术标签:

【中文标题】设置一个 DIV 高度等于另一个 DIV【英文标题】:Set a DIV height equal with of another DIV 【发布时间】:2011-03-17 14:14:03 【问题描述】:

我有两个 DIV,.sidebar.content,我想设置 .sidebar 以与 .content 保持相同的高度。

我尝试了以下方法:

$(".sidebar").css('height':($(".content").height()+'px');

$(".sidebar").height($(".content").height());

var highestCol = Math.max($('.sidebar').height(),$('.content').height());
$('.sidebar').height(highestCol);

这些都不起作用。对于.content,我没有任何高度,因为会根据内容增加或减少。

请帮助我。我今天必须完成一个网页,这个(简单的)事情让我很头疼。

谢谢!

【问题讨论】:

你有页脚吗?如果你这样做了,也许你可以在上面声明clear: both;,然后你的侧边栏和内容将具有相同的高度。但这取决于您的布局以及您是否浮动侧边栏。 【参考方案1】:

我想你要找的是faux columns。

【讨论】:

【参考方案2】:

根据我的经验,在这类事情上使用 javascript 是一个非常非常糟糕的主意。网络应该是语义的。并非总是如此,但应该如此。 Javascript 用于交互功能。 html 用于内容。 CSS 用于设计。您可以将一个用于另一个目的,但仅仅因为您可以做某事并不意味着您应该这样做。

至于您的具体问题,简短的回答是:您不会拉伸侧边栏。你不必。您设置了一个看起来像侧边栏的背景,并让它看起来像一列。正如 Victor Welling 所说,它是一个假柱子。

这里是展示如何做到这一点的众多网页之一:

http://www.alistapart.com/articles/fauxcolumns/

但是,即使可行,使用 Javascript 来解决这种演示问题也是“错误的”。

【讨论】:

这个方法我知道,但是如果你已经申请了其他背景,还需要使用jQuery呢? 还有什么背景?能给我举个例子吗。你不应该需要为此使用jQuery。在 Victor 和我链接到的页面上的示例中,有一个背景看起来像两列。您的侧边栏很可能在一个容器中。容器应该看起来像您的侧边栏。或者您可以将容器加倍并将侧边栏的背景设置在最里面的容器中,并使用侧边栏的宽度。另一种处理方式是使用免费模板并对其进行修改。如果您观察模板的工作方式,并且模板做得很好,您可能会学到很多东西。 我同意 eje211,但我和 George 有同样的问题。我正在处理的网站在正文和侧边栏上有一个背景图像。正文背景不重复,而是一张大图像,可以拉伸以适应页面。我无法在背景中添加“人造列”,因为拉伸会弄乱侧边栏。因此,我不得不使用 jQuery。【参考方案3】:

eje211 有一点关于使用 CSS 来设置页面样式。这里有两种使用 CSS 的方法,一种是使用脚本来完成此操作:

    本文使列高相等without CSS hacks。

    这是一种获得相等列高的方法using a CSS hack。

    最后,如果您确实想使用 javascript/jQuery,您可以使用 jQuery .map() 页面的均衡高度脚本作为演示。

    $.fn.equalizeHeights = function()
      return this.height( Math.max.apply(this, $(this).map(function(i,e) return $(e).height() ).get() ) )
    
    

    那么就按如下方式使用吧:

    $('.sidebar, .content').equalizeHeights();
    

【讨论】:

【参考方案4】:

您的第一个示例无法正常工作的原因是因为拼写错误:

$(".sidebar").css('height':($(".content").height()+'px');

应该是

$(".sidebar").css('height':($(".content").height()+'px'));

您在 .content 选择器之前缺少一个尾括号。

【讨论】:

【参考方案5】:

我使用此技术根据另一个元素的高度强制页脚元素保留在页面底部。在你的情况下,你会;让侧边栏和内容 div 保持相同的高度可以执行以下操作。

    获取主div的高度;我猜那是 .content div;并将其分配给一个变量。

    var setHeight = $(".content").height();

    然后您可以使用 jQuery 获取侧边栏并使用变量分配内容高度。

    $(".sidebar").height(setHeight);

就这么简单。最终代码将如下所示。

`var setHeight = $(".content").height();`
`$(".sidebar").height(setHeight);`

Here are more examples. 使用 jquery 设置 div 高度(拉伸 div 高度)。

【讨论】:

【参考方案6】:

像魅力一样工作:

function sidebarHandler() 
  jQuery(".sidebar").css('height':(jQuery(".content").height()+'px'));
  jQuery(".sidebar").height(jQuery(".content").height());
  var highestCol = Math.max(jQuery('.sidebar').height(),jQuery('.content').height());
  jQuery('.sidebar').height(highestCol);

用你所有的其他 jQuery 东西初始化它:

jQuery(document).ready(function()  
  sidebarHandler();
);

【讨论】:

【参考方案7】:

$(window).resize(function()
   var height = $('.child').height();
   $('.parent').height(height);
)

$(window).resize(); //on page load
.parent
  background:#ccc;
  display:inline-block;
  width:100%;
  min-height:100px;

.child
  background:red;
  width:50%;
  position:absolute;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="parent">
  <div class="child">
  hellow i am floating as absolute <br>hellow i am floating as absolute <br>hellow i am floating as absolute <br>hellow i am floating as absolute <br>hellow i am floating as absolute <br>hellow i am floating as absolute <br>hellow i am floating as absolute <br>hellow i am floating as absolute <br>hellow i am floating as absolute <br>hellow i am floating as absolute
  </div>
</div>

【讨论】:

以上是关于设置一个 DIV 高度等于另一个 DIV的主要内容,如果未能解决你的问题,请参考以下文章

求大神指教啊,div+css,怎样用css控制一个div层的高度等于另一个层的高度,只用css控制不用js

如何将外部 div 的高度设置为始终等于特定的内部 div?

设置覆盖高度等于父div,不等于屏幕高度[重复]

设置div的高度等于窗口角度的高度

DIV宽度设置为百分比(如50%),如何使DIV的高度等于宽度

反应:使div的宽度等于高度。高度计算不正确