2011-12-07 5 views
0

나는 css 수레에 표 내용을 넣는 방법을 배우려고합니다.bg color on row divs

"table"레벨, "row"레벨 및 "cell"레벨에서 div를 사용했습니다. 이것이 좋은 전략인지 확신하지 못합니다.

어쨌든 "테이블"또는 "셀"레벨에서 배경 스타일을 설정하면 색상이 변경 될 수 있습니다. 행 수준에서 설정하면 흰색으로 유지됩니다.

어떤 일이 벌어지고 있는지 추측 할 수 있습니까? 이 작업을 수행하는 더 좋은 방법이 있습니까?

<h2>"Tables" work</h2> 
<div style="width: 455px; background-color:#a4c4fc"> 
    <div> 
     <div style="width: 70px; float: left">ID</div> 
     <div style="width: 220px; float: left">Lemons</div> 
     <div style="width: 50px; float: left">Horseradish</div> 
    </div> 
    <br clear: both> 
    <div> 
     <div style="width: 70px; float: left">1<LEFT></div> 
     <div style="width: 220px; float: left">3</div> 
     <div style="width: 50px; float: left">4</div> 
    </div> 
</div> 

<br> 

<h2>"Row" divs do not seem to work</h2> 
<div style="width: 455px"> 
    <div style="background-color:#a4c4fc"> 
     <div style="width: 70px; float: left">ID</div> 
     <div style="width: 220px; float: left">Lemons</div> 
     <div style="width: 50px; float: left">Horseradish</div> 
    </div> 
    <br clear: both> 
    <div style="background-color:#a4c4fc"> 
     <div style="width: 70px; float: left">0</div> 
     <div style="width: 220px; float: left">0</div> 
     <div style="width: 50px; float: left">1</div> 
    </div> 
</div> 

<br> 

<h2>Individual cell divs work</h2> 
<div style="width: 455px"> 
    <div style="background-color:#a4c4fc"> 
     <div style="width: 70px; float: left; background-color:#a4c4fc">ID</div> 
     <div style="width: 220px; float: left; background-color:#a4c4fc">Lemons</div> 
     <div style="width: 50px; float: left; background-color:#a4c4fc">Horseradish</div> 
    </div> 
    <br clear: both> 
    <div style="background-color:#a4c4fc"> 
     <div style="width: 70px; float: left; background-color:#a4c4fc">0</div> 
     <div style="width: 220px; float: left; background-color:#a4c4fc">0</div> 
     <div style="width: 50px; float: left; background-color:#a4c4fc">1</div> 
    </div> 
</div> 
+2

왜이 작업을 수행하려고합니까? 테이블은 테이블 컨텐츠에 완벽하게 수용됩니다. –

+1

제가 말하고자하는 것은 이것이 테이블 기반 레이아웃에 대한 완전히 합법적 인 십자군의 잘못된 길 찾기가 아니길 바랍니다. 표는 의도 된 목적으로 사용될 때 유효하고 의미가있는 HTML입니다. –

+0

@David : 숫자 값은 편집/삭제 버튼 등과 같은 것들의 자리 표시 자입니다. 레몬과 와사비는 또한 공연을위한 것입니다. 파벌/십자군, 정당에 흥미 롭습니다. – micahhoover

답변

5

이것은 표 형식의 데이터처럼 보입니다.

해당하는 경우이 정보를 표시하려면 HTML table 요소를 사용해야합니다.

너무 많은 사람들이 "테이블이 좋지 않다"는 말을 잘못 듣고 테이블이 가장 적합한 경우에도 div를 사용하여 해결하려고 노력합니다.

사람들이 테이블을 사용해서는 안된다고 말하면 레이아웃 구조를 참조합니다. 이 경우에는 여전히 사용하는 것이 좋으며 악의가 아닙니다!

그럼 당신은 할 수 있습니다 :

<tr style="background-color:#a4c4fc;"> 

</tr> 

는 "세포"div의 모든 float:left;을하기 때문이다 DIV의 문제를 사용하는 방법에 대한 확신합니다. 따라서 "행"div에는 높이가 없습니다. , 또는

<div style="background-color:#a4c4fc"> 
     <div style="width: 70px; float: left">ID</div> 
     <div style="width: 220px; float: left">Lemons</div> 
     <div style="width: 50px; float: left">Horseradish</div> 
     <div style="clear:both;overflow:hidden;height:0;"></div> 
</div> 

display:inline-block;

<div style="background-color:#a4c4fc"> 
     <div style="width: 70px; display:inline-block;">ID</div> 
     <div style="width: 220px; display:inline-block;">Lemons</div> 
     <div style="width: 50px; display:inline-block;">Horseradish</div> 
</div> 

http://jsfiddle.net/hRCWk/2/

를 사용하지 않지만 :

당신은이 문제를 해결하기 위해 's를 "세포"의 맨 아래에 다음을 추가 할 수 있습니다 그렇게하려면 table을 사용하십시오.

+1

좋은 답변입니다. 그러나 divs를 전혀 부유시킬 필요가있는 이유는 무엇입니까? 꽤 나은 효과를 내기 위해서는'display : inline-block'을 사용할 수있을 것입니다. 그래도 테이블이 가장 좋은 옵션입니다 – musefan

+0

http://jsfiddle.net/hRCWk/2/, 바로 당신이 맞습니다! 전에는 몰랐습니다. 하지만, 어떤 식 으로든,'table'은 해결책입니다. – Curt

2

귀하의 수레를 취소하십시오. 행 div에 overflow:hidden;을 추가하십시오.

또한 <br clear: both>은 의미가 없습니다. 그것을 제거하거나 사용 <div style="clear:both;"></div>

데모 : http://jsfiddle.net/RX8Pq/ 모든 하위 요소가 떠 있기 때문에 행 요소가 신장되지

1

인라인 블록으로 표시하려면 ...

display:inline-block; 

DI를 지울 필요가 없습니다. V는 나중에 뜬다.분명히이 IE8 및 이전 버전에서 작동하지 않습니다 : 물론

, 당신은 어쨌든

참고 테이블을 사용해야합니다.

+1

'inline-block'은 AlienWebguy

+0

@AlienWebguy : IE8에서는 많은 일들이 작동하지 않지만 스펙이 보이지 않습니다 이 말은 – musefan

+0

입니다. 아마도 사용자 기반의 절반에서 작동하지 않는 솔루션을 제공하지 않는 것이 가장 좋습니다. Dictionary.com에서 일하고 있으며 사용자의 70 % 이상이 IE8에 있습니다. 그것은 불행한 현실이지 스펙이 아닙니다. – AlienWebguy