나란히 정렬된 div의 width가 모두 가변적인 경우 > 자유게시판

자유게시판

나란히 정렬된 div의 width가 모두 가변적인 경우 정보

나란히 정렬된 div의 width가 모두 가변적인 경우

본문

※ 그누 외 css 관련 질문이라, 이곳에 올립니다.

div 2개를 나란히 정렬시키려고 합니다.


div 1번은 이미지가 들어가고,
div 2번은 이미지나 플래시가 들어갑니다.

문제는,
div 1번이나 2번의 이미지나 플래시 모두 사용자 선택에 따라 들어가는 것이라서,
width 값이 가변적이어야 합니다.

그리고 width 값이 가변적이라 하더라도,
div 1번과 2번을 정렬시켰을 때, 기준 레이아웃에 꽉 차게 출력하려고 합니다.

<--------------- 기준 레이아웃 ----------------->
<--div 1번--><-------------- div 2번------------>

또는
<--------------- 기준 레이아웃 ----------------->
<------div 1번------><--------- div 2번--------->

와 같이 width가 가변적이어도, 기준 레이아웃에 맞추려고합니다.


현재
div 1번 css : { float:left; }
div 2번 css : { float:left: }

div 1번, div 2번 모두 float:left 시켜서 나란히 정렬을 시켰습니다.

익스에서는 저렇게 설정을 해도 제가 원하는 모양으로 출력이 되는데,

다른 브라우저에서는 일그러집니다.


(웹표준을 따르지 않았으니 당연하게도) 기준 레이아웃 넓이보다 벗어나거나 작게 나옵니다.
width 값이 가변적이기 때문이겠지요.


<익스가 아닌 불여우나 오페라 등에서의 현상>
<--------------- 기준 레이아웃 ----------------->

<------div 1번------>

<-------------------- div 2번------------------->

또는
<--------------- 기준 레이아웃 ----------------->
<------div 1번------><--- div 2번--->


위와 같은 경우, css 설정을 어떻게 해 주어야 할까요?
이틀 전부터 고민하는 문제가 아직까지 해결되지 않네요.

고수님들은 어떻게 해결하시는지 궁금합니다.


※ 텍스트만 들어가는 경우는, 아래와 같이 설정해도 가능한 것 같습니다.

    그러나, 문제는 이미지나 플래시 등을 쓸 때에는 적용되지 않는군요.



<div style="width:레이아웃의 기준폭">
<div style="float:left; background:red"> 1번 내용 </div> 
<div style="width:100%; background:blue"> 2번 내용 </div> 

</div>

---> "멀미안녕"님이 주신 답변

추천
0
  • 복사

댓글 14개

div 2번에 float 속성을 주지 않으면 되긴합니다만, 이렇게 하면 IE6에서는 원하는대로 안됩니다.

그리고 IE도 버전에 따라 다르기때문에 정확한 버전을 써주시길 바랍니다.
혹시 테스트한 버전이 IE6이면 div 2번에 _float:left; 하시면 되겠네요.
div 2번에 float 속성을 주지 않는 경우에도,
웹표준에서 기준 레이아웃에 벗어납니다.
텍스트인 경우는, 말씀하신 것이 맞습니다만......

익스는 5.0, 6.0 버전 모두 체크해 봤구요.
익스에서는 div 2번에 width를 주지 않아도 레이아웃에 맞게 출력이 됩니다.
원하시는 답변은 아니지만,
1. 테이블로 짜는 경우 해결할 수 있음.
2. 1번에 사용자 이미지가 들어가므로 서버상에서 해당 이미지의 폭을 기준으로 하여 레이아웃을 이미지폭에 맞게 생성하고 나머지 2번의 폭을 계산하여 출력해서 해결
3. 자바스크립트로 1번 div의 폭을 계산하여 나머지 값을 2번의 폭으로 조정

가장 좋은건 원안대로 최대한 div와 스타일 만을 이용해서 하는 것이 좋으나, 만약 이도저도 안된다면 물한모금님의 시간을 절약하는 차원에서 아예 다른 안을 선택하시는 것도 좋을 것 같습니다^^
어제부터 저의 고충에 계속적으로 관심가지고 살펴주셔서 감사드립니다.
1. 테이블로 짜면 해결할 수 있겠지만, 엘리먼트를 겹쳐서 구현해야 하는 요소가 있어서요.
2. 3번의 경우는 제 능력 밖의 일이군요. ^^;;

아래 유아원님께서 스크립트 예제를 보여주셨는데 참고하도록 하겠습니다.
감사합니다, 홍구님.
스크립트로 처리하는 경우에는 아마 랜더링이 끝마쳐진 시점에서 다시 이루어지므로 아주 순간적으로 변형이 있을 수 있습니다. 소스는 좀 지저분해지겠지만 php에서 이미지 폭을 기준으로 해서 계산한 값으로 출력하는 것을 저는 추천합니다ㅎ
그나마 계속 파헤치면서 대강의 눈대중으로 알고있던 것들의
개념이 조금씩 명확해지는 느낌입니다.
긴 시간 동안 버벅대긴 했지만, 실전을 통해 감각을 익혔다고 할까요?ㅎㅎ

아직도 길은 멀지만, 홍구님같은 분들 덕분에 시간을 줄여나갈 수 있어서
행운이라고 생각합니다. (__) ^^;;
유아원님, 감사합니다.
위 링크 페이지의 소스를 참고하도록 하겠습니다.
예제 페이지까지 만들어주셔서 너무 감사드립니다.^^
위경우는 left 속성을 주고 안주고 개념보다 브라우져에 따라 1픽셀차이에 따라서도 나타날수있습니다.
유아원님 과 같이 홍구님의 3번이 답인거 같습니다.

근데 제가 보기에 div는 뭔가 좀 많이 부족?한듯 싶습니다. div는 valign 도 그렇고, 테이블의 %개념이 그렇게 편할수 없다는 걸 보여주고, 위 경우도 픽셀 맞혀줘야 각 브라에 맞게 들어가고..
각 브라우져들의 적절한 진화가 절실히 필요하다고 봅니다.

서글프지만서도 우리의 할일이 아닌가 싶습니다.
예, 말씀대로, 스크립트 적용한 3번을 참고해야 할 것 같습니다.

div 기초가 워낙 부족하다보니, 이렇게 고수님들의 도움을 요청하게 됩니다.
div의 기능이 확장된다한들, 저같은 하수는 언제나 따라갈른지......^^;;

제 고민에 함께 해 주셔서 감사드립니다.
© SIRSOFT
현재 페이지 제일 처음으로