Próbuję powstrzymać tabelę, która ma jawnie zadeklarowaną szerokość, przed przepełnieniem poza jej rodzica div
. Przypuszczam, że mogę to zrobić w jakiś sposób za pomocą max-width
, ale nie wydaje mi się, aby to działało.
Następujący kod (z bardzo małym oknem) spowoduje to:
<style type="text/css">
#middlecol {
width: 45%;
border-right:2px solid red;
}
#middlecol table {
max-width:100% !important;
}
</style>
<div id="middlecol">
<center>
<table width="400" cellpadding="3" cellspacing="0" border="0" align="center">
<tr>
<td bgcolor="#DDFFFF" align="center" colspan="2">
<strong>Notification!</strong>
</td>
<tr>
<td width="50">
<img src="http://www.example.com/img.png" width="50" height="50" alt="" border="0">
</td>
<td>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</td>
</tr>
</table>
</center>
</div>
Czerwona linia jest prawą krawędzią div
, a jeśli zmniejszysz okno przeglądarki, zobaczysz, że tabela nie pasuje do niego.
html
css
html-table
waiwai933
źródło
źródło
<center>
. Od lat jest przestarzały. Poza tym masz jużalign="center"
na swoim stole.Odpowiedzi:
Odwróć to, wykonując:
<style type="text/css"> #middlecol { border-right: 2px solid red; width: 45%; } #middlecol table { max-width: 400px; width: 100% !important; } </style>
Radziłbym również:
center
tagu (jest wycofany)width
,bgcolor
atrybuty, ustawić je przez CSS (width
ibackground-color
)(zakładając, że możesz kontrolować renderowaną tabelę)
źródło
Możesz zapobiec rozszerzaniu tabel poza ich nadrzędny element div, używając
table-layout:fixed
.Poniższy kod CSS spowoduje rozszerzenie tabel do szerokości otaczającego je elementu div.
table { table-layout:fixed; width:100%; }
Znalazłem tę sztuczkę tutaj .
źródło
<col>
s lub w pierwszym wierszu<td>
(zamiast pozwalać na przepływ w oparciu o rozmiar tekstu). Z MDN: „stałe: szerokości tabeli i kolumn są ustawiane na podstawie szerokości elementów tabeli i col lub szerokości pierwszego wiersza komórek. Komórki w kolejnych wierszach nie mają wpływu na szerokości kolumn”.Prostym rozwiązaniem jest ustawienie
display: table
zawierającego div.źródło
Wypróbowałem wszystkie powyższe rozwiązania, ale nie działały. Mam 3 tabele jeden pod drugim. Ostatnia przelała się. Naprawiłem to za pomocą:
/* Grid Definition */ table { word-break: break-word; }
W przypadku IE11 w trybie krawędzi musisz ustawić to na
word-break:break-all
źródło
Na początku użyłem metody Jamesa Lawruka. To jednak zmieniło wszystkie szerokości plików
td
.Rozwiązaniem dla mnie było użycie
white-space: normal
na kolumnach (które było ustawione nawhite-space: nowrap
). W ten sposób tekst zawsze będzie się łamał. Użycieword-wrap: break-word
zapewni, że wszystko się zepsuje, gdy będzie to potrzebne, nawet w połowie słowa.CSS będzie wtedy wyglądać następująco:
td, th { white-space: normal; /* Only needed when it's set differntly somewhere else */ word-wrap: break-word; }
Nie zawsze jest to pożądane rozwiązanie, ponieważ
word-wrap: break-word
Twoje słowa w tabeli mogą być nieczytelne. Dzięki temu stół będzie miał odpowiednią szerokość.źródło
Próbowałem prawie wszystkich powyższych, ale nie zadziałało ... Następujące zrobiły
word-break: break-all;
Należy to dodać do nadrzędnego elementu DIV (kontenera tabeli).
źródło
overflow-x: auto; overflow-y : hidden;
Zastosuj powyższy styl do nadrzędnego elementu DIV.
źródło
Możesz spróbować tego CSS. Doświadczyłem tego zawsze.
div { border-style: solid; padding: 5px; } table { width: 100%; word-break: break-all; border-style: solid; }
<div style="width:200px;"> <table> <tr> <th>Col 1</th> <th>Col 2</th> <th>Col 3</th> <th>Col 4</th> <th>Col 5</th> </tr> <tr> <td>data 1</td> <td>data 2</td> <td>data 3</td> <td>data 4</td> <td>data 5</td> </tr> <table> </div>
źródło
word-break: break-word
udzieliło już wiele, wiele odpowiedzi.Jest
width="400"
na stole, wyjmij go i będzie działać ...źródło