2016-11-06 114 views
0

我一直在嘗試不同的方式,但無法實現我想要的。CSS Layout Push Div底部

<div id="parent"> 
    <div id="child-1"></div> 
    <div id="child-2"></div> 
    <div id="child-3"></div> 
</div> 

所以我有#parentheight: 100vh

#child-1應該有height: 100%父母。

#child-2#child-3應具有width: 100%height: auto和它們應當在彼此的頂部上的bottom: 0位置堆疊。

我一直在試圖設置父親和兩個孩子絕對,但第一個孩子的身高被忽略..我試過display flex但第一個孩子的身高不是父母的100%..我很困惑怎麼辦這個。

有人可以幫忙嗎?

這裏是我想要實現:jsfiddle.net

+3

jsFiddle會有幫助 – Itay

+2

你可以製作一張照片來展示你的目的。 –

+0

https://jsfiddle.net/vhLuze86/我不得不用固定位置來做......這不是我想要的。你可以看看嗎? – cocacrave

回答

1

你必須首先獲得#child-2bottom值動態地照你說的應該是對的#child-3頂部。

您需要申請jQuery來獲得#child-3高度動態,然後應用的#child-3高度值的child-2bottom值,就像

#child-2 { 
    bottom: height-of-child-3; 
} 

看這個Codepen

或者看下面的代碼片段:

height_child_three = $('#child-3').height(); 
 

 
$('#child-2').css({ 
 
\t position: 'absolute', 
 
\t bottom: height_child_three 
 
});
#parent { 
 
    width: 100vw; 
 
    height: 100vh; 
 
    background: #000; 
 
    position: relative; 
 
} 
 

 
#child-1 { 
 
    width: 100%; 
 
    height: 100%; 
 
    background: #eee; 
 
} 
 

 
#child-2 { 
 
    width: 100%; 
 
    background: #a0ea0e; 
 
} 
 

 
#child-3 { 
 
    position: absolute; 
 
    bottom: 0; 
 
    width: 100%; 
 
    background: #30e30e; 
 
} 
 

 
body { margin: 0; } /* A small reset */
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="parent"> 
 
    <div id="child-1"> 
 
    <strong>I'm child 1</strong> 
 
    </div> 
 
    <div id="child-2"> 
 
    <strong>I'm child 2</strong> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ratione deleniti voluptate commodi distinctio, repellendus qui, placeat laboriosam eligendi! Ducimus reiciendis officiis debitis placeat adipisci quae hic tempore vitae suscipit nemo.Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsam sed aliquid, laborum nisi quos excepturi hic! Molestias hic consectetur dolor! Perferendis iste, quisquam quaerat ab, odio ducimus! Odio, minima error?</p> 
 
    </div> 
 
    <div id="child-3"> 
 
    <strong>I'm child 3</strong> 
 
    </div> 
 
</div>

希望這有助於!

+0

我應該更清楚地解釋。對於'#child-2'和'#child-3'高度應該根據屏幕寬度自動調整。如果我不知道'#child-3'的高度,我不知道如何使用'#child-2'的'bottom'屬性。 – cocacrave

+0

@cocacrave,「高度應該是自動根據屏幕寬度」?你能解釋一下嗎?看來你將不得不使用一些JavaScript來計算高度,如果你沒有設置它.... – sinisake

+0

@cocacrave哦!我想你在問如何獲得'#child-2'的'bottom'值?好!你找不到'#child-2'的值。你必須使用Javascript來獲得每個孩子的價值並相應地設置它們。檢查更新的答案! –

1

這是你所需要的?

HTML:

<div id="parent"> 
    <div class="child-1"></div> 
    <div class="child-2">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Error voluptatum necessitatibus dolorem soluta laudantium cupiditate maiores neque, aliquid accusamus autem saepe tempora, itaque possimus, eaque deleniti odio atque enim omnis.</div> 
    <div class="child-3">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Culpa, illo est dolor dolores placeat deleniti quae consequuntur eum ipsum blanditiis laboriosam quod repellendus fugit! Odio quis rem vel a dolores.</div> 
</div> 

CSS:

html, 
body, 
div { 
    margin: 0; 
    padding: 0; 
} 

*, 
*:after, 
*:before { 
    box-sizing: border-box; 
} 

#parent { 
    position: relative; 
    width: 100vw; 
    height: 100vh; 
    background: #ccc; 
} 

.child-1 { 
    width: 100%; 
    height: 100%; 
    background: red; 
} 

.child-2 { 
    width: 100%; 
    height: auto; 
    padding: 30px; 
    background: blue; 
} 

.child-3 { 
    width: 100%; 
    height: auto; 
    padding: 30px; 
    background: green; 
} 

在這裏你可以只用簡單的CSS看到的解決方案。 CODEPEN

+0

其實,在看到codepen之後,這不是我正在尋找的東西..我正在摸我的腦袋,代碼如何工作,但這不是我認爲的那樣。這兩個底部div應該在child1之上。不過謝謝。 – cocacrave

+0

嗨@cocacrave,不用修改HTML就能實現這一點的方法是使用「flex」和「flex-direction」或「order」屬性。 – driera