Html 为什么不是';t display:flex允许我的边栏占据100%的可用DIV高度?

Html 为什么不是';t display:flex允许我的边栏占据100%的可用DIV高度?,html,css,flexbox,Html,Css,Flexbox,好的,CSS大师。这里有一个简单的。我想在我的主要内容区左边有一个侧边栏。我希望侧边栏占屏幕的30%,内容占70%。但是,我希望侧边栏区域占据可用高度的100%。我有 <div id="main"> <div id="side"> <%= render "layouts/sidebar" %> </div> <div id="contentArea"><%= yield %></div> &l

好的,CSS大师。这里有一个简单的。我想在我的主要内容区左边有一个侧边栏。我希望侧边栏占屏幕的30%,内容占70%。但是,我希望侧边栏区域占据可用高度的100%。我有

<div id="main">
  <div id="side">
    <%= render "layouts/sidebar" %>
  </div>
  <div id="contentArea"><%= yield %></div>
</div>

但现在,我的侧边栏的高度只等于其中的内容。我如何使它成为所有东西的100%。

问题是您在
一侧指定了
高度
100%
。具有讽刺意味的是,这实际上阻止了立柱占据整个垂直空间,因为它在容器的高度处达到了上限。由于
#main
没有指定的高度,因此在
#side
上设置
高度:100%
会将其约束为内部内容(文本)的高度

只需删除此项,柱就会展开以占据整个垂直空间:

#主{
显示器:flex;
宽度:100%;
背景颜色:绿色;
}
#侧面{
背景色:#E0;
宽度:30%;
显示:内联块;
浮动:左;
/*身高:100%*/
}
#内容区{
文本对齐:居中;
宽度:70%;
显示:内联块;
}

一边
Lorem ipsum dolor sit amet,是一位杰出的献身者。你是谁。整数nec tincidunt erat,用十字花饰turpis。佩伦特斯克特杜姆turpis是欧盟孕前的一个拍卖人,lacus pulvinar。母猫生殖器官
维塔·埃吉特·尼西。不要吃火鸡、调味品和调味品。不在酒后驾车,不在酒后驾车,莫利斯酒后驾车。mauris酒后驾车,vitae blandit ac,Tetur sed ex.sed bibendum felis ex,id
euismod odio euismod ac.Present viverra arcu quis arcu调味品,eget varius Elite suscipit。多奈克·坦帕斯(Donec tempus)、雅库利(justo vel iaculis vehicula)、大杂烩(risus magna varius ex)、玛蒂斯精英(vitae mattis Elite turpis ac magna)。温度门和温度门。悬钩子
勃朗迪特街,酒后驾车,交通堵塞。佩伦特式的特权是佩伦特式的封建主义。不要坐在奥奇·阿库姆桑·布兰迪特(orci accumsan blandit)的阿梅特·图尔皮斯(amet turpis)。在tincidunt erat和tristique sagittis之间。静脉前庭缺如。梅塞纳斯和里索斯
夸姆。这是一句孕妇名言。奥古斯之门,精英之门。这是一只秃鹰。这是一种发酵剂。前庭相位
弗林尼利亚·普鲁斯·马莱苏阿达。

问题是您在
一侧指定了
高度
100%
。具有讽刺意味的是,这实际上阻止了立柱占据整个垂直空间,因为它在容器的高度处达到了上限。由于
#main
没有指定的高度,因此在
#side
上设置
高度:100%
会将其约束为内部内容(文本)的高度

只需删除此项,柱就会展开以占据整个垂直空间:

#主{
显示器:flex;
宽度:100%;
背景颜色:绿色;
}
#侧面{
背景色:#E0;
宽度:30%;
显示:内联块;
浮动:左;
/*身高:100%*/
}
#内容区{
文本对齐:居中;
宽度:70%;
显示:内联块;
}

一边
Lorem ipsum dolor sit amet,是一位杰出的献身者。你是谁。整数nec tincidunt erat,用十字花饰turpis。佩伦特斯克特杜姆turpis是欧盟孕前的一个拍卖人,lacus pulvinar。母猫生殖器官
维塔·埃吉特·尼西。不要吃火鸡、调味品和调味品。不在酒后驾车,不在酒后驾车,莫利斯酒后驾车。mauris酒后驾车,vitae blandit ac,Tetur sed ex.sed bibendum felis ex,id
euismod odio euismod ac.Present viverra arcu quis arcu调味品,eget varius Elite suscipit。多奈克·坦帕斯(Donec tempus)、雅库利(justo vel iaculis vehicula)、大杂烩(risus magna varius ex)、玛蒂斯精英(vitae mattis Elite turpis ac magna)。温度门和温度门。悬钩子
勃朗迪特街,酒后驾车,交通堵塞。佩伦特式的特权是佩伦特式的封建主义。不要坐在奥奇·阿库姆桑·布兰迪特(orci accumsan blandit)的阿梅特·图尔皮斯(amet turpis)。在tincidunt erat和tristique sagittis之间。静脉前庭缺如。梅塞纳斯和里索斯
夸姆。这是一句孕妇名言。奥古斯之门,精英之门。这是一只秃鹰。这是一种发酵剂。前庭相位
弗林尼利亚·普鲁斯·马莱苏阿达。
使用:
#side{height:100vh;}
(vh=视口高度),然后移除显示柔性,这样每个div的高度就不一样了。 链接到jsfiddle

使用:
#side{height:100vh;}
(vh=视口高度),并移除显示弹性,以便每个div的高度不相等。
在您的结构“main”中,链接到jsfiddle的是父div,这意味着如果您将“100%的所有内容”设置为子div“side”,并且该div不是绝对位置或固定位置,“main”也将获得100%。 所以,你可以使用相对长度,比如高度:100vh

但是您可以设置为side div position fixed(固定的侧面div位置):当您在contentArea中滚动时,这会有所帮助,但侧面div始终位于左侧,高度为100vh

提示:如果使用flex,则可以在不使用浮动的情况下进行操作(例如,调整内容)
)。检查它:

在您的结构中,“main”是父div,这意味着如果您将“100%的所有内容”设置为子div“side”,并且该div不是绝对位置或固定位置,“main”也将获得100%。 所以,你可以使用相对长度,比如高度:100vh

但是您可以设置为side div position fixed(侧div位置固定):当您获得scroll i时,它会有所帮助
#main {
        display: flex;
        width: 100%;
        background-color: green;
}

#side {
        background-color: #e0e0e0;
        width: 30%;
        display: inline-block;
        float: left;
        height: 100%;
}

#contentArea {
        text-align: center;
        width: 70%;
        display: inline-block;
}