【问题标题】:Parent DIV not expanding to fit height of child div content父 DIV 未扩展以适合子 div 内容的高度
【发布时间】:2015-04-23 13:55:19
【问题描述】:

我的 CSS 存在问题,即一旦其内容溢出,父 div (#cotentWrapper) 的高度不会扩展到适合子 div (#bodyContent) 的高度。我们使用百分比来表示我们的身高。我们已经尝试了这里找到的关于堆栈溢出的各种解决方案,但没有一个能解决这个问题。我们尝试在#contentWrapper 上将高度设置为自动,这解决了我们上面指定的问题,它导致我们的导航栏消失,这也被封装在#contentWrapper div 中。我们已经为它应该工作的所有 DIV 设置了最小高度。

HTML:

 <!DOCTYPE html>

<html lang="en">
<head>
    <title>  </title>
    <meta charset="utf-8" />

    <link href="~/Content/bootstrap.min.css" rel="stylesheet" /> 
    <link href="~/Content/AccountDetailsStyles.css" rel="stylesheet" />
    <link href="~/Content/Site1.css" rel="stylesheet" />
    <script src="~/Scripts/jquery.min.js"></script>
    <script src="~/Scripts/jquery-ui.min.js"></script>

</head>

<body>

    <div id="contentWrapper">

        <div id="header">
            <div id="logoWrapper">
                <div id="logoImg"></div>
            </div>
        </div>

        <div id="contentBoxShadow">
            <div id="navigation">

            </div>

            <div id="bodyContent">
                @RenderBody()
                Lorem ipsum dolor sit amet, vidisse corrumpit mel ea, te purto oportere assueverit nam. Ut pro mazim utinam gloriatur, eum tempor eruditi eu, iudico laboramus nec ei. Ancillae offendit officiis vim ea. Cu fabellas sapientem maiestatis his, at consequat deseruisse sea. Illum singulis suavitate mea no, vivendum tincidunt eloquentiam ius an. His no etiam copiosae, quo an delicata volutpat petentium.

                An esse ridens ullamcorper ius, an est scaevola voluptatibus. Est ne iusto oratio. Laboramus deseruisse nec te, laoreet accumsan ut pri. Qui eu lorem repudiare, utroque epicuri ius ne. Ipsum adversarium definitionem eu vis, an vim paulo discere atomorum.

                Cu case bonorum vix, te sit habeo audiam electram. Ad cum graeco sadipscing, justo mandamus pertinacia mel id, ei eam soluta melius inimicus. Ad vel propriae aliquando, graeci aliquam petentium ea his. Mel ut maiorum albucius reprehendunt. Sed referrentur neglegentur te, usu ea quot aliquando, eu mei recusabo constituam vituperatoribus. Oratio volutpat tincidunt per et, at vitae facete virtute vis.

                Ut quis solum qui, essent utamur eloquentiam no sea. Est eros suscipit deseruisse ex. Sit illud tractatos consectetuer te. Ad mutat noluisse eum. At sit volumus tincidunt.

                Prompta alterum adolescens ei his. Ex inani quidam docendi nam, ea natum veritus vel, homero vulputate intellegat et duo. Tempor volumus mel id, ad probo viderer invenire mel. Civibus lucilius in per. An ignota nominavi praesent usu. Sed quando indoctum conclusionemque ad, vim amet petentium cu, summo eruditi ne vix. Habemus maluisset reprimique ad nam, vero laudem ad quo.
            </div>
        </div>

    </div>

</body>

CSS: * { 填充:0; 边距:0; }

html, body {
    width: 100%;
    height:100%;
    min-height: 100%;
    position: relative;
}

body
{
    background-image: url("Images/textured_background.png");
    background-repeat: repeat;
    background-attachment: fixed;
}

#contentWrapper
{
    width: 88%;
    height: 100%;
    //height: auto;
    min-height: 100%;
    margin: 0 auto;
}

#contentBoxShadow
{
    width: 100%;
    min-height: 85%;
    height: 85%;
    background-color: #EFEFEF;
    background-color: pink;
    position: relative;
}

#bodyContent
{
    width: 90%;
    height: 93%;
    height: auto;
    min-height: 93%;
    padding-left: 30px;
    padding-right: 30px;
    background-color: white;
    margin: 0 auto;
}

#header
{
    height: 15%;
    width: 100%;
}

#logoWrapper
{
    padding-top: 1.5%;
    padding-bottom: 1.5%;
    height: 97%;
    width: 100%;
}

#logoImg
{
    background-image:url("Images/logo.png");
    background-size: contain;
    background-repeat: no-repeat;
    height: 100%;
    width: auto;
}

#contentBoxShadow:before {
    box-shadow: -15px 0 15px -15px inset;
    content: "";
    height: 100%;
    left: -15px;
    position: absolute;
    top: 0;
    width: 15px;
}

#contentBoxShadow:after {
    box-shadow: 15px 0 15px -15px inset;
    content: "";
    height: 100%;
    position: absolute;
    right: -15px;
    width: 15px;
    top: 0;
}

#navigation 
{
    height: 7%;
    width: 100%;
    background-image: -ms-linear-gradient(top, #004A94 0%, #003366 100%);
    background-image: -moz-linear-gradient(top, #004A94 0%, #003366 100%);
    background-image: -o-linear-gradient(top, #004A94 0%, #003366 100%);
    background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #004A94), color-stop(1, #003366));
    background-image: -webkit-linear-gradient(top, #004A94 0%, #003366 100%);
    background-image: linear-gradient(to bottom, #004A94 0%, #003366 100%);
}

【问题讨论】:

    标签: html css dom web


    【解决方案1】:

    您的帖子缺少一点 HTML,但如果我正确理解了问题,删除 #contentBoxShadow 上的高度和最小高度即可解决问题。您可能还必须从#contentWrapper 中删除高度和最小高度,但是缺少 HTML 的那部分。

    #contentBoxShadow
    {
      width: 100%;
      background-color: #EFEFEF;
      background-color: pink;
      position: relative;
    }
    

    http://jsfiddle.net/32x50fdv/

    编辑:还请注意,在您的 CSS 中,您尝试使用双斜杠注释掉一行,这在 CSS 中不起作用。你需要使用 /**/ 来代替:

    //height: auto;
    

    应该是

    /*height: auto;*/
    

    【讨论】:

    • 我已经尝试过您的解决方案。这也删除了导航栏,因为它和#bodyContent 使用百分比,以便它适合整个页面。从#contentBoxShadow 中删除高度意味着浏览器不知道如何计算这两个子元素的高度,例如 93%% 什么?
    • 你能发布你的完整 HTML 吗?
    • 可以像这样滚动#bodyContent 中的内容吗:jsfiddle.net/32x50fdv/1
    • 不幸的是,我需要滚动页面而不是 div,但感谢您的帮助。
    • 如果我做对了,请告诉我:你的 body 和 #contentWrapper 应该至少是窗口高度的 100%。然后你有一个#header,它应该正好是窗口高度的 15%。然后你有一个至少应该是窗口高度的 85% 的#contentBoxShadow。在那里面,你的#navigation应该是#contentBoxShadow的7%,无论#contentBoxShadow是窗口高度的85%,还是窗口高度的2500%(你拥有的内容越多,#navigation就越高是吗?最后你有#bodyContent 应该占#contentBoxShadow 剩余的93%
    猜你喜欢
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    相关资源
    最近更新 更多