2012-09-13 2 views
0

2 개의 div가 나란히 있습니다.HTML/CSS - 내용에 따라 div를 만드는 방법은 무엇입니까?

첫 번째 div에는 두 개의 레이블이 나란히 있고 하나의 입력 텍스트가 아래에 있습니다. 레이블 중 하나는 오류 정보입니다. 경우에 따라 때때로 표시됩니다. 표시되지 않을 때 div 크기를 작게하여 두 번째 div가 더 가깝도록 할 수 있습니다.

두 번째 것은 레이블 div가 하나만있는 것을 제외하고는 똑같은 것이므로 크기 조정이 필요하지 않습니다.

내가 원하는 것을 얻을 수있는 방법이 있습니까?

Awesomely Drawn Example Of Autosize Width

이 코드입니다 : 나는 아래 acahieve 싶은의 놀랍도록 그려 예제가있다.

<div id="main-div"> 
<div id="address-number-div"> 
    <label>Number</label> 
    <label class="error" id="number-error">Empty Field</label> 
    <input id="number-input" onfocus="onfocus('number-error')"/> 
</div> 

<div id="address-complement-div"> 
    <label>Complement</label> 
    <input id="complement-input" /> 
</div> 

및 CSS

:

div {border: 1px solid #000000; padding: 5px;} 

.error{color:#FF0000; margin-left:5px;} 

#main-div div {display:inline-block;} 

#main-div input {display:block;} 

#number-input { 
    width: 16%; 
}​ 
+0

여기에 무슨 문제가 있습니까? 너 뭔가 해봤 니? – Pavlo

+0

@PavloMykhalov 예 내 코드를 확인하십시오. jsfiddle로 해보면 이미지와 동일하게 나타납니다. –

답변

2

이 부분을보십시오 DEMO.

왼쪽 div를 플로팅하면이 문제가 해결됩니다.

+0

인라인 블록을 사용하여 달성 할 수 없습니까? 나는이 것들 아래에 다른 구성 요소를 가지고 있기 때문에 플로트를 사용하면 위치가 어긋납니다. –

+0

배치 div를 추가 할 수 있습니다. 방법은 업데이트 된 [** DEMO **] (http://jsfiddle.net/zyzkV/33/)입니다. –

+0

감사합니다. 실제로 래퍼를 사용하고 있습니다. 문제는 다른 html 요소와 관련이 있다고 생각합니다. –

2

는 그들을 내용에 맞게 축소 있도록 display: inline-block;로 설정합니다.

+1

"display : inline-block;" 블록 요소에 IE7의 상자에서 작동하지 않습니다 - http://www.brunildo.org/test/InlineBlockLayout.html –

+0

물론'* display : inline; * zoom : 1;'IE 7에서 인라인 블록 요소를 사용하는 것입니다. – feeela

+0

물론이 방법을 사용하기로 결정한 경우 OP에 지적하고 싶습니다. 건배! –

1

width<persentage> 유형 값을 제공 <length>을 포기하지 마십시오 :

#number-input { width: 24px; }​ 

my fiddle에 당신의 코드를 참조하십시오.

+0

이유는 모르겠지만 디스플레이에 아무 것도 표시하지 않고 가시성을 숨김으로 표시하더라도 공간을 차지합니다. –

+0

'width'를'px'로 변경 했습니까? – Pavlo

+0

예, 변경되었습니다. Chrome과 Firefox에서 html 출력을 볼 때 레이블은 아직 공간을 차지하고 있으며 렌더링 된 태그는'style = "display : none; visibility : hidden";' –

관련 문제