2016-04-03 148 views
0

我可以只使用CSS获取前一个元素的高度吗? 我使用计算()函数动态设置的div B.获取前一个元素的高度

#b{ 
    height:calc(100vh - heightOfPreviousElement); 
} 

我需要知道前一个元素的高度的高度。

enter image description here

什么,我知道的是,100vh等于屏幕高度的100%。

我使用的代码在回答below.Using弯曲,

我有一个问题。橙色的高度变小。 enter image description here

+0

这听起来像一个XY的问题给我。也许布局可以使用flexbox等其他方法制作,因为您只是根据另一个元素(同级)调整高度。不幸的是CSS不允许选择以前的元素或父母(因此名称**级联**)。更新您的问题以包含更多详细信息,例如您希望以什么样的布局实现可视化,以及代码片段 - 这非常有用。 – Terry

+0

可能的重复:http://stackoverflow.com/q/33129660/3597276 –

回答

1

您可以使用flexbox轻松实现您正在寻找的效果。诀窍是让蓝色容器(具有灵活的高度)每当有需要时规模增长,使用flex: 1 1 auto,这简直是一个速记:

flex-grow: 1; 
flex-shrink: 1; 
flex-basis: auto; 

看到,有证据的概念代码段如下:

body { 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 
.wrapper { 
 
    display: flex; 
 
    flex-direction: column; 
 
    flex-wrap: no-wrap; 
 
    align-items: center; 
 
    justify-content: center; 
 
    height: 100vh; 
 
} 
 
.wrapper > div { 
 
    width: 100%; 
 
} 
 
#c1 { 
 
    background-color: #880015; 
 
    color: #fff; 
 
    height: 60px; 
 
    margin-bottom: 10px; 
 
} 
 
#c2 { 
 
    background-color: #ff7f27; 
 
    } 
 
#c3 { 
 
    background-color: #00a2e8; 
 
    flex: 1 1 auto; 
 
    margin-bottom: 10px; 
 
    }
<div class="wrapper"> 
 
    <div id="c1">height: 60px</div> 
 
    <div id="c2">height: auto (determined by content?)</div> 
 
    <div id="c3">flexible height</div> 
 
</div>

+0

我用这个代码,但有一个问题。看到我更新的问题。 – JMA

+0

@JohnArellano那是因为你没有足够的高度来容纳所有的人。发生这种情况时,柔性元素会在尺寸上崩溃。你可以通过设置'flex-shrink:0'来防止这种情况(默认为'1')。 – Terry

0

不,你不能选择CSS中的前一个元素。

您可能感兴趣的JQuery PrevParents选择上一个元素并使用.css()方法应用高度的方法?