我有两列的布局-左div
和右div
。
右边div
有一个灰色background-color
,我需要根据用户浏览器窗口的高度垂直扩展它。现在background-color
结束于该内容的最后一部分div
。
我试过height:100%
,min-height:100%;
等
我有两列的布局-左div
和右div
。
右边div
有一个灰色background-color
,我需要根据用户浏览器窗口的高度垂直扩展它。现在background-color
结束于该内容的最后一部分div
。
我试过height:100%
,min-height:100%;
等
实际上,最适合我的是使用该vh
物业。
在我的React应用程序中,我希望div即使调整大小也要与页面高匹配。我尝试了height: 100%;
,overflow-y: auto;
但是height:(your percent)vh;
在按预期设置时它们都没有起作用。
注意:如果使用的是填充,圆角等,请确保从vh
属性百分比中减去这些值,否则会增加额外的高度并使滚动条出现。这是我的示例:
.frame {
background-color: rgb(33, 2, 211);
height: 96vh;
padding: 1% 3% 2% 3%;
border: 1px solid rgb(212, 248, 203);
border-radius: 10px;
display: grid;
grid-gap: 5px;
grid-template-columns: repeat(6, 1fr);
grid-template-rows: 50px 100px minmax(50px, 1fr) minmax(50px, 1fr) minmax(50px, 1fr);
}
如果使用position: absolute;
和jQuery,则可以使用
$("#mydiv").css("height", $(document).height() + "px");
尝试一次...
*{
padding:0;
margin:0;
}
.parent_div{
overflow:hidden;
clear:both;
color:#fff;
text-align:center;
}
.left_div {
float: left;
height: 100vh;
width: 50%;
background-color: blue;
}
.right_div {
float: right;
height: 100vh;
width: 50%;
background-color: green;
}
<div class=" parent_div">
<div class="left_div">Left</div>
<div class="right_div">Right</div>
</div>
试试看-经过测试:
body {
min-height: 100%;
}
#right, #left {
height: 100%;
}
尝试以下CSS:
html {
min-height: 100%;
margin: 0;
padding: 0;
}
body {
height: 100%;
}
#right {
min-height: 100%;
}
您可以使用display: flex
和height: 100vh
html, body {
height: 100%;
margin: 0px;
}
body {
display: flex;
}
.left, .right {
flex: 1;
}
.left {
background: orange;
}
.right {
background: cyan;
}
<div class="left">left</div>
<div class="right">right</div>
您需要做两件事,一件事是将高度设置为已经完成的100%。第二是将位置设置为绝对。这应该够了吧。
html,
body {
height: 100%;
min-height: 100%;
position: absolute;
}
选项之一是使用CSS表。它具有强大的浏览器支持,甚至可以在Internet Explorer 8中使用。
html, body {
height: 100%;
margin: 0;
}
.container {
display: table;
width: 100%;
height: 100%;
}
.left, .right {
display: table-cell;
width: 50%;
}
.right {
background: grey;
}
<div class="container">
<div class="left"></div>
<div class="right"></div>
</div>
这与您之前的答案并不完全一样,但是对某些人可能会有所帮助:
body {
display: flex;
flex-direction: column;
height: 100vh;
margin: 0px;
}
#one {
background-color: red;
}
#two {
margin-top: 0px;
background-color: black;
color: white;
overflow-y: scroll;
}
默认情况下,块元素消耗其父级的全部宽度。
这就是他们满足其垂直堆叠设计要求的方式。
在块格式设置上下文中,从包含块的顶部开始,将框一个接一个地垂直放置。
但是,此行为不会扩展到高度。
默认情况下,大多数元素都是其内容的高度(height: auto
)。
与宽度不同,如果需要额外的空间,则需要指定高度。
因此,请记住以下两点:
.Contact {
display: flex; /* full width by default */
min-height: 100vh; /* use full height of viewport, at a minimum */
}
.left {
flex: 0 0 60%;
background-color: tomato;
}
.right {
flex: 1;
background-color: pink;
}
body { margin: 0; } /* remove default margins */
<div class="Contact">
<section class="left">
<div class="">
<h1>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</h1>
</div>
</section>
<section class="right">
<img />
</section>
</div>
Flexbox非常适合此类问题。尽管Flexbox以水平方向上的内容布局而闻名,但实际上它对于垂直布局问题也同样有效。您所要做的就是将垂直部分包装在flex容器中,然后选择要扩展的部分。他们会自动占用容器中的所有可用空间。
只需使用“ vh”单位而不是“ px”,这意味着视口高度。
height: 100vh;
尝试设置height:100%
在html
&body
html,
body {
height: 100%;
}
如果要2 div高度相同,请使用或设置父元素display:flex
属性。
这为我工作:
html, body {
height: 100%; /* IMPORTANT!!! Stretches viewport to 100% */
}
#wrapper {
min-height: 100%; /* Minimum height for a modern browser */
height:auto !important; /* Important rule for a modern browser */
height:100%; /* Minimum height for Internet Explorer */
overflow: hidden !important; /* Firefox scroll-bar */
}
取自此页面。
最简单的方法是这样做。
div {
background: red;
height: 100vh;
}
body {
margin: 0px;
}
<div></div>
有几种方法可以将a的高度设置<div>
为100%。
方法(A):
html,
body {
height: 100%;
min-height: 100%;
}
.div-left {
height: 100%;
width: 50%;
background: green;
}
.div-right {
height: 100%;
width: 50%;
background: gray;
}
<div class="div-left"></div>
<div class="div-right"></div>
使用vh的方法(B):
html,
body {
height: 100%;
min-height: 100%;
}
.div-left {
height: 100vh;
width: 50%;
background: green;
float: left;
}
.div-right {
height: 100vh;
width: 50%;
background: gray;
float: right;
}
<div class="div-left"></div>
<div class="div-right"></div>
使用弹性盒的方法(c):
html,
body {
height: 100%;
min-height: 100%;
}
.wrapper {
height: 100%;
min-height: 100%;
display: flex;
}
.div-left {
width: 50%;
background: green;
}
.div-right {
width: 50%;
background: gray;
}
<div class="wrapper">
<div class="div-left"></div>
<div class="div-right"></div>
</div>
100vw ===视口宽度的100%。
100vh ===视口高度的100%。
如果要将div
宽度或高度设置为浏览器窗口大小的100%,则应使用:
对于宽度: 100vw
对于身高: 100vh
或者,如果您想将其设置为较小的尺寸,请使用CSS calc
函数。例:
#example {
width: calc(100vw - 32px)
}
100%
宽度和高度的工作原理不同。
当指定时width: 100%
,表示“从父元素或窗口的宽度中获取可用宽度的100%”。
当指定时height: 100%
,仅表示“从父元素获取可用高度的100%”。这意味着,如果未在顶层元素上指定高度,则所有子元素的高度将为0
或父元素的高度,这就是为什么需要将最顶层元素设置为具有min-height
窗口高度的原因。
我总是将主体的最小高度指定为100vh,这样可以轻松进行定位和计算,
body {
min-height: 100vh;
}
添加min-height: 100%
并且不指定高度(或将其设置为自动)。它完全为我完成了工作:
.container{
margin: auto;
background-color: #909090;
width: 60%;
padding: none;
min-height: 100%;
}
您没有提到一些重要的细节,例如:
这是一种可能性:
body,
div {
margin: 0;
border: 0 none;
padding: 0;
}
html,
body,
#wrapper,
#left,
#right {
height: 100%;
min-height: 100%;
}
#wrapper {
margin: 0 auto;
overflow: hidden;
width: 960px; // width optional
}
#left {
background: yellow;
float: left;
width: 360px; // width optional but recommended
}
#right {
background: grey;
margin-left: 360px; // must agree with previous width
}
<html>
<head>
<title>Example</title>
</head>
<body>
<div id="wrapper">
<div id="left">
Left
</div>
<div id="right"></div>
</div>
</body>
</html>
根据需要固定的色谱柱和固定的色谱柱,可以有多种变化。您也可以使用绝对定位来做到这一点,但我通常发现使用浮点数会获得更好的效果(尤其是在跨浏览器方面)。
vh
与flex模型解决方案相比,所有其他解决方案(包括投票最多的解决方案)都不是最佳选择。
随着CSS flex模型的出现,解决100%高度问题变得非常非常容易:height: 100%; display: flex
在父flex: 1
元素和子元素上使用。他们会自动占用容器中的所有可用空间。
注意标记和CSS是多么简单。没有桌子黑客或任何东西。
html, body {
height: 100%;
}
body {
display: flex;
}
.left, .right {
flex: 1;
}
.left {
background: orange;
}
.right {
background: cyan;
}
<div class="left">left</div>
<div class="right">right</div>
在此处了解有关flex模型的更多信息。
这对我有用:
<div style="position:fixed; top:0px; left:0px; bottom:0px; right:0px; background: red;"> </div>
使用position:fixed
代替position:absolute
,即使您向下滚动该分区也会扩展到屏幕末端。
如果要设置a <div>
或任何元素的高度,也应将<body>
和的高度也设置<html>
为100%。然后您可以将元素的高度设置为100%:)
这是一个例子:
body, html {
height: 100%;
}
#right {
height: 100%;
}
如果您能够完全定位自己的元素,
position: absolute;
top: 0;
bottom: 0;
会做到的。
您可以在CSS中使用视口单元:
HTML:
<div id="my-div">Hello World!</div>
CSS:
#my-div {
height: 100vh; /* vh stands for view-port height, 1vh is 1% of screen height */
}
的HTML
的CSS