我有两个div并排 . 我希望它们的高度相同,并且如果其中一个调整大小,则保持不变 . 虽然我无法想象这一点 . 想法?
为了澄清我令人困惑的问题,我希望两个盒子总是大小相同,所以如果因为文本被放入其中而增长,那么另一个应该增长以匹配高度 .
<div style="overflow: hidden">
<div style="border:1px solid #cccccc; float:left; padding-bottom:1000px; margin-bottom:-1000px">
Some content!
Some content!
Some content!
Some content!
Some content!
</div>
<div style="border:1px solid #cccccc; float:left; padding-bottom:1000px; margin-bottom:-1000px">
Some content!
</div>
</div>
20 回答
Flexbox
使用flexbox,它只是一个声明:
旧版浏览器可能需要前缀,请参阅browser support .
如果你不介意其中一个
div
是一个主人并指示两个div
的高度,那就是:Fiddle
无论如何,右侧的
div
将扩展或挤压并溢出以匹配左侧div
的高度 .两个
div
必须是容器的直接子节点,并且必须在其中指定它们的宽度 .相关CSS:
这是许多人遇到的常见问题,但幸运的是,一些聪明的头脑如Ed Eliot's on his blog已在网上发布了他们的解决方案 .
基本上你做的是通过添加一个
padding-bottom: 100%
然后"trick the browser"使得两个div /列非常高,认为它们使用margin-bottom: -100%
并不高 . Ed Eliot在他的博客上更好地解释了这一点,其中还包括许多例子 .这是CSS从未真正拥有任何解决方案的领域 - 你要使用
<table>
标签(或使用CSSdisplay:table*
值伪造它们),因为这是“保持一堆元素高度相同”的唯一地方实现 .这适用于所有版本的Firefox,Chrome和Safari,至少来自版本8的Opera,以及来自版本8的IE .
使用Javascript
使用jQuery,你可以在一个超级简单的单行脚本中完成它 .
使用CSS
这有点儿有趣 . 该技术称为Faux Columns . 或多或少,您实际上并没有将实际高度设置为相同,但是您设置了一些图形元素,使它们看起来具有相同的高度 .
我很惊讶没有人提到过(非常古老但可靠的)Absolute Columns技术:http://24ways.org/2008/absolute-columns/
在我看来,它远远优于Faux Columns和One True Layout的技术 .
一般的想法是,具有
position: absolute;
的元素将位于具有position: relative;
的最近父元素上 . 然后通过分配top: 0px;
和bottom: 0px;
(或您实际需要的任何像素/百分比)来拉伸列以填充100%高度 . 这是一个示例:您可以使用Jquery的Equal Heights插件来完成,这个插件使得所有div都与其他div完全相同 . 如果其中一个成长,其他也会成长 .
这里有一个实现示例
链接在这里
http://www.cssnewbie.com/equalheights-jquery-plugin/
你可以使用Faux Columns .
基本上它使用包含DIV的背景图像来模拟两个等高DIV . 使用此技术还允许您向容器添加阴影,圆角,自定义边框或其他时髦图案 .
仅适用于固定宽度的盒子 .
经过充分测试,并在每个浏览器中正常工作 .
刚刚在搜索这个答案时发现了这个帖子 . 我只是做了一个小jQuery函数,希望这有帮助,就像一个魅力:
JAVASCRIPT
HTML
这个问题是在6年前提出来的,但现在仍然值得用flexbox布局给出一个简单的答案 .
只需将以下CSS添加到父亲
<div>
,它就可以了 .前两行声明它将显示为flexbox . 并且
flex-direction: row
告诉浏览器它的子项将显示在列中 . 并且align-items: stretch
将满足所有子元素将延伸到其中一个元素变得更高的相同高度的要求 .我喜欢使用
pseudo elements
来实现这一目标 . 您可以将其用作内容的背景,并让它们填充空间 .使用这些方法,您可以在列,边框等之间设置边距 .
CSS网格方式
这样做的现代方法(也避免了必须围绕每两个项目声明
<div class="row"></div>
-wrapper)将是使用CSS网格 . 这也使您可以轻松控制项目行/列之间的间隙 .你可以使用jQuery轻松实现这一目标 .
CSS
jQuery的
HTML
你需要包括jQuery
我知道它已经很长时间了,但无论如何我都会分享我的解决方案 . 这是一个jQuery技巧 .
--- HTML
---- CSS
--- JQUERY
Fiddle
HTML
CSS
这是一个jQuery插件,它为同一行中的所有元素设置相等的高度(通过检查元素的offset.top) . 因此,如果您的jQuery数组包含来自多行(不同的offset.top)的元素,则每行将具有一个单独的高度,基于该行上具有最大高度的元素 .
};
我遇到了同样的问题所以我使用jquery创建了这个小函数,因为jquery现在是每个Web应用程序的一部分 .
您可以在页面就绪事件上调用此函数
我希望这适合你 .
我最近遇到过这个,并不喜欢这些解决方案,所以我尝试了一下 .
.mydivclass {inline-block; vertical-align: middle; width: 33%;}
我在这里做的是将高度改为最小高度并给它一个固定值 . 如果其中一个调整大小,另一个将保持相同的高度 . 不确定这是不是你想要的