2013-07-24 3 views
1

설명이 약간 혼란 스럽지만 더 잘 설명하는 방법이 없습니다.블록을 왼쪽에서부터 블럭에 올리는 우아한 방법이 있습니까

개략적으로 그것은 본다

enter image description here

및 레이아웃이

으로 정의된다

같은
<div id="outer_a"> 
    <div id="a1"></div> 
    <div id="a2"></div> 
</div> 

<div id="outer_b"> 
    <div id="b"></div> 
</div> 

jsfiddle 데모 : 나는 가고 시안 블록하는 데 유용한 솔루션을 필요로 http://jsfiddle.net/D3Ftp/

황색 직후에 모양이 보일 정도로

enter image description here

결과적으로

제한 사항 : 레이아웃을 변경할 수 없습니다. 음, 사소한 변경은 허용되지만 왼쪽에 div가있는 2 블록과 오른쪽 div에있는 다른 블록이 있어야합니다.

내 솔루션은 끔찍합니다 - margin-left: -52px;.

그 자체로는 끔찍한 것이지만, 왼쪽 블록이 존재하지 않을 수도 있습니다.이 경우 파란색은 정상적인 흐름과 같이 작동해야합니다.

아이디어가 있으십니까?

+0

#outer_a의 (시각적으로) 내부에 넣어 될 때 전체 #outer_b는 것입니다이 경우

#outer_a + #outer_b { margin-left: -52px; } 

가 정상 흐름에 따라 배치 할 수 있나요 거기 DIV를 다른 DIV 내부로 옮기고 싶지 않은 이유는 무엇입니까? –

+0

@Lightning Dust : 두 개의 서로 다른 독립적 인 위젯이며 별도로 페이지로 렌더링됩니다. – zerkms

답변

3

귀하의 한계를 고려할 때 귀하의 솔루션이 끔찍하다고 생각하지 않습니다. 나는 단순히 할 것이다 : #outer_a가 존재하지 않거나, 그렇지 않으면

2

나는 당신의 바이올린에 업데이트를했습니다 :

http://jsfiddle.net/D3Ftp/1/

여기에 업데이트 된 CSS의 :

#b { 
    width: 50px; 
    height: 20px; 
    background-color: cyan; 
    position: relative; 
} 

#outer_a ~ #outer_b #b { 
    left:-100%; 
} 

left 스타일에만 적용됩니다, #outer_a#outer_b 다음 경우. 시도하고 바이올린의 첫 번째 div 블록을 제거하고 마법 :

편집을 참조하십시오 내가 비율을 사용하고 경우, #outer_b의 폭이 귀하의 요구 사항에 따라 변경되지 않습니다, 참조하십시오. 특정 요구 사항에 대해 marign-left:-Ypx;보다 더 좋은 해결책이 있다고 생각하지 않습니다.

+0

"#outer_b의 너비가 요구 사항에 따라 변경되지 않습니다."실제로 # outer_b가 붕괴 될 필요는 없습니다. 당신의 솔루션은 완벽하게 – zerkms

+0

에 잘 맞습니다. 요구 사항이 변경되면, CSS를 수정할 위치를 알게 될 것입니다. –

+0

두 분 모두 upvoting을 시도하지만 다른 해결책은 덜 악한 것으로 봅니다 :-) 추신 : 개인적으로 저는 찾을 수 있고 또 다른 해결책을 사용 하겠지만 프로젝트별로 다르며 html/css 까다 롭지 않습니다. – zerkms

관련 문제