인라인 / 인라인 블록 요소의 CSS 수직 정렬


142

나는 몇 얻으려고 inline하고 inline-block구성 요소는 수직으로 정렬 div. span이 예에서 어떻게 내려 오게됩니까? 난 둘 다 해봤 vertical-align:middle;하고 vertical-align:top;,하지만 아무것도 변경.

HTML :

<div>
  <a></a><a></a>
  <span>Some text</span>
</div>

CSS :

a {
    background-color:#FFF;
    width:20px;
    height:20px;
    display:inline-block;
    border:solid black 1px;
}

div {
    background:yellow;
    vertical-align:middle;
}
span {
    background:red;
}

결과 :
여기에 이미지 설명을 입력하십시오

깡깡이


경우이 발생하지 않습니다 <a>요소가 텍스트를 포함 그들 내부에 이 링크를 참조
S.Serpooshan

답변:


270

vertical-align부모 요소가 아닌 정렬되는 요소에 적용됩니다. div의 자식을 세로로 정렬하려면 대신 다음을 수행하십시오.

div > * {
    vertical-align:middle;  // Align children to middle of line
}

참조 : http://jsfiddle.net/dfmx123/TFPx8/1186/

참고 : vertical-align부모의 전체 높이가 아니라 현재 텍스트 줄에 상대적 div입니다. 부모 div가 더 키가 크고 요소를 세로로 가운데에 배치하려면 divline-height속성을 대신 설정하십시오 height. 예를 보려면 위의 jsfiddle 링크를 따르십시오 .


outer의 높이를 지정하면 작동이 중지됩니다 div.
Abhranil Das

4
@AbhranilDas vertical-align는 부모 요소가 아닌 현재 텍스트 행을 기준으로합니다. 이 작업을 원하는대로 수행하려면 div line-height대신 div를 설정하십시오 height.
Diego


5

두 요소를 떠 다니는 것만으로도 같은 결과를 얻을 수 있습니다.

div {
background:yellow;
vertical-align:middle;
margin:10px;
}

a {
background-color:#FFF;
width:20px;
height:20px;
display:inline-block;
border:solid black 1px;
float:left;
}

span {
background:red;
display:inline-block;
float:left;
}

왼쪽으로 떠 다니는 문제는 브라우저가 너무 작아지면 다음 줄로 줄 바꿈된다는 것입니다. 때로는 브라우저 경계를 넘어서도 인라인으로 유지 해야하는 항목이 필요하므로 inline-block유일한 솔루션입니다.
Jake Wilson

그 포장 문제는 문제가 될 수 있지만, 이것은 포장이 괜찮은 경우에 정말 좋은 해결책이라고 말하고 싶습니다. 우아하고 원하는 효과의 정신을 말하며 부모를 수정할 필요가 없습니다.
Crispen Smith

1

inline-block항목 의 위치를 ​​미세 조정 하려면 상단 및 왼쪽을 사용하십시오.

  position: relative;
  top: 5px;
  left: 5px;

CSS 트릭 감사합니다 !


translate가능합니다.
user4642212
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.