2011-09-20 4 views
0

갤러리 페이지의 건물에 대한 내 페이지에 3 개의 div가 있습니다. 중앙에 div가 왼쪽과 오른쪽 중 어느 한쪽면에 표시되도록 중앙에 div가 있어야합니다. 왼쪽과 가운데 div는 잘 작동하고 서로 인라인되어 있지만 내 오른쪽 부동 div는 다른 쪽보다 아래쪽에 위치합니다.왜 나머지는 내 오른쪽 부동 div 인라인 부동?

왜 이런 일이 발생합니까? 당신의 CSS에서

HTML

<div id="left"> 
IM ON THE LEFT 
</div> 


<div id="middle"> 
I AM IN THE MIDDLE 
</div> 

<div id="right"> 
THIS IS ON THE RIGHT 
</div> 

CSS

#left{ 
float:left; 
position:relative; 
width: 150px; 

} 

#middle{ 
display: block; 
margin-left: auto; 
margin-right: auto; 
width: 150px; 
position: relative; 

} 


#right{ 
float:right; 
width: 150px; 
position: relative; 
} 
+0

같은 요소에'position :'과'float :'을 사용하지 마세요. 충돌을 만듭니다 ... 하나만 사용하십시오. – Sparky

+0

괜찮은 위치 관계입니다. 상자가 그 위치에서 옮겨 지거나 절대 위치 자식 요소가있을 수 있습니다 – Chris

답변

0

을 여기에 가능한 corection에게

#left{ 
float:left; 
position:relative; 
width: 150px; 
display: inline-block; 
} 

#middle{ 
display: block; 
margin-left: auto; 
margin-right: auto; 
width: 150px; 
position: relative; 

} 


#right{ 
float:right; 
width: 150px; 
position: relative; 
display: inline-block; 
} 

시도를 당신을 위해 오크 있는지 ...

1

.left.right

에 대한

display:inline-block; 

같은 추가

편집 : 여기

jsFiddle 작동합니다 http://jsfiddle.net/LwUqF/

+0

작동하지 않는 것 같습니다 : ( – Farreal

+0

OP에는'.left' 또는'.right ** 자신의 CSS에서 ** 클래스 ** – Sparky

1

어쩌면 더 공간이 없다 마지막 div가 떠 다니기로되어있는 곳입니다.

어쩌면 HTML의 순서를 다시 지정할 수 있으므로 오른쪽 열이 가운데 열에옵니다.

어쩌면 당신은이 작업을 수행 할 수 있습니다 #middle는 블록 레벨 요소이며 뜨지 않기 때문에

#left { 
    float: left; 
    width: 10%; 
} 
#center { 
    float: left; 
    width: 80%; 
} 
#right { 
    float: left; 
    width: 10%; 
} 
+1

이것은 "가장 쉬운"해결책 인 것처럼 보이고, IE에서 깨질 인라인 블록을 사용하지 않도록합니다. 예제를 만들었습니다 : http://jsfiddle.net/chricholson/yuuUM/ 16 /. 여백이 늘어나는 곳 (Firebug와 같은 도구 사용)을 보면 div가 양쪽에 겹쳐져 있다는 흥미로운 문제 (문제의 원인)가 있습니다. 다른 브라우저에서 이것은 깨질 것입니다. – Chris

2

그것은 발생합니다. 이것은 새로운 라인을 생성하고, float 권한은 다음 라인에서 시작됩니다. 중간 블록을 왼쪽으로 떠있을 경우 공간이 충분하다면 잘 작동합니다. 또는 #right -div를 HTML의 맨 위에 배치 할 수 있습니다. 그러면 오른쪽으로 플로팅되고 #left은 왼쪽으로 플로팅되고 #middle은 일반 문서 플로우, 즉 여유 공간이있는 경우 중간에 머물러있게됩니다.

0

display:block으로 지정했기 때문에이 div가 나머지 컨테이너를 채우므로 그 아래에 #right div가 표시됩니다. #middledisplay:inline-block으로 변경하면 원하는 결과가 나타납니다. 당신은 이유를 요청

+0

상단 덕분에 간격을 없애는 데 효과가있는 것처럼 보이지만 중간 div는 왼쪽이 아니라 중심이 떠 다니는 것입니다. 중심에 두는 방법이 있습니까? – Farreal

+0

http://stackoverflow.com/ 질문/7485936/왜 - 내 - 오른쪽 div- 떠있는 - 인라인 - 나머지 - 7486087 # 7486087 귀하의 문제를 해결해야합니다 – Chris

+0

당신은 'text-align : center'있는 컨테이너 div를 추가 할 수 있습니다 이것은 중간 div를 넣을 것입니다 가운데에서 텍스트를 가운데에 배치 할 수도 있습니다. 중간 div에'text-align : left'를 추가 할 수 있으며 원하는대로 정렬해야합니다. http://jsfiddle.net/xm33e/1/을 참조하십시오. – anothershrubery

0

또는 어떤 PatrikAkerstrand 말했다 ... :

http://jsfiddle.net/xm33e/

편집을 참조하십시오.

이유는 다른 설명에 잘 설명되어 있습니다.아직

솔루션 :

당신은 I'llassume 있도록 총 페이지 폭과 세 div 년대의 폭의 아이디어를 가지고, 중심 위치에 div '중간'을 원한다.

'왼쪽'과 '중간'divdiv 아래에두고 왼쪽으로 띄우십시오.

'right'div은 그대로 유지됩니다.