Tabel meluap di luar div

96

Saya mencoba menghentikan tabel yang memiliki lebar yang secara eksplisit dinyatakan meluap di luar induknya div. Saya kira saya bisa melakukan ini dengan beberapa cara menggunakanmax-width , tapi sepertinya bekerja.

Kode berikut (dengan jendela yang sangat kecil) akan menyebabkan ini:

<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>

Garis merah adalah batas kanan dari div, dan jika Anda membuat jendela browser Anda kecil, Anda akan melihat bahwa tabel tidak muat di dalamnya.

waiwai933
sumber
2
Di luar topik: jangan gunakan <center>. Sudah tidak digunakan lagi selama bertahun-tahun. Selain itu, Anda sudah memiliki align="center"meja Anda.
ЯegDwight
Sayangnya ini adalah sesuatu yang tidak bisa saya kendalikan. Konten di dalam div sebenarnya disertakan dari file yang tidak saya buat. Saya hanya dapat menyentuh CSS, tetapi saya akan menghilangkan <center> jika saya bisa.
waiwai933

Jawaban:

24

Putar balik dengan melakukan:

<style type="text/css">
  #middlecol {
    border-right: 2px solid red;
    width: 45%;
  }

  #middlecol table {
    max-width: 400px;
    width: 100% !important;
  }
</style>

Saya juga menyarankan Anda untuk:

  • Tidak menggunakan center tag (sudah tidak digunakan lagi)
  • Jangan gunakan width, bgcoloratribut, atur dengan CSS ( widthdan background-color)

(dengan asumsi bahwa Anda dapat mengontrol tabel yang dirender)

Zyphrax
sumber
Jika saya membuat lebar: 100% itu mengabaikan margin saya: benar. yang menyebabkan pengguliran batang horizontal
Jesse
210

Anda bisa mencegah tabel meluas di luar div induknya dengan menggunakan table-layout:fixed.

CSS di bawah ini akan membuat tabel Anda melebar selebar div yang mengelilinginya.

table 
{
    table-layout:fixed;
    width:100%;
}

Saya menemukan trik ini di sini .

James Lawruk
sumber
63
Ini memaksa semua kolom memiliki lebar yang sama ... tidak terlalu berguna
Serj Sagan
11
Sebenarnya Anda masih dapat membuat lebar kolom berbeda, Anda hanya perlu menentukan lebar dalam <col>s atau pada baris pertama <td>(vs. membiarkannya mengalir berdasarkan ukuran teks). Dari MDN: "diperbaiki: Lebar tabel dan kolom ditentukan oleh lebar elemen tabel dan kolom atau dengan lebar baris pertama sel. Sel di baris berikutnya tidak mempengaruhi lebar kolom."
philfreo
1
Terima kasih banyak. Ini adalah bantuan besar yang telah Anda lakukan untuk saya ...
Parthan_akon
67

Sebuah pekerjaan kasar sekitar adalah untuk mengatur display: tablediv berisi.

questzen
sumber
8
Ini brilian, persis seperti yang saya cari. Untuk membantu orang lain, berikut adalah beberapa string yang dapat di-google: Saya mencoba menggunakan CSS untuk menyesuaikan div induk agar meluap, atau menyesuaikan latar belakang untuk menutupi konten tabel yang meluap. Ini bekerja dengan sempurna, terima kasih banyak!
trisweb
Hanya tambahan, harap perhatikan konteks di mana ini diterapkan, ini digunakan untuk memberikan tata letak tabel seperti perilaku dan karenanya adanya atribut gaya lain seperti tabel-baris, sel tabel. Tata letak tabel tidak mengambang. Pada saat dipajang: properti meja saja tidak cukup
questzen
Juga datang ke sini setelah berjam-jam mencari jawaban. String untuk mesin telusur: Tabel di dalam div tidak dapat digulir, firefox. Div dengan tabel tidak bisa bergulir, firefox. Tidak ada scrollbar yang muncul di tabel di dalam div.
anevaude
2
Saya telah mencoba beberapa hal tetapi saya hanya menambahkan display: table ke div induk atas. Masalahnya terpecahkan, terima kasih.
Günay Gültekin
Solusi terbaik untuk tabel dengan nama header yang panjang dan konten sel yang panjang. Terima kasih!.
Ege Bayrak
34

Saya mencoba semua solusi yang disebutkan di atas, kemudian tidak berhasil. Saya memiliki 3 tabel satu di bawah yang lain. Yang terakhir meluap. Saya memperbaikinya menggunakan:

/* Grid Definition */
table {
    word-break: break-word;
}

Untuk IE11 dalam mode tepi, Anda perlu mengatur ini ke word-break:break-all

Tn. Doomsbuster
sumber
12

Awalnya saya menggunakan metode James Lawruk. Namun ini mengubah semua lebar filetd itu.

Solusi bagi saya adalah menggunakan white-space: normal kolom (yang diatur ke white-space: nowrap). Dengan cara ini teks akan selalu rusak. Menggunakan word-wrap: break-wordakan memastikan bahwa semuanya akan rusak saat dibutuhkan, bahkan di tengah kata.

CSS akan terlihat seperti ini:

td, th {
    white-space: normal; /* Only needed when it's set differntly somewhere else */
    word-wrap: break-word;
}

Ini mungkin tidak selalu menjadi solusi yang diinginkan, karena word-wrap: break-worddapat membuat kata-kata Anda di tabel tidak terbaca. Namun itu akan membuat tabel Anda memiliki lebar yang tepat.

Sander Koedood
sumber
5

Saya mencoba hampir semua cara di atas tetapi tidak berhasil untuk saya ... Berikut ini berhasil

word-break: break-all;

Ini akan ditambahkan pada div induk (wadah tabel.)

Waheed Asghar
sumber
1
overflow-x: auto;
overflow-y : hidden;

Terapkan gaya di atas ke div induk.

Christian Heath
sumber
0

Anda dapat mencoba CSS ini. Saya selalu mengalaminya bekerja.

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>

Kanab Paul
sumber
2
Harap jangan memposting jawaban yang identik untuk beberapa pertanyaan. Alih-alih hanya menjawab satu, dan beri komentar (atau tandai / tutup suara, setelah Anda memiliki reputasi) bahwa yang lain adalah duplikat. Untuk referensi, saya merujuk ini, stackoverflow.com/a/63741405/2756409 , stackoverflow.com/a/63741355/2756409 , dan stackoverflow.com/a/63741938/2756409
TylerH
Selain itu, berikan jawaban yang memberikan sesuatu yang baru saja. Solusi ini word-break: break-word,, telah disediakan oleh banyak, banyak jawaban di sini.
TylerH
@TylerH Terima kasih atas saran Anda.
Kanab Paul
-3

Ada di width="400"atas meja, keluarkan dan itu akan berhasil ...

lembah
sumber