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.


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)


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 .


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.


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


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.


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



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>


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.