2013-07-26 2 views
0

나는 확실히 CSS의 초보자이며, 그것은 모든 종류의 두통을 일으키고있다. 나는 크롬에 놀라운 보이는 달력 블록 설정 한 다음 한 :IE와 Firefox에서 내 캘린더의 CSS가 잘못 표시되는 이유는 무엇입니까?

/* calendar */ 
    table.calendar  { border-left:1px solid #999; } 
    tr.calendar-row { } 
    td.calendar-day { min-height:200px; font-size:8px; position:relative; } * html div.calendar-  day { height:200px; } 

    td.calendar-day-np { background:#E8EDFF; min-height:200px; } * html div.calendar-day-np { height:200px; } 
    td.calendar-day-head { background:#E8EDFF; font-weight:bold; text-align:center; 
      width:120px; padding:5px; border-bottom:1px solid #999; border-top:1px solid #999; border-right:1px solid #999; } 
    div.day-number { 
     background:#0099FF; 
     position:absolute; 
     z-index:2; 
     top:-0px; 
     right:-25px; 
     padding:5px; 
     color:#fff; 
     font-weight:bold; 
     width:20px; 
     text-align:center; 
     border-bottom:1px solid #999; 
     border-left:1px solid #999; 
    } 
    td.calendar-day, td.calendar-day-np { 
     width:150px; 
     max-width:150px; 
     max-height:75px; 
     white-space:nowrap; 
     overflow-x: hidden; 
     overflow-y: auto; 
     top:0px; 
     padding:0px 25px 5px 5px; 
     border-bottom:1px solid #999; 
     border-right:1px solid #999; 
    } 
    .ui-dialog-titlebar {display:none;} 
       td.calendar-day div.event, td.calendar-day-np div { 
        overflow-x:hidden; 
        overflow-y:auto; 
        width:200px; 
        max-width:200px; 
        max-height:75px; 
        white-space:nowrap; 
       } 

html로는 (PHP에 의해 생성 된)이 같은 것입니다 :

<tr class="calendar-row"><td class="calendar-day"><div style="position:relative;height:100px;"><div class="day-number">7</div><p>&nbsp;</p><p>&nbsp;</p></div></td> 
    <td class="calendar-day"><div style="position:relative;height:100px;"><div class="day-number">8</div><div class="event">14:00-PCR Taylorsville/Rehab</div><div class="event">17:00-PCR Taylorsville/Rehab</div></div></td> 
    <td class="calendar-day"><div style="position:relative;height:100px;"><div class="day-number">9</div><div class="event">13:00-PCR Taylorsville/Rehab</div><div class="event">14:00-PCR Taylorsville/Audiology</div><div class="event">15:00-PCR Taylorsville/Rehab</div><div class="event">15:30-PCR Taylorsville/Rehab</div><div class="event">16:15-Taylorsville Dermatology</div></div></td> 
    <td class="calendar-day"><div style="position:relative;height:100px;"><div class="day-number">10</div><div class="event">08:30-Redwood Clinic GI</div><div class="event">10:00-U of U Hospital HTSHTS</div><div class="event">13:00-PCR Taylorsville/Rehab</div><div class="event">15:20-PCR Taylorsville/Audiology</div><div class="event">16:00-PCR Taylorsville/Rehab</div><div class="event">18:20-Taylorsville Clinic, Instacare </div><div class="event">20:20-Taylorsville Clinic, Instacare </div></div></td> 
    <td class="calendar-day"><div style="position:relative;height:100px;"><div class="day-number">11</div><div class="event">13:30-Taylorsville Clinic, Instacare </div><div class="event">17:30-Taylorsville PT Adult</div></div></td> 
    <td class="calendar-day"><div style="position:relative;height:100px;"><div class="day-number">12</div><div class="event">09:45-Intermountain Heart Institute IMC</div><div class="event">13:00-PCR Taylorsville/Rehab</div><div class="event">15:00-PCR Taylorsville/Audiology</div><div class="event">16:30-PCR Taylorsville/Rehab</div><div class="event">17:30-Taylorsville Clinic Instacare</div><div class="event">18:50-Taylorsville Clinic Instacare</div></div>  </td> 
    <td class="calendar-day"><div style="position:relative;height:100px;"><div class="day-number">13</div><p>&nbsp;</p><p>&nbsp;</p></div></td> 

그러나, 파이어 폭스에서,이 두 가지 속성을 무시당하는 것 같다.

overflow-x: hidden; 
    overflow-y: auto; 

IE에서는 내 정보가 페이지 아래쪽으로 시작됩니다. 3 가지 브라우저 모두에서 동일한 결과를 얻으려면 어떻게해야합니까?

+3

무엇 HTML이 생겼 : 여기

은 예입니다? ''또는 ''태그와 같은 다른 관련 CSS가 있습니까? – Izkata

+1

코드를 더 게시하십시오. 'top : 0px; '와 같은 속성은 더 많은 코드의 의미있는 문맥없이 임의적이고 임의적으로 보입니다. – hungerstar

+0

Hungerstar와 Izkata, 추가 코드. 나는 이것을 알아낼 수 있기를 바랍니다. 당신의 도움을 주셔서 감사합니다. –

답변

3

아마도 Firefox가 여기에 있습니다. Chrome이 잘못되었습니다. (평소와 같이 IE가 깨졌습니다.)

TD 요소는 블록 레벨 요소가 아닙니다! Standard CSS for HTML 4에서 볼 수 있듯이 TD 요소는 display: table-cell입니다. CSS 등록 정보 overflow상자에을 생성하는 요소에만 적용되며 이들은 block, inline-blocklist-item 유형의 요소입니다. 상자의 개념은 다른 요소와는 다릅니다.

DIV 요소를 표 셀에 배치하여 Firefox에서 x- 오버플로를 숨기고 (필요한 경우 y- 오버플 로용 스크롤 막대 추가) Firefox에 상자를 만들 수 있습니다. 이것은 여전히 ​​크롬에서 작동해야합니다 (하지만 IE에서 무엇을하는지 전혀 모릅니다).

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> 
<html> 
    <head> 
     <title>Test</title> 
     <style type="text/css"> 
      td.calendar-day, td.calendar-day-np { 
       width:150px; 
       max-width:150px; 
       max-height:75px; 
       top:0px; 
       padding:0px 25px 5px 5px; 
       border-bottom:1px solid #999; 
       border-right:1px solid #999; 
      } 
      td.calendar-day div, td.calendar-day-np div { 
       overflow-x:hidden; 
       overflow-y:auto; 
       width:150px; 
       max-width:150px; 
       max-height:75px; 
       white-space:nowrap; 
      } 
     </style> 
    </head> 
    <body> 
     <table> 
      <tr> 
       <td class="calendar-day"><div>Test1</div></td> 
       <td class="calendar-day"><div>Test2 Test2 Test2 Test2 Test2<br>Test2<br>Test2<br>Test2<br>Test2</div></td> 
       <td class="calendar-day"><div>Test3</div></td> 
      </tr> 
      <tr> 
       <td class="calendar-day"><div>Test4 Test4 Test4 Test4 Test4</div></td> 
       <td class="calendar-day"><div>Test5</div></td> 
       <td class="calendar-day"><div>Test6</div></td> 
      </tr> 
     </table> 
    </body> 
</html> 
+0

고마워, 이건 바른 방향으로 가고있는 것 같아.하지만 그럴 수는 없어. 나는 당신이 내가 다루고있는 것의 더 좋은 생각을 가질 수 있도록 몇 가지 추가 코드를 추가했다. –

+0

@JoelLewis 귀하의 문제를 보지 못했습니다. 내가 말했던 것처럼 :'TD' 요소는 상자를 만들지 않으므로 오버플로 속성을 가질 수 없습니다. 오버 플로우 속성을 원하고, 잘라내야하는 모든 것을 다른'DIV '에 넣고'DIV'에 오버 플로우 속성을 설정합니다. 샘플 코드는 오버플로를 생성하지 않기 때문에 오히려 쓸모가 없습니다. 이것이 Firefox에서 내 시스템에 나타나는 코드입니다 : http://i43.tinypic.com/dh8f80.png – Mecki

관련 문제