2011-09-06 6 views
0

기본적으로 2 개의 열이있는 양식 (스크린 샷 : http://mason.gmu.edu/~vnguyenl/form.jpg)을 만들고 있습니다. 레이블 열과 입력 열입니다. 라벨면은 자체 bg 색상을 가진 div에 있고 입력 필드면과 동일합니다. 한면에 많은 텍스트가있는 경우 다른 열보다 높이가 일치하도록 텍스트를 만들려고합니다. 지금은 한쪽이 다른 쪽보다 크면 틈이 있습니다. 어떤 도움을 주셔서 감사합니다! 감사.내부 div를 만드는 CSS가 외부 div 높이와 일치합니다

양식의 HTML처럼 보이는 다음

<div class="formRow"> 
<div class="labelColumn">Last Name: Last Name: Last Name: Last Name: Last Name: Last Name: Last Name: Last Name: Last Name: Last Name: Last Name: Last Name: <span class="required">*</span></div> 
<div class="contentcolumn"> 
    <input class="textBox300" type="text" id="last_name" tabindex="1" /> 
</div> 
</div> 

는 CSS를는 다음과 같다

#pt-profile-form .labelColumn, .labelColumn2 { 
font-weight:bold; 
float:left; 
width:300px; /* Width of left column */ 
margin-left:0px; 
background:#f0f4f7; 
text-align:left; 
padding:5px; 
padding-left:14px; 
display:block; 
white-space:normal; 
position:relative; 
clear:both; 
} 

#pt-profile-form .formRow { clear:both; height:100%; } 

#pt-profile-form .contentcolumn, .contentcolumn2 { 
margin-left:320px; /* Set left margin to LeftColumnWidth */ 
background-color:#eae9d7; 
padding:5px; 
text-align:left; 
vertical-align:middle; 
position:relative; 
} 

#pt-profile-form .labelColumn, .contentcolumn { 
/*height:30px;*/ 
min-height:30px; 
height:100%; 
} 

#pt-profile-form .labelColumn2, .contentcolumn2 { /* column properties for <textarea>  */ 
/*height:100px;*/ 
height:100%; 
} 
+0

체크 아웃 : http://www.quirksmode.org/ css/clearing.html –

+0

이것도 역시 : http://www.alistapart.com/articles/prettyaccessibleforms –

답변

1

간단한 솔루션

지금까지 내가 유일하게 볼 수있는 방법을 달성하기 위해 래핑 요소 (귀하의 경우 <div class="formRow">)에 배경색을 넣은 다음 래핑 요소 그의 코멘트 (http://quirksmode.org/css/clearing.html)에 언급 된 @MarcB처럼 지우기를 사용하여 전체 높이로 밀려났다.

그래서 다음과 같은 CSS는 문제를 해결해야합니다

.formRow { 
    overflow: auto; 
    background-color: #EAE9D7; 
} 

데모 :
http://jsfiddle.net/nottrobin/qnRgL/

이 솔루션을 가진 하나주의해야 할 점은이 넘치는 내용을 숨기 것입니다. 넘쳐나는 내용이 필요하면 대체 솔루션을 사용해보십시오. overflow 속성을 변경하는 어떤 이유로 문제를 일으키는 경우


다른 클리어링 용액

다른 해결책은 :after 가상 요소를 사용하여 생성 된 컨텐츠를 추가하는 것이다. 예 :

.formRow:after { 
    content: "."; 
    display: block; 
    height: 0; 
    clear: both; 
    visibility: hidden; 
    background-color: #EAE9D7; 
} 

Generating Content Through CSS 아래 참조 :이 솔루션의 IE 6에서 작동하지 않습니다 그러나 것을
http://robertnyman.com/2007/04/12/how-to-clear-css-floats-without-extra-markup-different-techniques-explained/

주 7

+0

CSS 모범 사례에 대한 부가 설명 : 요즘에는 CSS를 사용하는 사람들이 - 계단식 규칙을 복잡하게 만들고 실제로 제공하지 않기 때문에 가능한 경우 클래스에 대한 모든 문제 해결 이점 - 가능하면 가장 효과적인 CSS 규칙을 사용하여 불필요한 특수성을 추가하지 않아야합니다. 출처 : http://csslint.net/about.html –

+0

감사합니다. Robin! 나는 그걸 가지고 놀 것이다. 나는 또한 쪽지에 감사드립니다. 나는 방금 6 개월 전에 프론트 엔드를하기 시작 했으므로 따라야하는 작은 규칙과 습관에 감사드립니다. 나는 당신이 알고있는 경우에 현재 일반적인 기준에 좋은 기사를 찾아내는 것을 실제로 시도하고있다. 감사! –

+0

내가 게시 한 링크 - http://csslint.net/about.html - 좋은 조언이 있습니다. 다음은 모범 사례에 대한 다른 좋은 기사입니다. http://www.evotech.net/blog/2007/04/css-best-practices/, http://www.webdesignerdepot.com/2009/05/10 -best-css-practices-to-you-code-/. 내가 말했듯이, 콘텐츠의 앵커 ID (예 :'index.html # introduction'), CSS에는 절대 사용하지 마십시오. Internet Explorer의 대체 스타일을위한 최상의 솔루션은 HTML5 상용구에 사용되는 것입니다 : http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/. –

관련 문제