【问题标题】:How do I get this div to height 100%? (flexbox on container)如何让这个 div 达到 100% 的高度? (容器上的弹性盒)
【发布时间】:2015-11-14 20:29:52
【问题描述】:

我遇到了无法访问height:100% 的div 问题,我曾尝试使用!important,但这并没有帮助。我想这与我容器上的弹性框.row有关?

这是div,类为 `the-list 我想达到 100%。

JSFiddle:https://jsfiddle.net/e488j5sp/

HTML:

<div class="row equal-height"> <!-- START BS ROW -->
    <div class="col-md-1"> <!-- START BS COL-MD-1 -->
    </div> <!-- END BS COL-MD-1 -->
    <div class="col-md-3 zeropadding-right"> <!-- START BS COL-MD-4 -->
        <div class="singlepage-list-style"> <!-- START SINGLEPAGE-LIST-STYLE -->
            <div class="list-header"> <!-- START LISTE-HEADER -->
                <h1>Quick info</h1>
            </div> <!-- END LIST-HEADER -->
            <div class="the-list"> <!-- START THE-LISTE -->
            <img src="http://placehold.it/150x100">
            </div> <!-- END THE-LIST -->
        </div>
    </div> <!-- END BS COLD-MD-4 -->
    <div class="col-md-7 zeropadding-left"> <!-- START BS COL-MD-6 -->
        <div class="singleheader-content-style"> <!-- START SINGLEPAGE-CONTENT-STYLE -->
            <h1>Property description</h1>
            <img src="http://placehold.it/350x150">
        </div> <!-- END SINGLEHEADER-CONTENT-STYLE -->
    </div> <!-- END BS COL-MD-6 -->
    <div class="col-md-1"> <!-- START BS COL-MD-1 -->
    </div> <!-- END BS COL-MD-1 -->
</div> <!-- END BS ROW -->

CSS:

/***** INFO & CONTENT HEIGHT CONTROLER *****/

.equal-height, .equal-height > div[class*='col-'] {  
      display: -webkit-box;
      display: -moz-box;
      display: -ms-flexbox;
      display: -webkit-flex;
      display: flex;
      flex:1 0 auto;
  }

.zeropadding-right {
    padding-right:0px;
}

/***** SINGLEHEADER CONTENT AREA STYLING *****/

.singleheader-content-style {
    background-color:#fff;
    border-right: 1px solid #9c9c9c;
    padding:20px;
    font-family: 'Open Sans', sans-serif;
    width:100%;
}

.singleheader-content-style h1,h2,h3,h4,h5,h6 {
    margin-top:0px; /* Change boostraps default */
    color:#de1b1b;
}

/***** SINGLEHEADER LIST AREA STYLING *****/

.singlepage-list-style {
    background-color:#fff;
    border-left: 1px solid #9c9c9c;
    padding:20px;
    font-family: 'Open Sans', sans-serif;
    width:100%;
    font-size:16px;
}

.singlepage-list-style ul li {
    list-style-type:none;
}

.singlepage-list-style ul {
    padding-left:20px;
}

.the-list {
    border-right: 1px solid #9c9c9c;
    width:100%;
}

.list-header {
    width:100%;
}

.list-header h1,h2,h3,h4,h5,h6 {
    margin-top:0px; /* Change boostraps default */
    color:#de1b1b;
}

有什么想法吗?

编辑: 有人建议要解决这个问题,我需要将height:100% 设置为所有父元素。所以我试图做到这一点。但问题是,当我这样做时,具有 singlepage-list-style 和 singleheader-content-style 类的 div 元素最终具有不同的高度(307px 和 267px)。这是equal-height 类中“flex”的目的,为这两个元素提供相同的高度(同时根据其内容调整高度),在这种情况下,两者的高度都应为 307px。当 height:100% 添加到所有父元素时,这不再起作用。有关更多详细信息,请参阅 cmets 中的对话以获取以下答案。这是jsfiddle:https://jsfiddle.net/5s9mmdtx/

【问题讨论】:

    标签: html css height flexbox


    【解决方案1】:

    要么确保所有父标签都带有height: 100% 属性,要么最终只会填充当前标签的 100%。

    您可以改用height: 100vh,将您的身高作为最大身高。

    使用 100vh 表示 p 标签将是 body 的 100% 高度,而与 div 高度无关。

    您可以查看更多详细信息here。

    【讨论】:

    • 嗨,我无法让它工作。如果我向父元素添加 100% 的高度,则 flexbox 将失去其功能,并且列最终会处于不同的高度:jsfiddle.net/aLjj4fyz
    • 另见 cmets 关于你上面的答案 :)
    猜你喜欢
    • 2016-07-05
    • 1970-01-01
    • 2017-01-16
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 2018-04-19
    相关资源
    最近更新 更多