Html tablosuna yatay kaydırma çubuğu ekleme


142

HTML tablosuna Yatay kaydırma çubuğu eklemenin bir yolu var mı? Aslında tablonun nasıl büyüdüğüne bağlı olarak hem dikey hem de yatay olarak kaydırılabilir olması gerekiyor, ancak her iki kaydırma çubuğunun görünmesini sağlayamıyorum.


3
... tüm masayı bir div'a koymayı düşündün mü? ... sonra div?
vektör

3
Belki kabul edilen cevap olarak hangi cevabı değiştirme zamanı?
Serge Stroobandt

Yanıtlar:


82

CSS overflowmülkünü denediniz mi?

overflow: scroll; /* Scrollbar are always visible */
overflow: auto;   /* Scrollbar is displayed as it's needed */

GÜNCELLEME
Diğer kullanıcıların işaret ettiği gibi, kaydırma çubuklarını eklemek için bu yeterli değildir .
Bu nedenle, lütfen aşağıdaki yorumları ve yanıtları görün ve güncelleyin.


15
Kendi girişimlerime ve internette okuduğum her şeye göre bu işe yaramıyor. Tablonun kendisini değil, bir sarmalayıcı elemanını taşabilirsiniz.
bloudermilk

21
@bloudermilk Ekleyebilirseniz yapabilirsiniz display: block.
Cees Timmerman

244

İlk display: blockönce masanızı yapın

Daha sonra, set overflow-x:için auto.

table {
    display: block;
    overflow-x: auto;
    white-space: nowrap;
}

Güzel ve temiz. Gereksiz biçimlendirme yok.

İşte tablo başlıkları kaydırma ile daha karmaşık örnekler web sitemde bir sayfadan.


3
Bu benim için Chrome'da çalışıyor, ancak yalnızca her şeyi bir araya getirdikten sonra. white-space: nowrap;hemen kaydırma çubuğunu görmenize yardımcı olur.
Cees Timmerman

28
Aslında daha önce denedim. Tek sorun, tablo hücrelerinin artık tablonun tam genişliğini doldurmamasıydı.
Shevy

4
Başkaları tarafından söylendiği gibi bu düzgün çalışmaz: tablo satırları tablo genişliğini doldurmaz.
collimarco

1
@SergeStroobandt hayır, benim durumumda white-space: nowrap;sorunu çözmüyor (Firefox'ta test edildi). Satırları genişletmek için yeterli içerik (metin) olmadığında satır genişliği tablo genişliğinden daha azdır.
collimarco

3
@collimarco Not Satır içi blok seçeneği için maksimum genişlik:% 100 kullanmam gerekiyordu.
dogoncouch

40

Tabloyu aşağıdaki stille ayarlanmış bir DIV'ye sarın:

div.wrapper {
  width: 500px;
  height: 500px;
  overflow: auto;
}

8
overflow:autoBurada gereksiz görünüyor . Her zaman html - hardcode bazı genişlik veya yükseklikte çözüm gibi görünüyor ...
JonnyRaa

17

Bunun için " taşma " CSS özelliğini kullanın .

Kısa özet:

overflow: visible|hidden|scroll|auto|initial|inherit;

Örneğin

table {
    display: block;
    overflow: scroll;
}

Bağlantı sağlandı
justingordon

12

@Serge Stroobandt tarafından önerilen çözümle iyi bir başarı elde ettim, ancak @Shevy'in hücrelerle olan sorunuyla karşılaştım, sonra tablonun tam genişliğini doldurmadım. Ben bazı stilleri ekleyerek düzeltmek mümkün tbody.

table {
  display: block;
  overflow-x: auto;
  white-space: nowrap;
}

table tbody {
  display: table;
  width: 100%;
}

Bu benim için Mac'te Firefox, Chrome ve Safari'de çalıştı.


10

Yukarıdaki çözümlerden hiçbirini çalıştıramadım. Ancak, bir kesmek buldum:

body {
  background-color: #ccc;
}

.container {
  width: 300px;
  background-color: white;
}

table {
  width: 100%;
  border-collapse: collapse;
}

td {
  border: 1px solid black;
}

/* try removing the "hack" below to see how the table overflows the .body */
.hack1 {
  display: table;
  table-layout: fixed;
  width: 100%;
}

.hack2 {
  display: table-cell;
  overflow-x: auto;
  width: 100%;
}
<div class="container">

  <div class="hack1">
    <div class="hack2">

      <table>
        <tr>
          <td>table or other arbitrary content</td>
          <td>that will cause your page to stretch</td>
        </tr>
        <tr>
          <td>uncontrollably</td>
          <td>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</td>
        </tr>
      </table>

    </div>
  </div>

</div>


Yukarıdakilerin hiçbiri benim için de işe yaramadı, ama bu işe yaradı. Güzel olan, teşekkürler.
Şubat

@ Gábriel Senin için çalıştı sevindim. Hemen şimdi Firefox'ta tekrar denedim ve doğru bir şekilde görüntülenmiyor gibi görünüyor :-( i.imgur.com/BcjSaCV.png Chrome hala iyi görünüyor.
19:25

1
Garip; Tam olarak Firefox'ta kullanıyordum ve orada çalıştı - bu tam kurulumda olmasa da. Daraltılmış kenarlıklı 10 x 10 piksel div'den oluşan büyük bir ızgara oluşturmak istedim ve maksimum genişlik + taşma-x: otomatik anahtar gibi görünüyordu. Yerinde olanlar ile her şey mükemmel görünüyordu. Ayrıca, <table> hiç kullanmıyorum, yalnızca div, display: table, table-row ve table-cell.
Gábriel

10

Bu Serge Stroobandt'ın cevabında bir gelişme ve mükemmel çalışıyor. Daha az sütun varsa tablonun tüm sayfa genişliğini doldurmaması sorununu çözer.

<style> 
 .table_wrapper{
    display: block;
    overflow-x: auto;
    white-space: nowrap;
}
</style>

<div class="table_wrapper">
<table>
...
</table>
</div>

2
white-space: nowrap;Opsiyonel olarak görünmektedir.
Mike Shiyan


2

Bu cevabı önceki çözüme dayanarak anladım ve yorum yaptım ve kendi ayarlamamı ekledim. Bu benim için duyarlı tabloda çalışıyor.

table {
  display: inline-block;
  overflow-x: auto;
  white-space: nowrap;
  // make fixed table width effected by overflow-x
  max-width: 100%;
  // hide all borders that make rows not filled with the table width
  border: 0;
}
// add missing borders
table td {
  border: 1px solid;
}

@Saeed Bunu mu demek istediniz: html
George

Benim kötü, daha iyi anlamak için daha fazla açıklama eklemek demek
Mastisa

Umarım bu sürüm daha açıktır.
George

1

Masadaki '% 100'den fazla genişlik' gerçekten benim için çalışmasını sağladı.

.table-wrap {
    width: 100%;
    overflow: auto;
}

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


-2
//Representation of table
<div class="search-table-outter">
<table class="table table-responsive search-table inner">
</table>
</div>

//Css to make Horizontal Dropdown

<style>

    .search-table{table-layout: auto; margin:40px auto 0px auto; }
    .search-table, td, th {
        border-collapse: collapse;
    }
th{padding:20px 7px; font-size:15px; color:#444;}
td{padding:5px 10px; height:35px;}
    .search-table-outter { overflow-x: scroll; }
th, td { min-width: 200px; }


</style>

Girinti ve örnek veriler, bir şeyi demo etmek istiyorsanız yardımcı olacaktır. Ayrıca, "Açılır" yerine "kaydırma çubuğu" mu demek istediniz?
Cees Timmerman
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.