Próbuję utworzyć schemat organizacyjny w HTML. Kod jest dość prosty, ale mam pewne problemy z renderowaniem w Chrome/Safari i Operze.Dziwne zachowanie w przypadku zawijania obramowania i colspan
Oto co wynik powinien wyglądać, jak to działa w Firefoksie i IE:
Oto w Chrome i Safari
A oto w Operze :
Problem pochodzi z właściwości border-collapse: collapse
w CSS. Jeśli używam starego stylu kodowania cellspacing="0" cellpadding="0"
, działa on mniej lub bardziej, ale nie jest poprawny w HTML5.
stworzyłem jsFiddle pokazać problem: http://jsfiddle.net/aGVp4/7/
Moje HTML:
<table cellspacing="0" cellpadding="0">
<tr>
<td colspan="3"></td>
<td colspan="2" class="case"></td>
<td colspan="3"></td>
</tr>
<tr>
<td colspan="3"></td>
<td colspan="2" class="case"></td>
<td colspan="3"></td>
</tr>
<tr>
<td></td>
<td colspan="3" class="right bottom"></td>
<td colspan="3" class="bottom"></td>
<td></td>
</tr>
<tr> <!-- No colspan here, to make the layout symmetrical -->
<td class="right"></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td class="right"></td>
<td></td>
</tr>
<tr>
<td colspan="2" class="case"></td>
<td colspan="4"></td>
<td colspan="2" class="case"></td>
</tr>
</table>
A mój CSS:
.orgchart {
border-spacing: 0;
border-collapse: collapse;
}
td {
width: 3em;
height: 1em;
}
td.case {
border: 1px solid black;
}
td.right {
border-right: 1px solid black;
}
td.bottom {
border-bottom: 1px solid black;
}
td.top {
border-top: 1px solid black;
}
To dość dziwne, nawet w przypadku dość skomplikowanego stołu. Na marginesie tabela ma 8 kolumn, ale tylko 7 kolumn w trzecim rzędzie, więc należy dodać pustą komórkę; ale wpływa to tylko na objawy problemu, a nie sam problem. Jeśli ustawisz "style =" border-color: red "" na drugiej komórce drugiego rzędu, zobaczysz, że linia zakłócająca jest częścią granicy tej komórki. Ale co może być przyczyną tego dziwnego zjawiska? –
@ JukkaK.Korpela Dzięki za twoją uwagę, zredagowałem mój post. Ja też tego nie rozumiem: kod HTML jest ważny, nie używam hacków CSS ani egzotycznych rzeczy, więc jestem zdziwiony. –