2016-11-04 16 views
0

の底にいくつかのHTML要素を揃える:は、私は次のHTML構造を持っている製品のリストを持っている親

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

隣同士にこれらの親の多くがあります。最初は、(タイトルの長さの違いにより)異なる高さになることが多いという問題がありました。私はdisplay: flex;を使ってそれを修正しました。だから今は同じ高さです。しかし、parentの下部に貼り付けるにはbuttons divが必要ですが、タイトルと画像はそのまま残ります。だから私はボタンの下に白いスペースを持っているのではなく、ボタンと前の子どもの間に白いスペースを持つことを好むでしょう(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つのボタンがあり、2番目のボタンには1つのみがありますが、これは意図されたものです。ボタンの数が異なる製品もあります。

#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大丈夫なソリューションです - それは2を変更することは難しいことではありません値。しかし、あなたは 'px'を単位として使うべきではありません。いくつかの例外がありますが、ボタンはその1つではありません。 'em'または'% 'を使います。 – junkfoodjunkie

+0

あなたが持っているものを実際の例(jsfiddle/codepen/snippet)に提供してください – Dekel

+0

あなたはフィドルをすることができますか? –

答えて

1

これを実行する最も簡単な方法は、あなたの「タイトル」にパディング下を追加することです。または、より良いオプションであるHTML構造を変更できるかどうか。

このレイアウトをHTMLで試してみてください。 enter image description here

+0

私が追加したスニペットを確認してください。パディングをタイトルに追加することは、 '.parent'に追加することと同じですが、これは私がすでに言いましたが、おそらく完璧な解決策ではないと言えます。どのようにHTMLを変更することを提案しますか?私はここでCSSの問題を見ることができますが、私が間違っていることを自由に感じてください。 –

+0

私が今追加したレイアウトを見てください。 – NPN

+0

私はあなたが意味することを得ましたが、それは解決するだろうより多くの問題を引き起こす可能性があります恐れています。私はボタンと残りのコンテンツを別々の行に分割すると、私はそれらを水平に整列させる必要があり、おそらく固定されたものよりももっと厄介に見えるだろうと、親が目に見える境界を持っているので、ボタンは同じ親になければなりません'padding-bottom'です。しかし、アイデアをありがとう! –

0

clear: both;float: left;を追加して親の一番下に送信してください。このよう

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

しかし、これらの要素は浮動していません...どの要素に「クリア:両方」を適用する必要がありますか? –

+0

親要素の一番下に移動したいもの。 –

+0

しかし、最初は 'clear' [浮動小数点でしか動作しない](http://www.w3schools.com/csSref/pr_class_clear.asp)、第2に要素を浮動させても作成できないために機能しませんそれらは 'clear'で親の底にくっついています。スニペットを確認して問題を確認してください。たぶん私はあなたが間違っている、もしそうなら、あなたが意味することのスニペットを提供してください。 –

1

私は、これは問題がある場合はわからないが、私はあなたが高さとを追加する必要があると思うの幅

+0

高さは動的で内容にもよりますが、あなたはその幅について正しいです。私は関連するコードだけを述べようとしましたが、うまくいけば、スニペットを付け加えて、質問に追加してください。 –

関連する問題