Ich versuche zu verhindern, dass eine Tabelle, deren Breite explizit deklariert wurde, außerhalb ihres übergeordneten Elements überläuft div
. Ich nehme an, ich kann dies auf irgendeine Weise mit tun max-width
, aber ich kann nicht scheinen, dass dies funktioniert.
Der folgende Code (mit einem sehr kleinen Fenster) verursacht dies:
<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>
Die rote Linie ist der rechte Rand von. div
Wenn Sie Ihr Browserfenster klein machen, sehen Sie, dass die Tabelle nicht hineinpasst.
html
css
html-table
waiwai933
quelle
quelle
<center>
. Es ist seit Jahren veraltet. Außerdem hast du schon einenalign="center"
auf deinem Tisch.Antworten:
Drehen Sie es um, indem Sie Folgendes tun:
Auch würde ich Ihnen raten:
center
Tag nicht (es ist veraltet)width
,bgcolor
Attribute, setzen sie durch CSS (width
undbackground-color
)(vorausgesetzt, Sie können die gerenderte Tabelle steuern)
quelle
Mit können Sie verhindern, dass Tabellen über das übergeordnete Div hinaus erweitert werden
table-layout:fixed
.Mit dem folgenden CSS werden Ihre Tabellen auf die Breite des sie umgebenden Div erweitert.
Ich habe diesen Trick hier gefunden .
quelle
<col>
s oder in den s der ersten Zeile angeben<td>
(anstatt sie basierend auf der Textgröße fließen zu lassen). Aus MDN: "Behoben: Tabellen- und Spaltenbreiten werden durch die Breite der Tabellen- und Spaltenelemente oder durch die Breite der ersten Zellenreihe festgelegt. Zellen in nachfolgenden Zeilen wirken sich nicht auf die Spaltenbreite aus."Eine grobe Umgehung besteht darin,
display: table
auf das enthaltende Div zu setzen.quelle
Ich habe alle oben genannten Lösungen ausprobiert und dann nicht funktioniert. Ich habe 3 Tabellen untereinander. Der letzte floss über. Ich habe es behoben mit:
Für IE11 im Edge-Modus müssen Sie dies einstellen
word-break:break-all
quelle
Zuerst habe ich James Lawruks Methode angewendet. Dies änderte jedoch alle Breiten der
td
.Die Lösung für mich war die Verwendung
white-space: normal
für die Spalten (die auf eingestellt warwhite-space: nowrap
). Auf diese Weise wird der Text immer unterbrochen. Durchword-wrap: break-word
die Verwendung wird sichergestellt, dass bei Bedarf alles kaputt geht, auch nach der Hälfte eines Wortes.Das CSS sieht dann so aus:
Dies ist möglicherweise nicht immer die wünschenswerte Lösung, da
word-wrap: break-word
Ihre Wörter in der Tabelle möglicherweise unleserlich werden. Dadurch bleibt Ihr Tisch jedoch in der richtigen Breite.quelle
Ich habe fast alles oben versucht, aber es hat bei mir nicht funktioniert ... Das Folgende hat funktioniert
Dies wird dem übergeordneten div (Container der Tabelle) hinzugefügt.
quelle
Wenden Sie das obige Styling auf das übergeordnete Div an.
quelle
Es ist ein
width="400"
auf dem Tisch, entfernen Sie es und es wird funktionieren ...quelle