Div dışında taşan tablo


97

Açıkça belirtilen genişliğe sahip bir tablonun üstünün dışına taşmasını durdurmaya çalışıyorum div. Bunu kullanarak bir şekilde yapabileceğimi sanıyorum max-width, ancak bunu çalıştıracak gibi görünmüyorum.

Aşağıdaki kod (çok küçük bir pencere ile) buna neden olacaktır:

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

Kırmızı çizgi, öğesinin sağ kenarlığıdır divve tarayıcı pencerenizi küçültürseniz, tablonun ona sığmadığını görürsünüz.


2
Konu dışı: kullanmayın <center>. Yıllardır kullanımdan kaldırıldı. Ayrıca, align="center"masanızda zaten bir tane var .
ЯegDwight

Bu ne yazık ki kontrol edemediğim bir şey. Div içindeki içerik aslında benim tarafımdan oluşturulmayan bir dosyadan ekleniyor. Yalnızca CSS'ye dokunabilirim, ancak yapabilseydim <center> öğesini ortadan kaldırırdım.
waiwai933

Yanıtlar:


25

Şunları yaparak ters çevirin:

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

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

Ayrıca şunları yapmanızı tavsiye ederim:

  • centerEtiketi kullanmamak (kullanımdan kaldırılmıştır)
  • Kullanmayın width, bgcoloröznitelikler, bunları CSS ile ayarlayın ( widthve background-color)

(oluşturulan tabloyu kontrol edebileceğinizi varsayarak)


Genişliği% 100 yaparsam, kenar boşluğumu yok sayar: sağ. bu da yatay çubuk kaydırmaya neden oluyor
Jesse

214

Kullanarak tabloların üst div öğelerinin ötesine genişlemesini önleyebilirsiniz table-layout:fixed.

Aşağıdaki CSS, tablolarınızın, onu çevreleyen div genişliğine kadar genişlemesini sağlayacaktır.

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

Bu numarayı burada buldum .


65
Bu, tüm sütunları aynı genişlikte olmaya zorlar ... pek kullanışlı değil
Serj Sagan

11
Aslında sütunları yine de farklı genişliklerde yapabilirsiniz, yalnızca genişlikleri <col>s cinsinden veya ilk satırın s'lerinde belirtmeniz gerekir <td>(metin boyutuna göre akmasına izin vermek yerine). MDN'den: "sabit: Tablo ve sütun genişlikleri, tablo ve sütun öğelerinin genişliğine veya ilk hücre satırının genişliğine göre ayarlanır. Sonraki satırlardaki hücreler sütun genişliklerini etkilemez."
philfreo

1
çok teşekkür ederim. Bu benim için yaptığın büyük bir
yardımdı

67

Etrafta kaba bir çalışma display: table, içeren div üzerinde ayarlanır .


8
Bu harika, tam da aradığım şey. Başkalarına yardımcı olmak için burada bazı googleable dizeler var: Üst div'i taşmaya sığdırmak için CSS kullanmaya veya taşan tablo içeriğini örtmek için bir arka plan sığdırmaya çalışıyordum. Bu mükemmel çalıştı, çok teşekkürler!
trisweb

Sadece bir ek, lütfen bunun uygulandığı bağlama dikkat edin, bu, davranış gibi tablo düzeni ve dolayısıyla tablo satırı, tablo-hücre gibi diğer stil özelliklerinin varlığını vermek için kullanılır. Tablo düzenleri yüzdürülmez. Şu anda ekran: masa özelliği tek başına yeterli değil
questzen

Ayrıca cevap için saatlerce kazı yaptıktan sonra buraya geldi. Arama motoru için dizeler: div içindeki tablo kaydırılmaz, firefox. Tablo içeren div kaydırılmıyor, Firefox. Bir div içinde tablo görünen kaydırma çubuğu yok.
anevaude

2
Birkaç şey denedim ama sadece display: table'i top parent div'e ekledim. Sorun çözüldü, teşekkürler.
Günay Gültekin

Uzun başlık adlarına ve uzun hücre içeriğine sahip tablolar için en iyi çözüm. Teşekkürler!.
Ege Bayrak

34

Yukarıda belirtilen tüm çözümleri denedim, sonra işe yaramadı. Üst üste 3 tablom var. Sonuncusu aktı. Bunu kullanarak düzelttim:

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

Kenar modunda IE11 için bunu şu şekilde ayarlamanız gerekir: word-break:break-all


12

İlk başta James Lawruk'un yöntemini kullandım. Ancak bu, tüm genişliklerini değiştirdi td.

Benim için çözüm white-space: normal(ayarlanan white-space: nowrap) sütunlarda kullanmaktı . Bu şekilde metin her zaman kırılır. Kullanmak word-wrap: break-word, gerektiğinde her şeyin, hatta bir kelimenin ortasında bile bozulmasını sağlayacaktır.

CSS şu şekilde görünecektir:

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

Bu word-wrap: break-word, tablodaki sözcüklerinizi okunaksız hale getirebileceği için her zaman istenen çözüm olmayabilir. Ancak tablonuzu doğru genişlikte tutacaktır.


5

Neredeyse hepsini denedim ama benim için işe yaramadı ... Aşağıdakiler yaptı

word-break: break-all;

Bu, üst div'e (tablonun kapsayıcısı) eklenecektir.


1
overflow-x: auto;
overflow-y : hidden;

Yukarıdaki stili üst div öğesine uygulayın.


0

Bu CSS'yi deneyebilirsiniz. Her zaman çalıştığını deneyimledim.

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
Lütfen birden fazla soruya aynı cevapları göndermeyin. Bunun yerine, sadece birini yanıtlayın ve diğerlerinin kopya olduğuna dair yorum yapın (veya itibara sahip olduğunuzda oyunuzu işaretleyin / kapatın). Referans için, stackoverflow.com/a/63741405/2756409 , stackoverflow.com/a/63741355/2756409 ve stackoverflow.com/a/63741938/2756409
TylerH

Ek olarak, lütfen yalnızca yeni bir şeyler sağlayan yanıtlar verin. Bu çözüm, word-break: break-wordhalihazırda birçok cevapla sağlanmıştır.
TylerH

@TylerH Öneriniz için teşekkürler.
Kanab Paul

-3

Bir var width="400"masada, çıkarın ve işe yarayacak ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.