2010-01-25 13 views
1

양식의 입력 요소에 대해 두 열 이상의 DIV 열을 갖기 위해 노력하고 있습니다. 매우 복잡한 형식이며, 일부 요소는 일부 대답에 따라 숨겨지고 표시됩니다.일부 DIV 공간이없는 열에 공백을 넣는 방법 <br />

문제는 효과적인 숨기기/표시가있는 동안 IE6에서 공간에 따라 DIV를 가져올 수 없다는 것입니다.

.first_column 
{ 
    float:left; 
    clear:both; 
} 
.second_column 
{ 
    float:left; 
} 

그리고 일부 HTML ... 예상대로이 작동

<div id="question1" class="first_column"> 
first row, column 1 <input type="text" id="asdf"> 
</div> 

<br style="clear:both;" /> 

<div id="question2" class="first_column"> 
second row, column 1 <input type="text" id="asdf2"> 
</div> 

<div id="question3" class="second_column"> 
second row, column 2 <input type="text" id="asdf3"> 
</div> 

<br style="clear:both;" /> 

:이 대부분 일 것입니다. 문제는 표시/숨기기입니다. # question1을 숨기면 줄 바꿈이 그대로 유지됩니다. 이 작은 예제에서는별로 좋지 않지만 표시/숨기기에 따라 많은 질문이 있으면 질문 행 사이에 큰 간격이 생기기 시작합니다.

줄 바꿈없이 어떻게 처리 할 수 ​​있습니까? 대신 BR

내가 다른 사업부에서 전체 행을 포장 제안하고, 그것을 row_2를 row_1 같은 ID를 제공
+0

질문 2를 숨기려면 어떻게해야합니까? 3 번 질문은 두 번째 행의 첫 번째 및 유일한 열이되어야합니까? 또는 q3가 여전히 두 번째 열에 있어야하며 q2가 비어있는 영역이 있습니까? 또는 전체 행을 표시/숨기기 만 하시겠습니까? – Ray

+0

좋은 질문입니다. 전체 행만 숨겨집니다. 질문 2와 3은 함께 표시되거나 함께 숨겨집니다. – macca1

답변

0

불행히도 IE6는 다른 모든 브라우저에서 HTML을 다르게 렌더링하기로 결심하고 있습니다. 불행히도 나는 br와 함께 명확한 솔루션을 사용하여 간단한 해결책을 찾을 수 없었다. 오 잘 ... IE6와 다른 곳에서 싸울 시간.

제안 해 주셔서 감사합니다.

1

사용 마진 - 하단. 여기에는 모든 질문과 함께 br가 포함됩니다. 그런 다음 행을 숨기면 br도 숨 깁니다.

+0

Firefox에서 작동하지만 IE6에서는 작동하지 않습니다.두 번째 열의 질문은 첫 번째 행에서 시작한다고해도 첫 번째 행에서 시작됩니다. – macca1

+0

이 div는 모두 상위 div에 중첩되어 있습니까? float : 부모에게 남겨주세요. – Ben

+0

@Ben : 네, 모두 부모 div에 중첩되어 있지만 float : left는 IE6에 영향을 미치지 않는 것 같습니다. – macca1

1

당신의 div의에

+0

제안 해 주셔서 감사합니다. 이것은 또한 대규모 응용 프로그램에서 작은 위젯이라는 점도 주목할 가치가 있습니다. 이미 상당한 수의 DOM 요소가 있으며 jquery document.ready 성능은 이미이 때문에 상당히 열악합니다. 이 질문 위젯에 사용 된 요소의 수를 압축하려고합니다. – macca1

+0

sux가 추가 dom 요소를 추가해야하지만, Diodeus에서 아이디어를 얻을 수 없다면 주위에 어떤 방식으로도 표시되지 않습니다. 당신은 br 태그를 잃어 버릴 수있는 테이블을 사용할 수는 있지만, 시도해 볼만한 가치가있는 것은 아닙니다. – Ray

0

이 패턴을 사용하십시오. 더 나은 의미, 간단한 코드. 숨기기/표시를 위해 DIVS에서 이것을 감싸십시오.

this.next ('. question'). toggle() - Prototype 라이브러리를 사용합니다. 주어진 클래스 이름을 가진 다음 요소를 찾고 해당 요소를 숨기거나 표시합니다. 는 CSS에서

:

<a href="javascript:;//open question" onclick="this.next('.question').toggle()">open</a> 
<div class='question'> 
<label>First Name</label> 
<input .... /> 
<div class="formClear"></div> 
</div> 

... 그리고이 문제에 대한이 CSS

.label { 
width:120px; 
float:left; 
margin-right:15px 
} 

.input { 
float:left 
} 

.formClear { 
clear:left; 
height:15px; 
} 
+0

그러나 부모 DIV를 참조하여 쉽게 질문을 표시하거나 숨길 수있는 능력을 잃게됩니다. 이 경우에는 div가 아닌 label, tag 및 div를 추적하고 숨기거나 표시해야합니다. 옳은? – macca1

+0

DIV에서 'question'과 같은 클래스로 둘러 쌉니다. Prototype을 사용하는 jQuery와 같은 프레임 워크를 사용하는 경우 표시/숨기기를 쉽게 할 수 있습니다. open question

0

, 내 웹 사이트에 내가 이것을 사용

.spacer 
{clear: both; visibility: hidden;} 

되는 HTML에서 :

<div class="spacer"></div> 

DIV는 픽셀을 움직이지 않으므로 다른 유형의 DIV에 여백을 적용하여 원하는 레이아웃을 완벽하게 유지할 수 있기 때문에 이러한 유형의 것에서 BR (또는 HR)보다 좋지 않습니다. 모든 브라우저에서 작동하며 IE6에서도 작동합니다.

이렇게하면 대부분의 부동 문제가 해결됩니다. 크로스 브라우저가 아닌 다른 솔루션을 찾지 못했습니다.

관련 문제