【问题标题】:Using 100% height on div but respecting div content在 div 上使用 100% 高度但尊重 div 内容
【发布时间】:2016-12-09 09:16:45
【问题描述】:

我不太确定该怎么称呼它,但我目前有一个 div,我可能不需要 '.right' 类的百分比高度,但问题在于特定的单个列表元素(以及作为他们各自的div)在'.right'类中,我想给他们百分比保证金。有没有可能的解决方法?同样,我只需要使用百分比而不是 px 来获得每个列表元素之间的边距。 sn-p 版本受媒体查询的影响,但这与不使用百分比的边距无关。有人可以帮忙解决这个问题吗?我尝试将 100% 的高度放在“.container”上,但这会使所有内容都失控。

* {
    margin: 0;
}
body {
    background-color: gray;
}
html, 
body {
  height: 100%;

}

.left {
    display: flex;
    flex-flow: row wrap;
    align-items: center;
    justify-content: space-around;
    order: 1;
    width: 30%;
}
.middle {
    display: flex;
    flex-flow: column wrap;
    order: 2;
    width: 50%;
    height: 99%;
}
.scienceBox {
	width: 100%;
	background-color: gray;
	-radius: 5px;
	margin-bottom: 2%;
}
.scienceBox p {
	text-align: center;
	font-size: 19px;
	background-color: green;
	padding: 0;
	color: white;
}
.scienceBox li {
	color: black;
	font-size: 17px;
	list-style-type: square;
}
.scienceBox special{
	list-style-type: circle;
}
.container {
    display: flex;
    position: relative;
    flex-wrap:  wrap;
    justify-content: space-between;
    align-items: stretch;
	padding-bottom: 2%;
    min-height: 70vh;
    width: 70%;
    margin: 5% auto 8% auto;
    background-color: white;
}
.container p { 
  margin-bottom: 12%; 
}
.container img {
  margin-bottom: 10%; 
}
.container img:first-child{ 
  margin-top: 5%;
}
.box1 {
	text-align: center;
	font-size: 20px;
}
.box h2{	
	color: orange;
	text-align: center;
}
.right {
 display: flex;
 position: relative;
 flex-flow: row wrap;
 align-content: flex-start;
 justify-content: center;
 order: 3;
 width: 20%;

}
.right div{
	height: 25%;
}
.right .list{
    height: auto;
	text-align: center;
}
.list ul{
    list-style: none;
    padding: 0;
}
.list a{
    text-decoration: none;
    color: inherit;
}
.headbox h3{
    color: orange;
	text-align: center;
}

.sactive { /* s for sidebar */
	font-weight: bold;
}
a {
	color: orange;
	text-decoration: none;
}
.hundredw {
	position: relative;
	width: 100%;
	height: 10%;
	text-align: center;
}
.papajohns{
	position: absolute;
	top: 60%;
	right: 0;
	left: 0;
	margin: auto
}
.papajohns p {
	margin: 0 1%;
}
ul.square li {
	list-style-type: square;
	margin-bottom: 2%;
}
.mtop {
	margin-top: 3.5%;
}
@media all and (max-width: 900px) {
    #nav {
     flex-direction: column; /*updated*/
     margin-bottom: 7%;
    }
    #nav ul {
      padding-left: 0; /*added*/
    }
    #nav li {
      flex: 1 1 100%; /*updated*/
      padding: 5px;
      -top: 1px solid black;
      -bottom: 1px solid black;
    }   
    #nav li a{
    text-align: center;
    padding: 5px;
    margin: 5px;
    }
    #bigwrap {
      width: 100%;
    }
    .container {
      flex-flow: row wrap;
      min-height: 100vh;
      width: 100%;
    }
	.sarpinos{
		top:56%;
	}
	.left {
		align-content: flex-start;
		height: 50%;
		margin-bottom: 3%;
	}
	.middle {
		height: 40%;
	}
    .left, .right {
      flex: 1 100%;
    }
   .middle {
    flex-flow: row wrap;
    flex-grow: 1;
    flex-shrink: 1;
    justify-content: center;
	align-content: flex-start;
   }
   .box {
    width: 70%;
    text-align: center;
   }
   #header2{
	   justify-content: space-around;
   }
}

@media (min-width: 900px) and (max-width: 1100px) {
  
  #nav{
    justify-content: space-around;
  }
  .container {
    width: 100%;
  }
}
<div class="container">
		<div class="left">
        	<img src="http://placehold.it/50x50" width="50" height="50" alt="Picture of void" />
            <img src="http://placehold.it/50x50" width="50" height="50" alt="Picture of void" />
            <img src="http://placehold.it/50x50" width="50" height="50" alt="Picture of void" />
            <img src="http://placehold.it/50x50" width="50" height="50" alt="Picture of void" />
            <img src="http://placehold.it/50x50" width="50" height="50" alt="Picture of void" />
            <img src="http://placehold.it/50x50" width="50" height="50" alt="Picture of void" />


			<div class="hundredw">
   		  		<img src="http://placehold.it/50x50" width="50" height="50" alt="Picture of void" />
           	  	<div class="papajohns">
                    <p>file</p>
					<p>files</p>
					<p>files</p>
					<p><i>files</i></p>
                </div>
            </div>
        </div>
        <div class="middle">
			<div class="box">
            	<h2> Sample <h2>
            </div>
            <div class="box">
            	<p>
              	This is a sample sentence. This is a sample sentence. This is a sample sentence. This is a sample sentence.
                This is a sample sentence. This is a sample sentence. This is a sample sentence. This is a sample sentence.
                This is a sample sentence. This is a sample sentence. This is a sample sentence. This is a sample sentence.
                This is a sample sentence. This is a sample sentence. This is a sample sentence. This is a sample sentence.
                This is a sample sentence. This is a sample sentence. This is a sample sentence. This is a sample sentence.
                </p>
                <ul class="square">
            		<li>This is a sample sentence.</li>         
 					<li>This is a sample sentence.</li>
 					<li>This is a sample sentence.</li>
				<ul>          
            </div>
            <div class="box mtop">
            	<p>
                This is a sample sentence. This is a sample sentence. This is a sample sentence. This is a sample sentence.
                This is a sample sentence.This is a sample sentence. This is a sample sentence. This is a sample sentence.
                This is a sample sentence. This is a sample sentence. This is a sample sentence. This is a sample sentence.
                This is a sample sentence. This is a sample sentence. This is a sample sentence. This is a sample sentence.
                This is a sample sentence. This is a sample sentence. This is a sample sentence. This is a sample sentence.
                </p>
            </div>
            <div class="scienceBox">
    			<p>This is a sample sentence.</p>
        		<ul>
        			<li>This is a sample sentence.</li>
					<li>This is a sample sentence.</li>
					<li>This is a sample sentence.</li>
					<li>This is a sample sentence.</li>
					<li>This is a sample sentence.</li>
					<li>This is a sample sentence.</li>
					<li>This is a sample sentence.</li>
					<li>This is a sample sentence.</li>
					<li>This is a sample sentence.</li>
                    <li>This is a sample sentence.</li>
                    <li>This is a sample sentence.</li>
					<li>This is a sample sentence.</li>
					<li>This is a sample sentence.</li>
                    <li>This is a sample sentence.</li>
                    <li>This is a sample sentence.</li>
        		</ul>
			</div>
            <div class="scienceBox">
    			<p>This is a sample sentence.</p>
        		<ul>
        			<li>This is a sample sentence.?
                   	  <ul class="special">
                        	<li>This is a sample sentence. This is a sample sentence. This is a sample sentence.
                            This is a sample sentence. This is a sample sentence. This is a sample sentence.
                            </li> 
                        </ul>
                    </li>
                    <li>This is a sample sentence.?
                    	<ul class="special">
                        	<li>This is a sample sentence.
                            </li> 
                        </ul>
                    </li>
					<li>Is This is a sample sentence.?
                    	<ul class="special">
                        	<li>This is a sample sentence. This is a sample sentence. This is a sample sentence.
                            This is a sample sentence. This is a sample sentence.
                            </li> 
                        </ul>
                    </li>
                    <liThis is a sample sentence.?
                    	<ul class="special">
                        	<li>This is a sample sentence. This is a sample sentence. This is a sample sentence.
                            This is a sample sentence. This is a sample sentence. This is a sample sentence.
                            </li> 
                        </ul>
                    </li>
                </ul>
                        				
			</div>
         </div>
         <div class="right">
         	<div class="headbox">
            	<h3>This is a sample sentence.</h3>
            </div>
            <div class="list">
                   <ul>
                       <li><a class="sactive" href="#">This is a sample sentence.</a></li>
                       <li><a href="#">This is a sample sentence.</a></li>
                   </ul>
            </div>
            <div class="headbox">
            	<h3>Important Informaiton</h3>
            </div>
            <div class="list2">
                   <ul>
                       <li>This is a sample sentence.</li>
                       <li>This is a sample sentence.</li>
                       <li>This is a sample sentence.</li>
                       <li>This is a sample sentence.</li>
                       <li>This is a sample sentence.</li>
                   </ul>
                   <ul>
                       <li>Address</li>
                       <li>This is a sample sentence.</li>
                       <li>This is a sample sentence.</li>
                       <li>This is a sample sentence.</li>
                   </ul>
                   <ul>
                       <li>This is a sample sentence.</li>
                       <li>This is a sample sentence.</li>
                       <li>This is a sample sentence.</li>
                       <li>This is a sample sentence.</li>
                   </ul>
                   
            </div>
         </div>
      </div>

【问题讨论】:

  • 这个问题不是很清楚。首先,尝试修剪您的代码,以便此处仅包含相关部分。将您的所有代码提供给我们,让您很难准确指出您有兴趣帮助的部分。其次,你想要达到的究竟是什么?也许给我们一个例子?您希望 div.right 元素具有百分比高度(根据其父元素的高度),而它的子元素的垂直(顶部和底部)边距应与 div.right 的高度相关的百分比?
  • 是的,没错。感谢您的回复。因为它现在将 margin-bottom: 2% 与 margin-bottom: 4% 放在 '.right' 类上没有任何区别,即使 '.container' 是身体的 100% 高度,它们也什么都不做。容器有最小高度,我正面临这个问题,如果我要让容器 100% 高度,我的容器的高度不包含我的所有内容,所以感觉好像我被困住了。所以总而言之,我需要“容器”来保存其中的所有内容,并且我需要能够在“.right”类中使用百分比边距。

标签: html css height


【解决方案1】:

我会分别回答你的两个问题:

1) 为什么你的.right div 不包含它的内容?

你在这里做了两件事,那是相互矛盾的。 .right 设置为根据其内容高度调整其高度(高度默认为auto)。 同时,.right 内的 div 的高度根据.right 的高度设置。这是圆形的。 这样,首先.right 根据其内容计算其高度,然后更改内容高度,使它们移出.right 的边界。 添加这个:

.right { height:100% }

2) 如何根据父级高度调整上边距和下边距?

你不能用 css 做到这一点。 设置.right { margin-top:5% } 将根据.right 的父母的宽度设置.right 的margin-top(是的,这样很奇怪)。 也就是说,.right 的 margin-top 将是 .container 宽度的 5%。

您可以使用 Javascript 实现此目的。 下面我复制了您的完整代码并添加了 jQuery 代码来执行此操作,并修复了您遇到的高度/包含问题。

否则,您可以使用vh 并将边距设置为视口高度的某个百分比,例如:

.right {
margin-bottom:4vh;
}

将使它成为视口高度的 4%。

var containerHeight = $(".container").height();
$(".right").css("margin-bottom", containerHeight*0.15 );
$(".right").css("margin-top", containerHeight*0.05 );
* {
    margin: 0;
}
body {
    background-color: gray;
}
html, 
body {
  height: 100%;

}

.left {
    display: flex;
    flex-flow: row wrap;
    align-items: center;
    justify-content: space-around;
    order: 1;
    width: 30%;
}
.middle {
    display: flex;
    flex-flow: column wrap;
    order: 2;
    width: 50%;
    height: 99%;
}
.scienceBox {
	width: 100%;
	background-color: gray;
	-radius: 5px;
	margin-bottom: 2%;
}
.scienceBox p {
	text-align: center;
	font-size: 19px;
	background-color: green;
	padding: 0;
	color: white;
}
.scienceBox li {
	color: black;
	font-size: 17px;
	list-style-type: square;
}
.scienceBox special{
	list-style-type: circle;
}
.container {
    display: flex;
    position: relative;
    flex-wrap:  wrap;
    justify-content: space-between;
    align-items: stretch;
	padding-bottom: 2%;
    min-height: 70vh;
    width: 70%;
    margin: 5% auto 8% auto;
    background-color: white;
}
.container p { 
  margin-bottom: 12%; 
}
.container img {
  margin-bottom: 10%; 
}
.container img:first-child{ 
  margin-top: 5%;
}
.box1 {
	text-align: center;
	font-size: 20px;
}
.box h2{	
	color: orange;
	text-align: center;
}
.right {
 display: flex;
 position: relative;
 flex-flow: row wrap;
 align-content: flex-start;
 justify-content: center;
 order: 3;
 width: 20%;
 height:100%;

}
.right div{
	height: 25%;
}
.right .list{
    height: auto;
	text-align: center;
}
.list ul{
    list-style: none;
    padding: 0;
}
.list a{
    text-decoration: none;
    color: inherit;
}
.headbox h3{
    color: orange;
	text-align: center;
}

.sactive { /* s for sidebar */
	font-weight: bold;
}
a {
	color: orange;
	text-decoration: none;
}
.hundredw {
	position: relative;
	width: 100%;
	height: 10%;
	text-align: center;
}
.papajohns{
	position: absolute;
	top: 60%;
	right: 0;
	left: 0;
	margin: auto
}
.papajohns p {
	margin: 0 1%;
}
ul.square li {
	list-style-type: square;
	margin-bottom: 2%;
}
.mtop {
	margin-top: 3.5%;
}
@media all and (max-width: 900px) {
    #nav {
     flex-direction: column; /*updated*/
     margin-bottom: 7%;
    }
    #nav ul {
      padding-left: 0; /*added*/
    }
    #nav li {
      flex: 1 1 100%; /*updated*/
      padding: 5px;
      -top: 1px solid black;
      -bottom: 1px solid black;
    }   
    #nav li a{
    text-align: center;
    padding: 5px;
    margin: 5px;
    }
    #bigwrap {
      width: 100%;
    }
    .container {
      flex-flow: row wrap;
      min-height: 100vh;
      width: 100%;
    }
	.sarpinos{
		top:56%;
	}
	.left {
		align-content: flex-start;
		height: 50%;
		margin-bottom: 3%;
	}
	.middle {
		height: 40%;
	}
    .left, .right {
      flex: 1 100%;
    }
   .middle {
    flex-flow: row wrap;
    flex-grow: 1;
    flex-shrink: 1;
    justify-content: center;
	align-content: flex-start;
   }
   .box {
    width: 70%;
    text-align: center;
   }
   #header2{
	   justify-content: space-around;
   }
}

@media (min-width: 900px) and (max-width: 1100px) {
  
  #nav{
    justify-content: space-around;
  }
  .container {
    width: 100%;
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>

<div class="container">
		<div class="left">
        	<img src="http://placehold.it/50x50" width="50" height="50" alt="Picture of void" />
            <img src="http://placehold.it/50x50" width="50" height="50" alt="Picture of void" />
            <img src="http://placehold.it/50x50" width="50" height="50" alt="Picture of void" />
            <img src="http://placehold.it/50x50" width="50" height="50" alt="Picture of void" />
            <img src="http://placehold.it/50x50" width="50" height="50" alt="Picture of void" />
            <img src="http://placehold.it/50x50" width="50" height="50" alt="Picture of void" />


			<div class="hundredw">
   		  		<img src="http://placehold.it/50x50" width="50" height="50" alt="Picture of void" />
           	  	<div class="papajohns">
                    <p>file</p>
					<p>files</p>
					<p>files</p>
					<p><i>files</i></p>
                </div>
            </div>
        </div>
        <div class="middle">
			<div class="box">
            	<h2> Sample <h2>
            </div>
            <div class="box">
            	<p>
              	This is a sample sentence. This is a sample sentence. This is a sample sentence. This is a sample sentence.
                This is a sample sentence. This is a sample sentence. This is a sample sentence. This is a sample sentence.
                This is a sample sentence. This is a sample sentence. This is a sample sentence. This is a sample sentence.
                This is a sample sentence. This is a sample sentence. This is a sample sentence. This is a sample sentence.
                This is a sample sentence. This is a sample sentence. This is a sample sentence. This is a sample sentence.
                </p>
                <ul class="square">
            		<li>This is a sample sentence.</li>         
 					<li>This is a sample sentence.</li>
 					<li>This is a sample sentence.</li>
				<ul>          
            </div>
            <div class="box mtop">
            	<p>
                This is a sample sentence. This is a sample sentence. This is a sample sentence. This is a sample sentence.
                This is a sample sentence.This is a sample sentence. This is a sample sentence. This is a sample sentence.
                This is a sample sentence. This is a sample sentence. This is a sample sentence. This is a sample sentence.
                This is a sample sentence. This is a sample sentence. This is a sample sentence. This is a sample sentence.
                This is a sample sentence. This is a sample sentence. This is a sample sentence. This is a sample sentence.
                </p>
            </div>
            <div class="scienceBox">
    			<p>This is a sample sentence.</p>
        		<ul>
        			<li>This is a sample sentence.</li>
					<li>This is a sample sentence.</li>
					<li>This is a sample sentence.</li>
					<li>This is a sample sentence.</li>
					<li>This is a sample sentence.</li>
					<li>This is a sample sentence.</li>
					<li>This is a sample sentence.</li>
					<li>This is a sample sentence.</li>
					<li>This is a sample sentence.</li>
                    <li>This is a sample sentence.</li>
                    <li>This is a sample sentence.</li>
					<li>This is a sample sentence.</li>
					<li>This is a sample sentence.</li>
                    <li>This is a sample sentence.</li>
                    <li>This is a sample sentence.</li>
        		</ul>
			</div>
            <div class="scienceBox">
    			<p>This is a sample sentence.</p>
        		<ul>
        			<li>This is a sample sentence.?
                   	  <ul class="special">
                        	<li>This is a sample sentence. This is a sample sentence. This is a sample sentence.
                            This is a sample sentence. This is a sample sentence. This is a sample sentence.
                            </li> 
                        </ul>
                    </li>
                    <li>This is a sample sentence.?
                    	<ul class="special">
                        	<li>This is a sample sentence.
                            </li> 
                        </ul>
                    </li>
					<li>Is This is a sample sentence.?
                    	<ul class="special">
                        	<li>This is a sample sentence. This is a sample sentence. This is a sample sentence.
                            This is a sample sentence. This is a sample sentence.
                            </li> 
                        </ul>
                    </li>
                    <liThis is a sample sentence.?
                    	<ul class="special">
                        	<li>This is a sample sentence. This is a sample sentence. This is a sample sentence.
                            This is a sample sentence. This is a sample sentence. This is a sample sentence.
                            </li> 
                        </ul>
                    </li>
                </ul>
                        				
			</div>
         </div>
         <div class="right">
         	<div class="headbox">
            	<h3>This is a sample sentence.</h3>
            </div>
            <div class="list">
                   <ul>
                       <li><a class="sactive" href="#">This is a sample sentence.</a></li>
                       <li><a href="#">This is a sample sentence.</a></li>
                   </ul>
            </div>
            <div class="headbox">
            	<h3>Important Informaiton</h3>
            </div>
            <div class="list2">
                   <ul>
                       <li>This is a sample sentence.</li>
                       <li>This is a sample sentence.</li>
                       <li>This is a sample sentence.</li>
                       <li>This is a sample sentence.</li>
                       <li>This is a sample sentence.</li>
                   </ul>
                   <ul>
                       <li>Address</li>
                       <li>This is a sample sentence.</li>
                       <li>This is a sample sentence.</li>
                       <li>This is a sample sentence.</li>
                   </ul>
                   <ul>
                       <li>This is a sample sentence.</li>
                       <li>This is a sample sentence.</li>
                       <li>This is a sample sentence.</li>
                       <li>This is a sample sentence.</li>
                   </ul>
                   
            </div>
         </div>
      </div>

【讨论】:

    猜你喜欢
    • 2012-09-18
    • 1970-01-01
    • 2015-02-14
    • 2015-04-07
    • 2016-07-31
    • 1970-01-01
    • 2020-03-06
    • 1970-01-01
    • 2013-04-18
    相关资源
    最近更新 更多