当我需要时,为什么CSS浮动不起作用

时间:2012-11-16 19:50:46

标签: css css-float multiple-columns

当我发现漂浮的元素都扩展到它们行中最高块的高度时,我正在制作一个块网格,有点像Pinterest布局。

“嘿!”我想。 “如何应用这个来使我的侧边栏与我的内容一样高!”但由于某种原因,它不起作用。我全神贯注地找到了一个等高度列的解决方案,它只使用浮点数,就像它们是一个网格一样,但似乎没有一个。

所以我的问题可以归结为:你如何像浮动方格的网格一样容易地制作高度相等的柱子?

2 个答案:

答案 0 :(得分:2)

当然你可以做同等高度的列 - 没有黑客,JavaScript或一百万额外的标记(尽管在IE7或更低版​​本中支持不是很好)。秘密是在相邻元素上使用display: table-cell

HTML:

<div class="container">
    <div id="col1">
        Small content here
    </div>

    <div id="col2">
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
    </div>
</div>

CSS:

div.container { display: table }

div.container > div { display: table-cell; border: 1px solid; padding: 1em }

div#col1 { background: orange }

演示:

http://jsfiddle.net/y9e4d/

答案 1 :(得分:1)

您可以使用height:100%,但这需要父元素具有100%的高度。 首先将html和body height设置为100%并逐步完成元素。

您还可以使用jQuery获取特定元素的高度,然后根据所选元素使用jQuery设置侧边栏的高度。

可能是这样的:

$(document).ready(function() {
$('#sidebar').height($('#container').height());
});

工作示例:

    <!DOCTYPE html>
    <html>
    <head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
    <script>
        $(document).ready(function() {
                         $('#sidebar').height($('#container').height());
                    });
    </script>
    </head>
    <body>

            <div style="height: 200px; border: 1px solid red; width: 500px; float: left;" id="container">Content</div>
            <div style="border: 1px solid green;" id="sidebar">Sidebar</div>

    </body>
    </html>