DIV를 하단 또는 기준선에 정렬


95

하위 div 태그를 상위 div 태그의 하단 또는 기준선에 정렬하려고합니다.

내가 원하는 것은 부모 Div의 기준선에 자식 Div를 두는 것뿐입니다. 지금은 다음과 같습니다.

HTML

<div id="parentDiv">
<div class="childDiv"></div>
</div>

CSS

#parentDiv
{
  width:300px;
  height:300px;
  background-color:#ccc;
  background-repeat:repeat
}
#parentDiv .childDiv
{
  height:100px;
  width:30px;
  background-color:#999;
}

노트

childDiv다양한 높이를 가진 여러 개의를 갖게 될 것이며 기준선 / 하단에 정렬하려면 모두 필요합니다.


생각조차하지 않았다! 방금 parentDiv에서 높이를 제거하고 모든 childDiv가 이제 basline에 앉아 있습니다. 임 그냥 어리석은 샐리!
sia

그러나 특정 높이를 원할 경우 absolute부모에 따라 위치 지정 을 사용해야합니다 .
Y. Shoham

답변:


154

다음을 추가해야합니다.

#parentDiv {
  position: relative;
}

#parentDiv .childDiv {
  position: absolute;
  bottom: 0;
  left: 0;
}

absolute요소를 선언 할 때 그렇지 않은 가장 가까운 부모에 따라 배치됩니다 static( absolute, relative또는 여야 함 fixed).


7
나는 이것이 그가 원하는 것을 수행하지 않는다고 의심합니다. 현재 이것은 모두 (동적 막대 차트 인 경우 여러 하위 요소가있는 것처럼 보임) 서로 위에 배치됩니다.
crmepham

52

7 년이 지난 후에도 수직 정렬에 대한 검색은 여전히이 질문을 불러 일으키므로 현재 사용할 수있는 또 다른 솔루션 인 flexbox 위치 지정을 게시하겠습니다. display:flex; justify-content: flex-end; flex-direction: column상위 div에 설정하기 만하면됩니다 (이 바이올린 에서도 설명 됨).

#parentDiv
{
  display: flex;
  justify-content: flex-end;
  flex-direction: column;
  width:300px;
  height:300px;
  background-color:#ccc;
  background-repeat:repeat
}

1
단순한. 정확히 내가 원했던 것. align-items: flex-start;항목을 strech하지 않으려면 사용하십시오 .
Madhan

이것은 요즘 최고의 답변입니다!
Rens Groenveld

12

표 및 표 셀의 CSS 표시 값을 사용합니다.

HTML

<html>
<body>

  <div class="valign bottom">
    <div>

      <div>my bottom aligned div 1</div>
      <div>my bottom aligned div 2</div>
      <div>my bottom aligned div 3</div>

    </div>
  </div>

</body>
</html>

CSS

html,body {
    width: 100%;
    height: 100%;
}
.valign {
    display: table;
    width: 100%;
    height: 100%;
}
.valign > div {
    display: table-cell;
    width: 100%;
    height: 100%;
}
.valign.bottom > div {
    vertical-align: bottom;
}

여기에 JSBin 데모를 만들었습니다 : http://jsbin.com/INOnAkuF/2/edit

데모에는 동일한 기술을 사용하여 수직으로 중앙 정렬하는 방법의 예도 있습니다.


1
테이블이 얻을만큼 똥으로, 때로는이 최선의 해결책이다
Sean256

이것은 나를 위해 최고의 솔루션이었다
bowlerae

절대 위치 요소를 사용하여 일반적으로 부모 요소의 높이 변화 때문에 정말 최고의 솔루션입니다
hamncheez

7

이것은 작동합니다 (나는 단지 테스트했습니다 & ff) :

<html>
<head>
    <style type="text/css">
        #parent {
            height: 300px;
            width: 300px;
            background-color: #ccc;
            border: 1px solid red;
            position: relative;
        }
        #child  {
            height: 100px;
            width: 30px;
            background-color: #eee;
            border: 1px solid green;
            position: absolute;
            bottom: 0;
            left: 0;
        }
    </style>
</head>
<body>
    <div id="parent">parent
        <div id="child">child</div>
    </div>
    outside
</body>
</html>

도움이 되길 바랍니다.


5

Y. Shoham이 게시 한 답변 (절대 위치 지정 사용)은 컨테이너가 고정 된 높이 인 대부분의 경우 가장 간단한 솔루션 인 것처럼 보이지만 상위 DIV가 여러 DIV를 포함하고 동적 콘텐츠를 기반으로 높이를 자동 조정해야하는 경우 문제가있을 수 있습니다. 두 블록의 동적 콘텐츠가 필요했습니다. 하나는 컨테이너 상단에 정렬되고 다른 하나는 하단에 정렬되며 컨테이너를 상단 DIV의 크기에 맞게 조정할 수 있지만 하단에 정렬 된 DIV가 더 크면 컨테이너의 크기를 조정하지 않고 바깥쪽으로 확장합니다. . 테이블 스타일 포지셔닝을 사용하여 위에서 설명한 방법은 조금 더 복잡하지만이 점에서 더 견고하며 컨테이너의 바닥에 대한 정렬과 올바른 자동 높이를 허용합니다.

CSS

#container {
        display: table;
        height: auto;
}

#top {
    display: table-cell;
    width:50%;
    height: 100%;
}

#bottom {
    display: table-cell;
    width:50%;
    vertical-align: bottom;
    height: 100%;
}

HTML

<div id=“container”>
    <div id=“top”>Dynamic content aligned to top of #container</div>
    <div id=“bottom”>Dynamic content aligned to botttom of #container</div>
</div>

예

나는 이것이 새로운 대답이 아니라는 것을 알고 있지만 내 해결책을 찾기 위해이 접근 방식에 대해 언급하고 싶었지만 초보자로서 나는 논평 할 수 없었고 게시 만 허용했습니다.


3

아마도 자식 div를 설정해야 할 것입니다 position: absolute.

자녀 스타일을 다음으로 업데이트하십시오.

#parentDiv .childDiv
{
  height:100px;
  width:30px;
  background-color:#999;
  position:absolute;
  top:207px;
}

나는 그것을 시도했지만 내가 필요한 것은 parentDiv의 바닥에 앉을 childDiv의 바닥이며 그래프는 동적이며 높이는 각 childDiv에서 다음으로 다를 것입니다 ... 고체 알아 낸 것을 그만 ...
SIA

5
0 : 더 나은 세트 아래로 207 셋톱 (일부 임의의 수)에 안 좋은 생각
pstanton

2

오래된 게시물이지만 찾는 사람에게 대답을 공유 할 것이라고 생각했습니다. 그리고 사용할 때 absolute일이 잘못 될 수 있기 때문 입니다. 내가 할 것은

HTML

<div id="parentDiv"></div>
<div class="childDiv"></div>

CSS

parentDiv{

}
childDiv{
    height:40px;
    margin-top:-20px;
}

그러면 하위 div가 상위 div에 백업됩니다. 대부분의 브라우저에서도 안전합니다.


이렇게하면 childDiv가 parentDiv의 맨 아래에있는 절반이됩니다. 여백 상단에 -40px 이상을 사용해야합니다. 또한 position : relative를 사용하는 것이 가장 좋습니다. 이 경우 두 div 모두.
Augus

1

나는 비슷한 것을 가지고 있었고 효과적으로 약간의 패딩 탑 을 아이에게 추가 하여 작동하게했습니다 .

여기에있는 다른 답변 중 일부가 솔루션에 도달 할 것이라고 확신하지만 많은 시간이 지난 후에 쉽게 작동하도록 만들 수 없었습니다. 나는 대신 단순함이 우아하지만 나에게는 일종의 해커처럼 보이는 패딩 탑 솔루션으로 끝났습니다 (설정하는 픽셀 값은 말할 것도없이 부모 높이에 따라 달라질 것입니다).


0

td {
  height: 150px;
  width: 150px;
  text-align: center;
}

b {
  border: 1px solid black;
}

.child-2 {
  vertical-align: bottom;
}

.child-3 {
  vertical-align: top;
}
<table border=1>
  <tr>
    <td class="child-1">
      <b>child 1</b>
    </td>
    <td class="child-2">
     <b>child 2</b>
    </td>
    <td class="child-3">
      <b>child 3</b>
    </td>
  </tr>
</table>

이것은 내 해결책입니다


-6

부모 Div 안에 여러 자식 Div가있는 경우 아래와 같이 vertical-align 속성을 사용할 수 있습니다.

.Parent div
{
  vertical-align : bottom;
}

댓글없이 왜 이렇게 많은 반대표를 받았나요? 문제가 해결되지 않습니까? 온라인 조사는 그렇게해야한다고 제안합니다.
sholsapp
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.