Die Frage ist nicht sehr kurz, aber es ist leicht zu verstehen. HierSeltsame Dinge mit negativen Rändern auf Tabellen
ist die jsFiddle
Ich habe zwei verschachtelte Tabellen, wie folgt aus:
Hier ist die Auszeichnungs:
<table class="outer">
<tr>
<td></td>
<td>
<table class="inner">
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</td>
<td></td>
</tr>
</table>
<style>
table, tr, td {
border: 1px solid black;
border-collapse: collapse;
}
table {
width: 100%;
}
.outer {
height: 100px;
}
.inner {
background-color: #ccc;
height: 50px;
}
</style>
Die erste Merkwürdige
Dann möchte ich einen negativen Hor hinzufügen izontales Marge auf die innere Tabelle:
.inner {
margin: 0 -10%;
}
Die erwartete Ausgabe ist so etwas wie folgt aus:
Aber stattdessen bekomme ich diese:
Das Problem kann gelöst werden, indem die innere Tabelle in das div:
012 gelegt wird<!-- outer table -->
<div class="wrapper">
<table class="inner-wrapped">
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</div>
<!-- outer table -->
<style>
.wrapper {
margin: 0 -10%;
}
.inner-wrapped {
background-color: rgb(0,200,0);
height: 50px;
}
</style>
Die 2. Merkwürdige
Wenn ich negativ horizontalen Rand -10px gesetzt (vorher wir Prozente verwendet, nicht Pixel), dann in zusätzlichen, dass Tabelle nur nach links bewegt (wie im ersten Fall), es sigifically reduziert in der Breite:
.inner {
margin: 0 -10px;
}
die Fragen
Warum treten diese beiden Dinge auf?
Was ist eine Lösung? Ist es eine gute Praxis, einfach einen Wrapper zu benutzen, wie ich es tue, oder sollte ich einen anderen, clevereren Weg benutzen?
Auf Chrom Inspektor wachsen, in den verschachtelten Boxen aussehen. (weiß, orange und grün), die die Breite, die Polsterung und den Rand beschreiben und es macht mehr Sinn – Ibu
Weil ['table-layout: auto'] (https://www.w3.org/TR/CSS21/tables.html # auto-table-layout) ist nicht vollständig durch die Spezifikation definiert, es ist implementierungsabhängig. Browser versuchen, den Inhalt zu berücksichtigen, aber in Ihrem Fall verursacht dies viele zirkuläre Definitionen. Verlassen Sie sich nicht auf das Ergebnis. Sie können ['table-layout: fixed'] (https://www.w3.org/TR/CSS21/tables.html#fixed-table-layout) ausprobieren, wenn Sie einen wohldefinierten Algorithmus wünschen. – Oriol
@Oriol Danke, interessant –