2016-11-04 7 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 개의 버튼을 가지고 있지만 두 번째 버튼은 하나 뿐인데 이것은 의도 한 것입니다. 일부 제품의 버튼 수가 다를 수 있습니다. 그 이유는 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

IT는 farily 좋아 솔루션입니다 -이 두 가지를 변경하는 것을 어렵지 않다 값. 그러나 웹 페이지에서 거의 모든 것을 위해'px'를 하나의 단위로 사용해서는 안됩니다. 몇 가지 예외가 있지만 버튼은 그 중 하나가 아닙니다. 'em' 또는'%'를 사용하십시오. – junkfoodjunkie

+0

갖고있는 것을 가지고 작업 예제 (jsfiddle/codepen/snippet)를 제공하십시오 – Dekel

+0

바이올린을 할 수 있습니까? –

답변

1

이 작업을 수행하는 가장 간단한 방법은 "제목"에 패딩 바닥을 추가 할 수 있습니다. 또는 더 나은 옵션 인 HTML 구조를 변경할 수 있다면.

HTML로이 레이아웃을 사용해보십시오. enter image description here

+0

내가 추가 한 스 니펫을 확인하십시오. 패딩을 제목에 추가하는 것은'.parent'에 추가하는 것과 같습니다. 이미 언급했듯이, 아마도 완벽한 해결책은 아닙니다. HTML을 어떻게 변경 하시겠습니까? 여기서 CSS 문제 만 볼 수는 있지만 잘못 생각해도 좋습니다. –

+0

방금 ​​추가 한 레이아웃을 살펴보십시오. – NPN

+0

나는 당신이 의미하는 바를 얻었지만, 그것이 해결할 수있는 더 많은 이슈를 야기 할 수도 있다고 두려워합니다. 단추와 나머지 내용을 별도의 행으로 나눠서 가로로 정렬해야한다면 고정 된 것보다 더 지저분 해 보일 수 있으므로 부모가 눈에 보이는 테두리를 가지고 있기 때문에 단추가 같은 부모에 있어야합니다. '패딩 - 하단 '. 아이디어를 가져 주셔서 감사합니다! –

0

clear: both;float: left;을 추가하여 부모의 맨 아래로 보내보십시오. 이처럼

:

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

그러나이 요소들은 떠 다니지 않습니다 ... 어떤 요소에 '적용해야합니까 : 둘 다?'? –

+0

상위 요소의 맨 아래로 가고 싶은 항목. –

+0

그러나 그것은 작동하지 않습니다. 왜냐하면 첫째로'clear' [floating으로만 작동합니다] (http://www.w3schools.com/csSref/pr_class_clear.asp)입니다. 두 번째로 요소를 플로트로 만들었지 만 만들 수 없습니다. 그들은 부모의 바닥에 '깨끗한'채로있다. 스 니펫을 확인하여 문제를 확인하십시오. 어쩌면 내가 잘못 생각한 것일 수도 있습니다. 그렇다면 의미하는 바를 알려주십시오. –

1

나는이 문제인지 확실하지 오전하지만 난 당신은 높이를 추가 할 필요가 있다고 생각의 폭

+0

신장은 동적이며 내용에 따라 다르지만 너는 그 너비에 맞습니다. 나는 단지 관련 코드 만 언급하려고 노력 했었지만, 이제는 질문에 추가 한 발췌 문장으로 더 명확 해졌습니다. –