boostrap和wordpress - 3列相同的高度

时间:2016-01-15 14:52:04

标签: html css wordpress twitter-bootstrap

我使用bootstrap来设置我的wordpress网站的样式。 我有一个代码,包含一个容器div,一行和3列内容,当每列从wordpress(或数据库)获取数据时,每列的高度是其内容的高度。

我想要的是3列具有相同的高度,基于最高列。 我尝试添加display:table;到容器,显示:table-row;到行,并显示:table-cell;每列,但它仍然无法正常工作。

我的代码:

<div class="container-fluid" id="page-body">
    <div class="row pull-right">
        <div class="col-sm-7 pull-right page-content-wrapper">
            <div class="page-content">
                <?php echo the_content(); ?>
             </div>
        </div>
        <div class="col-sm-3 pull-right page-products-wrapper">
            <div class="">
                test
            </div>
        </div>  
        <div class="col-sm-2 pull-right side-menu-wrapper">
            test 2
        </div>      
    </div>
</div>

我的css是:

#page-body{
    display: table;
    width: 100%;
    margin-top: 40px;
    direction: rtl;
    padding-right: 9.5%;
    padding-left: 9.5%;
}

#page-body .row{
    width:100%;
    display: table-row;
}

.page-content-wrapper, .page-products-wrapper, .side-menu-wrapper{
    display: table-cell;
}

.page-content-wrapper{
    border-right: 1px solid #BE1621;
    border-left: 1px solid #BE1621;
    padding-left: 5px !important;
    padding-right: 5px !important;
}

.page-content{
    background: #dadada; /* Old browsers */
    background: -moz-linear-gradient(left,  #dadada 0%, #ffffff 50%, #dadada 100%); /* FF3.6-15 */
    background: -webkit-linear-gradient(left,  #dadada 0%,#ffffff 50%,#dadada 100%); /* Chrome10-25,Safari5.1-6 */
    background: linear-gradient(to right,  #dadada 0%,#ffffff 50%,#dadada 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#dadada', endColorstr='#dadada',GradientType=1 ); /* IE6-9 */
    padding: 25px 10px 25px 10px;
    font-size: 22px;
}

.page-products-wrapper{
    border-left: 1px solid #BE1621;
    padding-left: 5px !important;
    padding-right: 5px !important;
}

我在这里看不到什么应该让它不起作用,但由于某种原因它不会...... 任何帮助,将不胜感激。

提前致谢, 加比。

2 个答案:

答案 0 :(得分:0)

这可以通过使用flexbox来实现。 首先,删除您添加的表属性,然后将此行添加到行类:

.row {
   display: flex;
}

如果您想使用表格,请添加以下内容:

.row {
   display: table;
}
[class~="col-"] {
   display: table-cell;
}

我强烈建议您使用flexbox,但这取决于您要查找的浏览器支持。

答案 1 :(得分:0)

使用迄今为止提供的有效技术修改Bootstrap是一项有风险的业务,除非您对媒体查询有信心仅在预期的屏幕尺寸上应用这些样式。在这种情况下,我将使用JavaScript来应用一个等于最高列的内联高度 - 使用以下JS将jsEqualHeight类应用于每个col-: (注意媒体查询)

&#13;
&#13;
if (jQuery) {
    (function ($) {
        "use strict";
        $(document).ready(function () {

            $(window).on('resize', function () {
                equalHeights();
            });

            equalHeights();

            function equalHeights() {
                if (window.matchMedia("(min-width: 992px)").matches) {

                    var elementHeights = $('.jsEqualHeight').map(function () {
                        return $(this).height();
                    }).get();

                    // Math.max takes a variable number of arguments
                    // 'apply' is equivalent to passing each height as an argument
                    var maxHeight = Math.max.apply(null, elementHeights);

                    // Set each height to the max height
                    $('.jsEqualHeight').height(maxHeight);
                } else {
                    $('.jsEqualHeight').css({ "height": "auto" });
                }
            }
        });
    }(jQuery));
}
&#13;
&#13;
&#13;