2013-08-15 2 views
8

꽤 자주 HTML/CSS 문제가 있습니다.하지만 불행히도 연구를 마친 후에도 작동하지 않습니다.CSS, vertical-align : 부트 스트랩이있는 중간

부트 스트랩 (3 RC2)을 사용 중이며 이미지를 행 중앙에 세로로 정렬하고 싶습니다.

<div class="row"> 
    <div class="col-xs-10 col-md-6" id="main"> 
     <p><img src="http://placekitten.com/500/700" alt="" width="500" height="700" /></p> 
    </div> 
    <div class="col-xs-1 col-md-1" style="display: inline-block; vertical-align: middle;"> 
     <img src="http://placekitten.com/100/116" width="100" height="116" /> 
    </div> 
</div> 

두 번째 작은 이미지는 div.row의 중간에 수직 가운데에 위치해야합니다. 그러나, 그것은 작동하지 않는 것 같습니다. 이 바이올린을 사용하여 문제를 볼 수 있습니다 : http://jsfiddle.net/veQKY/2/

작은 폭의 장치를 사용할 때 두 번째 이미지가 첫 번째 이미지 아래로 수평으로 스테이플 링되어야합니다. 즉, 부트 스트랩의 응답을 끊지 않아야합니다.

+0

을 볼 수 있습니다. – Ashwani

+0

@Ashwin 응? 그것은 나를 위해, 크롬이나 파이어 폭스도하지 않는다. – dirkk

+0

'position : absolute' 스타일을 사용하여 중간에 이미지를 설정할 수 있지만, 그렇게 생각하지 않을 것이라고 생각한다. – Ashwani

답변

0
<div class="row"> 
    <div class="col-xs-10 col-md-6" id="main"> 
     <p><img src="http://placekitten.com/500/700" alt="" width="500" height="700" /></p> 
    </div> 
    <div class="col-xs-1 col-md-1" style="display: inline-block; top:50%;margin-top:-58px;position:absolute;"> 
     <img src="http://placekitten.com/100/116" width="100" height="116" /> 
    </div> 
</div> 

수직 정렬 만 요소

이 경우

내부 사용되며, 이미지는 100 (w)이 X 116 (H)이므로 상위

: 50 %; 다음 이미지 높이의 마진 탑 반 (58px)를

은 다음 이미지는 수직

업데이트

<div style="background:url(http://placekitten.com/500/700) center no-repeat;width:500px;height:700px;position:relative;"> 
     <img src="http://placekitten.com/100/116" width="100" height="116" style="position:absolute;top:50%;margin-top:-58px;right:0;"/>   
</div> 
+0

'position : absolute' 응답 레이아웃을 깰 때 이것은 나를 위해 작동하지 않습니다. 작은 장치를 사용할 때 작은 이미지도 쌓아야합니다. 여기에서는 같은 위치에 머무를 것입니다. – dirkk

+0

위치 추가 : 레이아웃과 관련하여 –

+0

이것은별로 의미가 없지만 반응이 깨지는 것은 변하지 않습니다. – dirkk

0
<div class="row"> 
    <div class="col-xs-10 col-md-6" id="main"> 
     <p><img src="http://placekitten.com/500/700" alt="" width="500" height="700" /></p> 
    </div> 
    <div class="col-xs-1 col-md-1" style="display: inline-block; vertical-align: middle;"> 
     <div class="" style="display: table; height: 700px; #position: relative; overflow: hidden;"> 
      <div style=" #position: absolute; #top: 50%;display: table-cell; vertical-align: middle;"> 
      <div class="" style=" #position: relative; #top: -50%"> 
       <img src="http://placekitten.com/100/116" width="100" height="116" /> 
      </div> 
      </div> 
     </div> 
    </div> 
</div> 

당신은 그 사업부를 포장해야 할 다른 방법을 중심으로한다 .

+0

어, 나는 이것이 절대적으로 최후의 수단이라고 생각합니다. 'table-cell '을 사용하는 것은 나에게 매우 해커처럼 보인다. 나는 더 우아한 해결책이 있기를 바랄 것이고, 이것은 우리가 레이아웃 목적으로 테이블을 사용했던 옛날을 생각 나게한다. – dirkk

+0

하지만 그게 작동하는 것만 보입니다. – Ashwani

+0

지금 시도했지만 작동하지 않습니다. 부트 스트랩이 제공하는 응답 성을 최대한 활용하고자합니다. 즉, 창 너비가 작은 경우 작은 이미지가 깨져야합니다. 여기 그냥 사라집니다. – dirkk

0

문제가 해결되었습니다.

CSS :

.row { 
    display: table!important; 
} 
.test { 
    display: table-cell!important; 
    vertical-align:middle; 
} 

HTML :

<div class="row"> 
    <div class="col-xs-10 col-md-6" id="main"> 
     <p><img src="http://placekitten.com/500/700" alt="" width="500" height="700" /></p> 
    </div> 
    <div class="col-xs-1 col-md-1 test"> 
     <img src="http://placekitten.com/100/116" width="100" height="116" /> 
    </div> 
</div> 

업데이트 바이올린 : http://jsfiddle.net/afKDJ/show 가능성

+0

이것은 기본적으로 @ Ashwin의 접근 방식과 같습니다. 나는 같은 이유로 그것을 좋아하지 않는다. 그것은 오히려 못생긴 것이고 더 중요하다. 작은 화면 레이아웃에서는 작동하지 않는다. 즉, 부트 스트랩의 응답 성을 파괴한다. – dirkk

0

은 매우 우아한 해결책은 아니지만이 가 작동을 보인다

<div class="row"> 
    <div class="col-xs-10 col-md-6" id="main"> 
     <p><img src="http://placekitten.com/500/700" alt="" width="500" height="700" /></p> 
    </div> 
    <div class="col-xs-1 col-md-1" style="display: inline-block; vertical-align: middle; margin-top:-58px; padding-top:50%;"> 
     <img src="http://placekitten.com/100/116" width="100" height="116" valign="middle" /> 
    </div> 
</div> 

http://jsfiddle.net/4LMKe/

+0

다른 제안 된 솔루션과 동일 : 대형 장치에서 작동하지만 Boostrap의 응답 속도가 떨어집니다. – dirkk

0
10 는
<div class="row"> 
    <div class="col-xs-10 col-md-6" id="main"> 
     <p><img src="http://placekitten.com/500/700" alt="" width="500" height="700" /></p> 
    </div> 
<div class="col-xs-1 col-md-1 middle-img"> 
    <img src="http://placekitten.com/100/116" width="100" height="116" /> 
</div> 

그것은 잘 작동합니다 이미지 부모 DIV

.middle-img {display: table-cell;float: none;height: 300px /*any value*/;vertical-align: middle;} 
3
.centerFlex { 
/* Internet Explorer 10 */ 
display:-ms-flexbox; 
-ms-flex-pack:center; 
-ms-flex-align:center; 
/* Firefox */ 
display:-moz-box; 
-moz-box-pack:center; 
-moz-box-align:center; 
/* Safari, Opera, and Chrome */ 
display:-webkit-box; 
-webkit-box-pack:center; 
-webkit-box-align:center; 
/* W3C */ 
display:box; 
box-pack:center; 
box-align:center; 
} 
http://jsfiddle.net/veQKY/2/ check this link worked 
+0

이것은 나를 위해 일한 유일한 사람이었고 사파리, 크롬에서도 근무했습니다. –

3

에 CSS를 적용합니다. 해당 섹션에 이것을 사용하십시오. 수직 및 수평으로 정렬됩니다.

display:flex; 
justify-contents:center; 
align-items:center; 
+1

Safari에서 지원해야하는 이유가 있습니다 (display : -webkit-flex;). 그것은 크롬과 파이어 폭스에서 잘 작동하지만, 사파리는 그것을 고집스럽게 표시합니다. 어떤 아이디어? –

1

점은 어쩌면이 같은 것을 할 수있는, 높이가 동일 할 열을 필요로한다는 것입니다 :

를 HTML

<div class="container container-sm-height"> 
    <div class="row row-sm-height"> 
     <div class="col-xs-12 col-md-6 col-sm-height"> 
      <img src="http://placekitten.com/500/700" alt="" width="500" height="700" /> 
     </div> 
     <div class="col-xs-12 col-md-1 col-sm-height col-middle"> 
      <img src="http://placekitten.com/100/116" width="100" height="116" style="display: inline-block; vertical-align: middle;" /> 
     </div> 
    </div> 
</div> 

귀하의 CSS를

/* columns of same height styles */ 
.container-xs-height { 
    display:table; 
    padding-left:0px; 
    padding-right:0px; 
} 
.row-xs-height { 
    display: table; 
} 


[class*="col-"] { 
    float: left; 
    display: block; 
    vertical-align: middle; 
    text-align: center; 
} 


img{ 
    max-width: 100%; 
    height: auto; 
} 

@media (min-width: 992px) { 


    [class*="col-"] { 
     float: none; 
     display: table-cell; 
     vertical-align: middle; 
    } 
} 
@media (min-width: 1200px) { 
    .container-lg-height { 
     display:table; 
     padding-left:0px; 
     padding-right:0px; 
    } 
    .row-lg-height { 
     display:table-row; 
    } 
    .col-lg-height { 
     display:table-cell; 
     float:none; 
    } 
} 

대부분이 여기에서 가져옵니다. http://www.minimit.com/articles/solutions-tutorials/bootstrap-3-responsive-columns-of-same-height

I 프레임이 중간에 설정 폭 증가 할 때

여기 당신은 바이올린

http://jsfiddle.net/dmdcode/P83kW/

관련 문제