Büyük bir tabloyu görüntülerken HTML tablosu başlıkları her zaman pencerenin üstünde görünür


169

Tek bir özellik eklemek için bir HTML tablosunun sunumunu "değiştirebilmeyi" istiyorum: tablo ekranda aşağı doğru kaydırıldığında, ancak başlık satırları ekran dışında olduğunda, başlıkların kalmasını istiyorum görüntüleme alanının üst kısmında görünür.

Bu, kavramsal olarak Excel'deki "bölmeleri dondur" özelliğine benzer. Ancak, bir HTML sayfasının içinde birkaç tablo olabilir ve yalnızca o anda görüntülenmekte olan tablo için yalnızca görüntüleme sırasında olmasını isterim.

Not: Üstbilgiler kaydırılmazken tablo veri alanının kaydırılabilir olduğu bir çözüm gördüm. Aradığım çözüm bu değil.


sayfanız tablolar kullanılarak mı tasarlandı? önce div'lara dönüştürmek ve tablolar için sekmeli verileri tek başına bırakmak mümkün değil mi?
Kilit

6
son zamanlarda bunu yapan bir eklenti yazdı: programmingdrunk.com/floatThead
mkoryak

1
En çok oy alan çözüme ve aşağıdaki türevlere ek olarak, mkoryak'ın yukarıdaki eklentisi de oldukça iyidir. "Alışveriş" i bitirmeden önce buna da dikkat edin.
DanO

Teşekkürler dan :) Ben de bir sonraki sürüm için planlanan bazı kick-ass özellikleri var
mkoryak

İkinci olarak mkoryak floatThead eklentisini kullandım - hızlıca entegre edebildim. Eklenti için büyük teşekkürler!
w5m

Yanıtlar:


67

Çok havalı, DataTable'larla da çalışabilen ve hatta bir kabın içinde çalışabilen jQuery.floatThead'e ( demolar mevcuttur ) göz atın .overflow: auto


evet yatay kaydırma, pencere kaydırma, iç kaydırma ve pencere yeniden boyutlandırma ile çalışır.
mkoryak

Çalışma koduna sahip bir keman ekleyebilir misiniz? (Sitede olduğunu biliyorum ...)
Michel Ayres

12
büyük bir demo / dokümanlar sayfası oluşturdum. Neden bir keman lazım?
mkoryak

5
@MustModify stackoverflow bana soru sormak için iyi bir yer değil. github ile ilgili bir sorunu rapor et, sadece nasıl çalıştıracağına dair bir soru olsa bile. Orada genellikle bir günden kısa sürede cevap vereceğim. Burada hasta muhtemelen bir yılın hemen altında cevap :)
mkoryak

1
@MustModify değerini, tablolardaki sınıfların hiçbiri ilgili değildir. Dokümanlarımın dediği gibi eklentinin çalışması için herhangi bir css veya sınıfa ihtiyacı yok.
mkoryak

135

JQuery kullanarak konsept kanıtı bir çözüm ürettim .

Örneği buradan görüntüleyin.

Şimdi bu kodu bir Mercurial bitbucket deposunda aldım . Ana dosya tables.html.

Bununla ilgili bir sorun olduğunu biliyorum: tablo çapa içeriyorsa ve URL'yi bir tarayıcıda belirtilen çapa ile açarsanız, sayfa yüklendiğinde, çapa sahip satır muhtemelen kayan başlık tarafından gizlenir.

2017-12-11 Güncellemesi: Bunun mevcut Firefox (57) ve Chrome (63) ile çalışmadığını görüyorum. Bunun ne zaman ve neden durduğundan veya nasıl düzeltileceğinden emin değilim. Ama şimdi, Hendy Irawan'ın kabul edilen cevabının daha üstün olduğunu düşünüyorum .


Yaptığım bir şey için buna ihtiyacım vardı. Harika yardım, teşekkür ederim. Benimki kaydırma penceresi html içinde bir div olduğu için pencereyi kullanmıyordu. Değişiklikten zorunda floatingHeaderRow.css("top", Math.min(scrollTop - offset.top, $(this).height() - floatingHeaderRow.height()) + "px");için floatingHeaderRow.css("top", scrollTop + "px");koduyla gibi tablo başlık sonunda sayfadan kaybolmaya Sayfanın altındaki atlama vardı.
Nalum

1
Bunu masamda uygulamaya çalışıyorum. Başlık genişliği ile ilgili bir sorun yaşıyorum. Satırlardaki veriler rastgele bir uzunluk gibi bir db'den alınan değerlerdir. Kaydırma yapmadan önce, üstbilgiler otomatik olarak devralınan boyuttadır, ancak bir kez kaydırdığınızda, üstbilgi başlık adlarının etrafına dolanacak şekilde yeniden boyutlandırılır ve bu nedenle çok daha küçük bir genişliktir, böylece üstbilgiler gerçekte kendi üstlerinin üzerine gelmez sütunu. Bu sorunu nasıl düzeltebilirim?
JonYork

Hmm Açıklamanıza göre emin değilim. 1) Mümkünse çevrimiçi bir örnek gösterin; 2) StackOverflow'da bir soru olarak sorun.
Craig McQueen

@JonYork Aynı sorunu yaşadım. Benim sorunum <th> yerine başlıkta <td> kullanmaktı, bu yüzden her bir sütunun genişliğini varolmayan <th> öğesine // Copy cell widths from original headeruygulayamadı (kodun bir bölümüne bakın ). @Craig McQueen, lütfen cevabınızı düzenleyin, böylece kimse bu hatayı yapmaz.
aexl

@CraigMcQueen Ben müthiş kodunu (teşekkür ederim) kullandığımda başka bir sekme (jQuery sekmesi eklentisi) arkasında olan ikinci tabloya tatili. Düşüncesi olan var mı? Başlık, konum sütunlarını takip etmek yerine en solda yer alır. Ancak ilk jQuery sekmesindeki tabloda mükemmel çalışır.
Richard Żak

68

Craig, kodunuzu biraz geliştirdim (şu an pozisyon kullanmakta olan birkaç şey arasında: sabit) ve bir jQuery eklentisi olarak tamamladım.

Burada deneyin: http://jsfiddle.net/jmosbech/stFcx/

Ve kaynağı buradan alın: https://github.com/jmosbech/StickyTableHeaders


1
Bir jQuery eklentisi yapmak için iyi bir fikir. Birkaç soru: (1) Yatay kaydırma ile iyi çalışıyor mu? (2) Tablonun alt kısmı pencerenin üstünden aşağı kayacak şekilde aşağı kaydırdığınızda nasıl davranır? Örnek, bu vakaların test edilmesine izin vermemektedir.
Craig McQueen

Jsfiddle örneğiniz tablesorter ile harika çalışıyor, ancak github'daki kod çalışmıyor. Tablo vericisi kodunu değiştirmek zorunda kaldınız mı?
ericslaw

Craig, başlık kaydırma ve yeniden boyutlandırma üzerinde hem yatay hem de dikey olarak yeniden konumlandırıldığından yatay kaydırma sorun olmamalı. İkinci sorunuza gelince: Tablo görünüm penceresinden çıktığında başlık gizlenir.
jmosbech

Eric, bu garip. Github'dan /demo/tablesorter.htm dosyasını açmayı denediniz mi? Tablesorter kodunu değiştirmedim, ancak çalışmasını sağlamak için tablesorter'tan önce StickyTableHeader eklentisini uygulamanız gerekiyor.
jmosbech

2
Yatay kaydırma tam olarak çalışmaz, oldukça uzak bir mesafeyi kaydırdıktan sonra, ekran dışına kaydırıldığında masanın bir parçası olarak normal konumlandırıldığından daha ileriye kayar.
Nathan Phillips

16

Modern css3 uyumlu tarayıcıları hedefliyorsanız ( Tarayıcı desteği: https://caniuse.com/#feat=css-sticky ) position:stickyJS gerektirmeyen ve tablo düzenini yanlış hizalamayacak şekilde kullanabilirsiniz ve aynı sütunun td'si. Düzgün çalışması için sabit sütun genişliği gerektirmez.

Tek bir başlık satırı örneği:

thead th
{
    position: sticky;
    top: 0px;
}

1 veya 2 sıralı kalınlıklar için böyle bir şey kullanabilirsiniz:

thead > :last-child th
{
    position: sticky;
    top: 30px; /* This is for all the the "th" elements in the second row, (in this casa is the last child element into the thead) */
}

thead > :first-child th
{
    position: sticky;
    top: 0px; /* This is for all the the "th" elements in the first child row */
}

Üstte biraz oynamanız gerekebilirİlk satırın yüksekliğine (+ kenar boşluğu + kenarlık + dolgu varsa) eşleştirmek için piksel sayısını değiştirerek son çocuğun özelliği , böylece ikinci satır hemen aşağı iner ilk feryat.

Ayrıca, aynı sayfada birden fazla tablonuz olsa bile her iki çözüm de çalışır: th her birinin elemanı, üst konumu css tanımında gösterilen konum olduğunda yapışkan olmaya başlar ve tüm tablo aşağı kaydırıldığında kaybolur. Yani daha fazla tablo varsa hepsi aynı şekilde güzel çalışır.

Neden css'deki son çocuğu önce ve sonra ilk çocuk kullanıyorsunuz ?

Css kuralları tarayıcı tarafından css dosyasına yazdığınız sırada aynı sırada işlendiğinden ve bu nedenle thead öğesine yalnızca 1 satırınız varsa, ilk satır aynı zamanda son satır ve ilk alt kural gerekir son çocuğu geçersiz kılmak için. Değilse, istemediğinizi varsayalım üst kenar boşluğundan 30 piksel satırının bir ofsetine sahip olacaksınız.

Bilinen bir konum problemi: yapışkan, başlık elemanlarında veya tablo satırlarında çalışmaz: bu öğeleri hedeflemelisiniz. Bu sorunun atlanması, gelecekteki tarayıcı sürümlerinde çözülecektir.


İlk örnek Firefox'ta çalışıyor gibi görünmüyor (61). Ancak, eğer pozisyona yapışkan yerleştirilirse, bunu yapar.
ewh

1
thead tr+tr thİkinci satırı hedeflemek için yapabilirsiniz .
Teepeemm

5

Olası alternatifler

js-kayan masa başlıkları

js-kayan-tablo başlıkları (Google Code)

Drupal bölgesinde

Drupal 6 sitem var. Yönetici "modülleri" sayfasındaydım ve tabloların tam olarak bu özelliğe sahip olduğunu fark ettim!

Koda bakıldığında, adlı bir dosya tarafından uygulanıyor gibi görünüyor tableheader.js. Bu özelliği sınıflı tüm tablolara uygular sticky-enabled.

Bir Drupal sitesi için, bu tableheader.jsmodülü kullanıcı içeriği için olduğu gibi kullanabilmek istiyorum . tableheader.jsDrupal'daki kullanıcı içerik sayfalarında görünmüyor. Kullanılabilir olması için Drupal temasının nasıl değiştirileceğini sormak için bir forum mesajı gönderdim . Bir cevaba göre , temanın aşağıdaki gibi tableheader.jskullanılarak bir Drupal temasına eklenebilir :drupal_add_js()template.php

drupal_add_js('misc/tableheader.js', 'core');

Google Kod bağlantınız benim için çok faydalı oldu, tahnks.
Vilius Gaidelis

5

Bu sorunla son zamanlarda karşılaştım. Ne yazık ki, biri başlık ve diğeri vücut için 2 tablo yapmak zorunda kaldı. Muhtemelen şimdiye kadarki en iyi yaklaşım değil ama işte gidiyor:

<html>
<head>
    <title>oh hai</title>
</head>
<body>
    <table id="tableHeader">
        <tr>
            <th style="width:100px; background-color:#CCCCCC">col header</th>
            <th style="width:100px; background-color:#CCCCCC">col header</th>
        </tr>
    </table>
    <div style="height:50px; overflow:auto; width:250px">
        <table>
            <tr>
                <td style="height:50px; width:100px; background-color:#DDDDDD">data1</td>
                <td style="height:50px; width:100px; background-color:#DDDDDD">data1</td>
            </tr>
            <tr>
                <td style="height:50px; width:100px; background-color:#DDDDDD">data2</td>
                <td style="height:50px; width:100px; background-color:#DDDDDD">data2</td>
            </tr>
        </table>
    </div>
</body>
</html>

Bu benim için çalıştı, muhtemelen zarif bir yol değil ama işe yarıyor. Daha iyi bir şey yapıp yapamayacağımı araştırıyorum, ancak birden çok tabloya izin veriyor.

İhtiyacınıza uygun olup olmadığını görmek için taşma uygunluğunu okuyun


Hmm çalışmıyor, bunu düzeltmeye çalışacağım, ancak yaklaşım devam ediyor, taşmayı kullanmanız gerekiyor: otomatik proprety
Gab Royer

Çözümünüzü ve basitliğini takdir ediyorum, ancak sorumda "Not: Üstbilgiler kaydırılmazken tablo veri alanının kaydırılabilir hale getirildiği bir çözüm gördüm. Aradığım çözüm bu değil."
Craig McQueen

@GabRoyer Referans verdiğiniz w3school sayfası mevcut değil.
Farhan

Hareket ettirmiş gibi görünüyorlar. Düzeltildi
Gab Royer

Bu yaklaşımla ilgili başka bir sorun, bazı sütunları başka içeriğe uyarlamanız gerektiğinde, karşılık gelen sütun başlığıyla hizalanmalarını bozma riskiniz olmasıdır. IMHO, bu problemle, sütunların ve göreceli kafaların mükemmel bir şekilde hizalanmasını sağlayan içeriğin biraz dinamik yönetimine izin veren bir yaklaşımla yüzleşmek daha iyidir. IMHO pozisyonu = yapışkan gitmek için bir yoldur.
willy wonka

3

Bu, masanızda yapışkan bir başlık olması gerçekten zor bir şey. Ben aynı gereksinimi vardı ama asp: GridView ile ve sonra gerçekten gridview üzerinde yapışkan başlık olduğunu düşündüm. Birçok çözüm mevcut ve tüm çözümü denemek 3 gün sürdü ama hiçbiri tatmin edemedi.

Bu çözümlerin çoğuyla karşılaştığım ana sorun, hizalama sorunuydu. Üstbilgiyi yüzer hale getirmeye çalıştığınızda, üstbilgi hücrelerinin ve vücut hücrelerinin hizalaması bir şekilde yoldan çıkar.

Bazı çözümlerle, üstbilginin ilk birkaç satırla üst üste binmesi sorununu yaşadım, bu da vücut sıralarının kayan başlığın arkasında gizlenmesine neden oldu.

Şimdi bunu başarmak için kendi mantığımı uygulamak zorunda kaldım, ancak bunu mükemmel bir çözüm olarak görmüyorum, ancak bu aynı zamanda birisi için de yararlı olabilir,

Aşağıda örnek tablo bulunmaktadır.

<div class="table-holder">
        <table id="MyTable" cellpadding="4" cellspacing="0" border="1px" class="customerTable">
            <thead>
                <tr><th>ID</th><th>First Name</th><th>Last Name</th><th>DOB</th><th>Place</th></tr>
            </thead>
            <tbody>
                <tr><td>1</td><td>Customer1</td><td>LastName</td><td>1-1-1</td><td>SUN</td></tr>
                <tr><td>2</td><td>Customer2</td><td>LastName</td><td>2-2-2</td><td>Earth</td></tr>
                <tr><td>3</td><td>Customer3</td><td>LastName</td><td>3-3-3</td><td>Mars</td></tr>
                <tr><td>4</td><td>Customer4</td><td>LastName</td><td>4-4-4</td><td>Venus</td></tr>
                <tr><td>5</td><td>Customer5</td><td>LastName</td><td>5-5-5</td><td>Saturn</td></tr>
                <tr><td>6</td><td>Customer6</td><td>LastName</td><td>6-6-6</td><td>Jupitor</td></tr>
                <tr><td>7</td><td>Customer7</td><td>LastName</td><td>7-7-7</td><td>Mercury</td></tr>
                <tr><td>8</td><td>Customer8</td><td>LastName</td><td>8-8-8</td><td>Moon</td></tr>
                <tr><td>9</td><td>Customer9</td><td>LastName</td><td>9-9-9</td><td>Uranus</td></tr>
                <tr><td>10</td><td>Customer10</td><td>LastName</td><td>10-10-10</td><td>Neptune</td></tr>
            </tbody>
        </table>
    </div>

Not : Tablo, sınıf özniteliği 'tablo tutucuya eşit olan bir DIV'ye sarılır.

Aşağıda html sayfa başlığımda eklediğim JQuery komut dosyası var.

<script src="../Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="../Scripts/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function () {
        //create var for table holder
        var originalTableHolder = $(".table-holder");
        // set the table holder's with
        originalTableHolder.width($('table', originalTableHolder).width() + 17);
        // Create a clone of table holder DIV
        var clonedtableHolder = originalTableHolder.clone();

        // Calculate height of all header rows.
        var headerHeight = 0;
        $('thead', originalTableHolder).each(function (index, element) {
            headerHeight = headerHeight + $(element).height();
        });

        // Set the position of cloned table so that cloned table overlapped the original
        clonedtableHolder.css('position', 'relative');
        clonedtableHolder.css('top', headerHeight + 'px');

        // Set the height of cloned header equal to header height only so that body is not visible of cloned header
        clonedtableHolder.height(headerHeight);
        clonedtableHolder.css('overflow', 'hidden');

        // reset the ID attribute of each element in cloned table
        $('*', clonedtableHolder).each(function (index, element) {
            if ($(element).attr('id')) {
                $(element).attr('id', $(element).attr('id') + '_Cloned');
            }
        });

        originalTableHolder.css('border-bottom', '1px solid #aaa');

        // Place the cloned table holder before original one
        originalTableHolder.before(clonedtableHolder);
    });
</script>

ve son olarak, biraz renklendirme amaçlı CSS sınıfıdır.

.table-holder
{
    height:200px;
    overflow:auto;
    border-width:0px;    
}

.customerTable thead
{
    background: #4b6c9e;        
    color:White;
}

Bu mantığın tüm fikri, tabloyu bir tablo tutucu div içine yerleştirmek ve sayfa yüklendiğinde istemci tarafında bu sahibinin klonunu oluşturmaktır. Şimdi tablonun gövdesini klon tutucunun içine gizleyin ve kalan başlık kısmını orijinal başlığa yerleştirin.

Aynı çözüm asp için de çalışır: gridview, gridview'de bunu başarmak için iki adım daha eklemeniz gerekir,

  1. Web sayfanızdaki gridview nesnesinin OnPrerender olayında, üstbilgi satırının tablo bölümünü TableHeader değerine eşit olarak ayarlayın.

    if (this.HeaderRow != null)
    {
        this.HeaderRow.TableSection = TableRowSection.TableHeader;
    }
  2. Ve ızgaranızı içine sarın <div class="table-holder"></div>.

Not : Başlığınızda tıklanabilir denetimler varsa, klonlanmış üstbilgide oluşturulan olayları orijinal başlığa geçirmek için biraz daha jQuery komut dosyası eklemeniz gerekebilir. Bu kod zaten jmosbech tarafından oluşturulan jQuery yapışkan başlık eklentisi mevcuttur


İyi bir çaba için +1, ancak çok fazla veri içeren büyük tablolar için, her şeyi klonlamak oldukça kötü ... Bunun yükleme süresini iki katına çıkaracağını hayal ediyorum
khaverim

2

Kullanılması display: fixedüzerine theadçalışması gerektiğini bölümünde, ancak yalnızca görünümünde geçerli masanın üzerinde çalışmak için, JavaScript yardımıyla gerekecektir. Ve zor olacak çünkü tarayıcı uyumsuzluğunun ana alanlarından biri olan görünüm penceresine göre kaydırma yerlerini ve öğelerin konumunu bulması gerekecek.

Popüler JavaScript çerçevelerine (jQuery, MooTools, YUI, vb.) İstediğinizi yapıp yapamayacaklarını veya istediğinizi yapmayı kolaylaştıracaklarını görün.


1
Tavsiye için teşekkürler. JQuery kullanarak bir çözüm yaptım - cevabımı görün.
Craig McQueen

Bunu denedim ve ekrandan ziyade pozisyon demek istediğini düşünüyorum, ama ikisi de chome'de işe yaramadı.
ericslaw

@ericslaw Ack - evet demek istedim position: fixed. Maalesef Chrome'da çalışmadı.
staticsan

genişlik stillerini göz ardı ederek
başlığımı

2

Eğer tam ekran bir tablo kullanıyorsanız belki görüntülemek için th ayarlamak isteyebilirsiniz: fixed; ve üst: 0; veya css üzerinden çok benzer bir yaklaşım deneyin.

Güncelleme

Hızlı bir şekilde iframe'lerle (html4.0) çalışan bir çözüm oluşturun. Bu örnek standart uyumlu DEĞİLDİR, ancak kolayca düzeltebilirsiniz:

outer.html

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">   
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">     
    <head>      
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />   
        <title>Outer</title>
  <body>
    <iframe src="test.html" width="200" height="100"></iframe>
    </body>
</html> 

test.html

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">   
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">     
    <head>      
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />   
        <title>Floating</title>
    <style type="text/css">
      .content{
        position:relative; 
      }

      thead{
        background-color:red;
        position:fixed; 
        top:0;
      }
    </style>
  <body>
    <div class="content">      
      <table>
        <thead>
          <tr class="top"><td>Title</td></tr>
        </head>
        <tbody>
          <tr><td>a</td></tr>
          <tr><td>b</td></tr>
          <tr><td>c</td></tr>
          <tr><td>d</td></tr>
          <tr><td>e</td></tr>
          <tr><td>e</td></tr>
          <tr><td>e</td></tr>
          <tr><td>e</td></tr>
          <tr><td>e</td></tr>
          <tr><td>e</td></tr>
        </tbody>
      </table>
    </div>
    </body>
</html> 

@ a_m0d, doğru ... ancak istek çok kafa karıştırıcı geliyor. Ya onu yanlış anlıyoruz ya da asker ne istediğini tam olarak anlamıyor.
Sampson

İşte bazı javascript kullanarak başka bir çözüm imaputz.com/cssStuff/bigFourVersion.html
merkuro 23:09

2

Sadece CSS kullanarak en basit cevap: D !!!

table {
  /* Not required only for visualizing */
  border-collapse: collapse;
  width: 100%;
}

table thead tr th {
  /* you could also change td instead th depending your html code */
  background-color: green;
  position: sticky;
  z-index: 100;
  top: 0;
}

td {
  /* Not required only for visualizing */
  padding: 1em;
}
<table>
  <thead>
    <tr>
      <th>Col1</th>
      <th>Col2</th>
      <th>Col3</th>
    </tr>
  </thead>
  <tbody>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>david</td>
       <td>castro</td>
       <td>rocks!</td>
     </tr>
  </tbody>
</table>


1
Teşekkürler David, bu soruda bulduğum en güzel yaklaşım
Tomasz Smykowski

0

Yaptığınız konsept kanıtı harikaydı! Ancak ben de çok iyi çalışıyor gibi görünüyor bu jQuery eklentisi bulundu . Umarım yardımcı olur!


Farklı bir özellik uygulamış gibi görünüyor . Orijinal sorumda dediğim gibi: "Not: Üstbilgiler kaydırılmazken tablo veri alanının kaydırılabilir hale getirildiği bir çözüm gördüm. Aradığım çözüm bu değil."
Craig McQueen

2
bahsettiğiniz eklentiyi denemek sadece tablo başlığımı bozdu. Kullanamadı.
pavel_kazlou

0

Bir tarayıcıda harika olanın diğerlerinde işe yaramaması sinir bozucudur. Aşağıdakiler Firefox'ta çalışır, ancak Chrome veya IE'de çalışmaz:

<table width="80%">

 <thead>

 <tr>
  <th>Column 1</th>
  <th>Column 2</th>
  <th>Column 3</th>
 </tr>

 </thead>

 <tbody style="height:50px; overflow:auto">

  <tr>
    <td>Cell A1</td>
    <td>Cell B1</td>
    <td>Cell C1</td>
  </tr>

  <tr>
    <td>Cell A2</td>
    <td>Cell B2</td>
    <td>Cell C2</td>
  </tr>

  <tr>
    <td>Cell A3</td>
    <td>Cell B3</td>
    <td>Cell C3</td>
  </tr>

 </tbody>

</table>

4
Firefox 8.0'da deniyorum ve hiçbir şey yapmıyor gibi görünüyor. Bu ne işe yarıyor?
Craig McQueen

Nedir px? Bir görüntü cihazı 72 dpi'ye sahip olduğunda 90'ıncı kişiler tarafından kullanılan eski birim mi?
ceving

Kabul ediyorum: Çok sinir bozucu, Ne yazık ki tarayıcı geliştiricileri her durumda standartlara uymuyor ... ve birkaç yıl önce daha da kötüydü! Şimdi bazı sorunlar çözüldü ve daha fazla tarayıcı daha standart bir şekilde davranıyor, ancak yine de birçok adımın yapılması gerekiyor: umut edelim ve dua edelim :-)
willy wonka
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.