当前位置: 首页 > 面试题库 >

如何强制一个浮动DIV匹配另一个浮动DIV的高度?

赏弘
2023-03-14
问题内容

我的HTML代码只是将页面分为两列,分别为65%,35%。

<div style="float : left; width :65%; height:auto;background-color:#FDD017;">
   <div id="response">
   </div> 
</div>
<div style="float : left; width :35%;height:auto; background-color:#FDD017;">
   <div id="note">
   </div>
</div>

在中response div,我有可变数据;在中note
div,我有固定数据。即使两个div具有两个不同的数据集,我也需要它们以相同的高度显示,以便背景色看起来好像填充了包含两者的框。当然,问题出在response
div,因为其高度取决于当前显示在其中的数据量。

如何确保两列的高度始终相等?


问题答案:

将其包裹在包含背景色的包含div中,并在“列”之后添加一个清除div。

<div style="background-color: yellow;">
  <div style="float: left;width: 65%;">column a</div>
  <div style="float: right;width: 35%;">column b</div>
  <div style="clear: both;"></div>
</div>

更新以解决一些评论和我自己的想法:

该方法之所以有效,是因为它本质上是简化了您的问题,在这种有点“过时”的方法中,我将两列放在其后,然后是一个空的clearing元素,clearing元素的工作是告诉父级(有背景)这是哪里浮动行为结束后,这将允许父对象在透明位置实际渲染高度为0的像素,这将是先前最高浮动元素的大小。

原因是要确保父元素与最高的列一样高,然后在父元素上设置背景以使两列具有相同的高度。

应该注意的是,这种技术是“老套的”,因为更好的选择是使用诸如clearfix之类的东西或通过简单地在父元素上隐藏溢出来触发高度计算行为。

尽管这在有限的情况下可行,但是如果您希望每个列在外观上看起来有所不同,或者在它们之间留有空隙,那么在父元素上设置背景将不起作用,但是有一种技巧可以达到这种效果。

诀窍是在所有列中添加底部填充,以达到您期望的最大大小,这可能是最短列和最高列之间的差异,如果您无法解决此问题,则选择一个大数字,然后需要添加底数为负的相同数字。

您将需要隐藏在父对象上的溢出,但结果将是每一列都将请求呈现由边距建议的此额外高度,但实际上并不需要该大小的布局(因为负边距会抵消计算)。

这将以最高的列的大小渲染父对象,同时允许所有列以其高度+所用底部填充的大小渲染,如果此高度大于父对象,则其余部分将被剪掉。

<div style="overflow: hidden;">
  <div style="background: blue;float: left;width: 65%;padding-bottom: 500px;margin-bottom: -500px;">column a<br />column a</div>
  <div style="background: red;float: right;width: 35%;padding-bottom: 500px;margin-bottom: -500px;">column b</div>
</div>

您可以在bowers and wilkinshtml" target="_blank">网站上看到此技术的示例(请参阅页面底部的四个水平聚光灯图像)。



 类似资料:
  • 问题内容: 我搜索了其他问题,尽管这个问题似乎与其他几个问题相似,但到目前为止,我所看到的任何问题似乎都无法解决我遇到的问题。 我有一个div,其中包含许多其他div,每个div都向左浮动。这些div分别包含照片和标题。我要的是使照片组位于包含div的中心。 从下面的代码中可以看到,我已经尝试在父div上同时使用和,并且还在照片后添加了(如另一个主题中所述)。似乎没有什么改变。 谢谢。我感谢任何建

  • 我有一个带有类属性。我无法改变这一点。 我试图在它的右边浮动一个较小的div,但是,它总是出现在父div的下面。我必须如何标记CSS?

  • 各位早上好,我正在创建一个产品销售系统,这个话题会有点长,因为我想好好解释一下。 正在用Vaadin+MySQL+springboot+Maven开发的系统 在主屏幕上,我们有一个网格,上面有“新建”、“更改”和“删除”按钮: 当点击new按钮时,将打开一个窗口,开始“销售”产品: 这里的问题是这样的,当我点击“+项”时会出现以下情况: 问题:创建了一个滚动条(在窗口的右边),保存、关闭和+项按钮

  • 问题内容: 我有2个div并排。我不知道它们的高度,它根据内容而改变。有没有一种方法可以确保它们始终保持相同的高度,即使其中一个拉伸时也只能使用CSS? 我做了一个小提琴来展示。我希望红色和蓝色的div高度相同… 这是CSS: 问题答案: 您可以尝试使用float来代替使用float。但是,您可能会发现某些较旧的浏览器不了解此规则。见下文:

  • 我试图在一个区域内放置一个div,并保持它垂直居中,然后它的内部有两个跨度,一个向左浮动,另一个向右浮动。但是我似乎不能同时做这两件事。我在React中这样做,但我不认为这会有什么不同,但我加入它来解释语法。 我先说: 然后我有ResultsHeader定义为: 当我这样做时,我会将所有span文本移到左侧,例如找到的。如果我将显示更改为,跨距将正确浮动,但文本不再垂直居中。取而代之的是,这一切都

  • 问题内容: 这是HTML: 这是CSS: 使用Chrome开发人员工具检查后,内部div的高度为0px。 我如何强制其为父div高度的100%? 问题答案: 为了使高度基于其内容并基于其高度,使两个元素都绝对定位。 可以在css height属性的规范中找到更多详细信息,但本质上,如果的height为,则必须忽略height , 除非_绝对定位。然后,高度将为0, _除非 将其自身绝对定位。 但是