Pytanie nie jest zbyt krótkie, ale łatwe do zrozumienia.Dziwne rzeczy z ujemnymi marginesami na tabelach
Oto jsFiddle
Mam dwie tabele zagnieżdżone, tak:
Oto markup:
<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>
The 1st Najdziwniejsze
Następnie chcę dodać ujemny hor izontal margines do wewnętrznej tabeli:
.inner {
margin: 0 -10%;
}
Oczekiwany wynik jest coś takiego:
Ale zamiast tego, mam to:
Problem może być rozwiązane przez umieszczenie wewnętrznego stołu w dziale:
<!-- 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>
The 2nd Najdziwniejsze
Jeżeli ustawić ujemną marżę horizonal -10px (wcześniej użyliśmy procentach, a nie pikseli), a następnie w dodatkowy stół, że porusza się tylko w lewo (jak w pierwszym przypadku), to sigifically zmniejsza się szerokość:
.inner {
margin: 0 -10px;
}
pytania
Dlaczego oba te dziwne rzeczy występują?
Jaki jest sposób na rozwiązanie problemu? Czy dobrym zwyczajem jest po prostu używać otoki, tak jak ja, czy powinienem użyć innego, bardziej sprytnego sposobu?
Chrome inspektora spojrzeć na zagnieżdżonych pudełek. (biały pomarańczowy i zielony), które opisują szerokość, dopełnienie i margines i będzie bardziej sensowny – Ibu
Ponieważ ['table-layout: auto'] (https://www.w3.org/TR/CSS21/tables.html # auto-table-layout) nie jest w pełni zdefiniowany przez specyfikację, jest zależny od implementacji. Przeglądarki próbują wziąć pod uwagę treść, ale w twoim przypadku powoduje to wiele okrągłych definicji. Nie polegaj na wyniku. Możesz wypróbować ['table-layout: fixed'] (https://www.w3.org/TR/CSS21/tables.html#fixed-table-layout), jeśli chcesz dobrze zdefiniowanego algorytmu. – Oriol
@Oriol Dzięki, interesujące –