2016-11-04 80 views
0

的底部我有具有以下HTML結構的產品列表:對準一些HTML元素到其父

<div class="parent"> 
    <img src="myimg.jpg" /> 
    <div class="title">My Title</div> 
    <div class="buttons"></div> 
</div> 

有許多家長彼此相鄰。首先,我有一個問題,他們往往會是不同的高度(由於標題的長度不同)。我使用display: flex;修正了這個問題,所以現在他們都是一樣的高度。不過,我需要buttons div堅持parent的底部,而標題和圖片應該保持在原來的位置。所以我寧願在按鈕和之前的parent的孩子之間留有空白區域,而不是在按鈕下方的底部留有空白區域。

我試圖找到一個解決方案,但所有的結果導致這個CSS:

.parent { position: relative; } 
.buttons { position: absolute; bottom: 0; } 

這種解決方案並沒有爲我工作,因爲那時按鈕可以重疊的稱號。所以,我能想到的迄今爲止最好的解決辦法是使用底部填充是等於按鈕的高度:

.parent { display: flex; position: relative; padding-bottom: 100px; } 
.buttons { position: absolute; bottom: 0; height: 100px; } 

但我不知道這是否是最佳的解決方案,因爲按鈕的高度可能會改變或甚至是動態的。有更好的解決方案嗎?

編輯:

下面是一個演示問題的代碼片段。第一個父母有2個按鈕,而第二個父母只有一個,這是爲了 - 有些產品可能有不同數量的按鈕,這就是我無法使用padding-bottom解決方案的原因之一。

#wrap { display: flex; } 
 
.parent { display: inline-block; position: relative; padding-bottom: 100px; width: 100px; border: 1px solid black; padding: 10px 20px 20px; margin: 0 5px 10px; } 
 
.buttons { position: absolute; bottom: 0; height: 100px; } 
 
.button-one { background: green; } 
 
.button-two { background: red; } 
 
.button-one, .button-two { margin: 15px 0 0; }
<div id="wrap"> 
 
    <div class="parent"> 
 
    <img src="myimg.jpg" /> 
 
    <div class="title">My Title</div> 
 
    <div class="buttons"> 
 
     <div class="button-one">Button one</div> 
 
     <div class="button-two">Button two</div> 
 
    </div> 
 
    </div> 
 
    <div class="parent"> 
 
    <img src="myimg.jpg" /> 
 
    <div class="title">My TitleMy TitleMy TitleMy TitleMy TitleMy TitleMy TitleMy TitleMy TitleMy TitleMy TitleMy TitleMy TitleMy TitleMy TitleMy TitleMy TitleMy TitleMy TitleMy Title</div> 
 
    <div class="buttons"> 
 
     <div class="button-one">Button one</div> 
 
    </div> 
 
    </div> 
 
</div>

+0

這是一個farily沒關係的解決方案 - 它並不難修改兩處值。但是,您不應該使用'px'作爲單位,因爲網頁上的任何內容都是如此。有幾個例外,但按鈕不是其中之一。使用'em'或'%'。 – junkfoodjunkie

+0

提供一個有效的例子(jsfiddle/codepen/snippet)你可以做什麼 – Dekel

+0

? – 2016-11-04 01:22:33

回答

1

做到這一點,最簡單的方法是添加填充底到你的「稱號」。或者,如果您可以更改HTML結構,這是更好的選擇。

以HTML格式嘗試此佈局。 enter image description here

+0

請檢查我添加的片段。爲標題添加填充等同於將其添加到'.parent',我已經提到這是一種可能的但可能不是完美的解決方案。你會如何建議更改HTML?我只能在這裏看到一個CSS問題,但隨時可以證明我錯了。 –

+0

請看我剛添加的佈局。 – NPN

+0

我明白了你的意思,但我擔心這可能會導致更多問題解決。這些按鈕應該在同一個父級中,因爲父級具有可見邊框,如果我將按鈕和其餘內容分割成單獨的行,那麼我需要將它們水平對齊,並且它可能看起來比固定的更混亂'填充-bottom'。謝謝你的想法! –

0

嘗試增加clear: both;float: left;將其發送到其父的最底部。

像這樣:

.buttons { position: absolute; bottom: 0; height: 100px; clear: both; float: left; width: 100px; } 
+0

但是這些元素不是浮動的......我應該在哪個元素上應用'clear:both;'? –

+0

您想要轉到父元素的底部。 – 2016-11-04 01:40:04

+0

但這不起作用,首先是因爲'清除'[只能在浮動狀態下工作],其次即使我使元素浮動,我不能使他們用'clear'粘在父母的底部。請檢查代碼段以查看問題。也許我弄錯了,如果是的話,請提供你的意思的片段。 –

1

我不知道這是否是問題,但我認爲你需要添加一個高度和寬度

+0

高度是動態的,取決於內容,但是您的寬度是正確的。我試圖只提到相關的代碼,但希望現在更清楚的是我添加到問題中的代碼片段。 –