큰 테이블을 볼 때 항상 HTML 테이블 헤더가 창 상단에 표시됩니다.


169

단일 기능을 추가하기 위해 HTML 테이블의 프레젠테이션을 "조정"할 수 있기를 원합니다. 페이지를 아래로 스크롤하여 테이블이 화면에 있지만 머리글 행이 화면에 표시되지 않도록하려면 머리글을 유지하고 싶습니다. 보기 영역 상단에 표시됩니다.

이것은 개념적으로 Excel의 "고정 창"기능과 같습니다. 그러나 HTML 페이지에는 여러 테이블이 포함될 수 있으며 현재보기 인 테이블에서만 볼 수 있습니다.

참고 : 헤더가 스크롤되지 않는 동안 테이블 데이터 영역을 스크롤 할 수있는 솔루션을 보았습니다. 그것은 내가 찾고있는 해결책이 아닙니다.


페이지가 표를 사용하여 디자인 되었습니까? 먼저 div로 변환 할 수 없으며 테이블 데이터를 테이블에 그대로 남겨 둘 수 있습니까?
잠금

6
나는 최근에 이것을 수행하는 플러그인을 작성했다 : programmingdrunk.com/floatThead
mkoryak

1
아래에서 최고 투표 솔루션과 그 파생 상품 외에도 위의 @mkoryak 플러그인도 상당히 좋습니다. "쇼핑"을 마치기 전에 이것도 살펴보십시오.
DanO

고마워 dan :) 나는 다음 릴리스도 계획된 킥
어스

나는 @mkoryak floatThead 플러그인을 두 번째로-신속하게 통합 할 수있었습니다. 플러그인 주셔서 감사합니다!
w5m

답변:


67

jQuery.floatThead ( 데모 사용 가능 )를 확인하십시오. 매우 훌륭하고 DataTables 와 함께 작업 할 수 있으며 overflow: auto컨테이너 내부에서도 작업 할 수 있습니다 .


예, 가로 스크롤, 창 스크롤, 내부 스크롤 및 창 크기 조정과 함께 작동합니다.
mkoryak

작동하는 코드로 바이올린을 추가 할 수 있습니까? (사이트에 있음을 알고 있습니다 ...)
Michel Ayres

12
나는 거대한 데모 / 문서 페이지를 만들었습니다. 왜 바이올린이 필요한가요?
mkoryak

5
@MustModify stackoverflow는 나에게 질문을하기에 좋은 곳이 아닙니다. 그것이 작동하는 방법에 대한 질문 일지라도 github에 대한 문제를보고하십시오. 나는 보통 하루 안에 거기에 응답합니다. 여기에 아마 :) 년 이내에 응답 병
mkoryak

1
@MustModify 그 가치가 무엇인지, 예제의 테이블에있는 클래스는 관련이 없습니다. 내 문서에서 알 수 있듯이 플러그인은 CSS 나 클래스가 필요하지 않습니다.
mkoryak

135

jQuery를 사용하여 개념 증명 솔루션을 만들었습니다 .

여기에서 샘플을보십시오.

이제이 코드를 Mercurial bitbucket 저장소에 있습니다. 기본 파일은 tables.html입니다.

테이블에 앵커가 있고 브라우저에서 지정된 앵커로 URL을 열면 페이지가로드 될 때 앵커가있는 행이 부동 헤더에 의해 가려 질 수 있습니다.

2017-12-11 업데이트 : 현재 Firefox (57) 및 Chrome (63)에서는 작동하지 않습니다. 언제, 왜 이것이 작동을 멈췄는지, 어떻게 고쳐야하는지 잘 모르겠습니다. 그러나 지금, 나는 Hendy Irawan의 대답 이 우수 하다고 생각합니다 .


내가하고있는 일을 위해 이것이 필요했습니다. 큰 도움, 감사합니다. 내 경우 스크롤 창이 html 내의 div이므로 창을 사용하지 않았습니다. 그래서 테이블 헤더가 페이지에서 더 아래로 점프하여 결국 페이지에서 사라지는 코드와 마찬가지로 변경 floatingHeaderRow.css("top", Math.min(scrollTop - offset.top, $(this).height() - floatingHeaderRow.height()) + "px");해야 floatingHeaderRow.css("top", scrollTop + "px");했습니다.
Nalum

1
내 테이블에 이것을 구현하려고합니다. 헤더 너비에 문제가 있습니다. 행의 데이터는 임의 길이이므로 db에서 가져온 값입니다. 스크롤하기 전에 헤더는 자동 상속 크기로되어 있지만 일단 스크롤하면 헤더 이름을 감쌀 수 있도록 헤더의 크기가 조정되므로 너비가 훨씬 더 작아서 실제로 해당 헤더의 상단에서 추적되지 않습니다. 기둥. 이 문제를 어떻게 해결할 수 있습니까?
JonYork

흠, 난 당신의 설명에 따라 확실하지 않습니다. 나는 1) 가능하다면 온라인으로 예제를 보여줄 것을 제안한다. 2) StackOverflow에 대한 질문으로 요청하십시오.
Craig McQueen

@ JonYork 정확히 같은 문제가있었습니다. 내 문제는 <th> 대신 헤더에 <td>를 사용하여 존재하지 않는 <th>에 각 열의 너비를 적용 할 수 없었습니다 ( // Copy cell widths from original header코드 부분 참조 ). @Craig McQueen, 아무도이 실수를하지 않도록 답을 수정하십시오.
aexl

@CraigMcQueen 멋진 코드를 사용하면 (감사합니다) 두 번째 테이블에서 다른 탭 (jQuery 탭 플러그인) 뒤에 있습니다. 이견있는 사람? 헤더는 위치 열을 따르지 않고 맨 왼쪽에 배치됩니다. 그러나 첫 번째 jQuery 탭의 테이블에서 완벽하게 작동합니다.
Richard Żak

68

크레이그, 나는 당신의 코드를 조금 수정하고 (현재 위치 : 고정을 사용하는 몇 가지 다른 것들 중에서) jQuery 플러그인으로 래핑했다.

여기에서 사용해보십시오 : http://jsfiddle.net/jmosbech/stFcx/

그리고 여기에서 소스를 얻으십시오 : https://github.com/jmosbech/StickyTableHeaders


1
jQuery 플러그인을 만드는 것이 좋습니다. 몇 가지 질문 : (1) 가로 스크롤과 잘 작동합니까? (2) 테이블 하단이 창 상단에서 스크롤되도록 아래로 스크롤 할 때 어떻게 작동합니까? 이 예에서는 해당 사례를 테스트 할 수 없습니다.
Craig McQueen

귀하의 jsfiddle 예제는 tableorter와 잘 작동하지만 github의 코드는 그렇지 않습니다. tableorter 코드를 수정해야 했습니까?
ericslaw

Craig, 수평 스크롤은 스크롤과 크기 조정에서 헤더가 가로와 세로로 모두 재배치되므로 문제가되지 않습니다. 두 번째 질문에 관해서는 : 테이블이 뷰포트를 떠날 때 헤더가 숨겨져 있습니다.
jmosbech

에릭, 이상해 Github에서 /demo/tablesorter.htm을 열려고 했습니까? tableorter 코드를 수정하지는 않았지만 제대로 작동하려면 tableorter 전에 StickyTableHeader 플러그인을 적용해야합니다.
jmosbech

2
수평 스크롤은 작동하지 않습니다. 상당히 거리를 스크롤 한 후에는 화면에서 스크롤 할 때 테이블의 일부로 정상적으로 배치 될 때보 다 화면 왼쪽에서 더 왼쪽에 배치됩니다.
Nathan Phillips

16

최신 css3 호환 브라우저 ( 브라우저 지원 : https://caniuse.com/#feat=css-sticky )를 대상으로하는 경우을 사용할 수 있습니다 position:sticky.이 경우 JS가 필요하지 않으며 정렬되지 않은 테이블 레이아웃이 손상되지 않습니다. 그리고 같은 열의 td. 또한 제대로 작동하기 위해 고정 열 너비가 필요하지 않습니다.

단일 헤더 행의 예 :

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

행이 1 ~ 2 개인 광고의 경우 다음과 같이 사용할 수 있습니다.

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 */
}

첫 번째 행의 높이 (+ 여백 + 테두리 + 패딩 (있는 경우))와 일치하도록 픽셀 수를 변경하는 마지막 자식 의 top 속성으로 비트를 재생해야 할 수도 있으므로 두 번째 행은 바로 아래로 붙어 있습니다. 첫 번째를 울리십시오.

또한 같은 페이지에 둘 이상의 테이블이 있어도 두 솔루션 모두 작동합니다. th각 위치 의 요소는 상단 위치가 CSS 정의에 표시된 위치에서 고정되기 시작하고 모든 테이블이 아래로 스크롤되면 사라집니다. 따라서 더 많은 테이블이 있으면 모두 같은 방식으로 아름답게 작동합니다.

왜 마지막 아이 사용하기 전에 먼저 아이를 한 후에 는 CSS에?

CSS 규칙은 CSS 파일에 작성하는 것과 동일한 순서로 브라우저에서 렌더링되기 때문에 thead 요소에 단 하나의 행이 있으면 첫 번째 행도 동시에 마지막 행이며 첫 번째 자식 규칙이 필요합니다. 마지막 자식을 재정의합니다. 그렇지 않으면 원하지 않는 상단 여백에서 30px 행의 오프셋을 갖게됩니다.

알려진 위치 문제 : 고정은 광고 요소 또는 테이블 행에서 작동하지 않는다는 것입니다. 요소를 타겟팅해야합니다. 이 문제를 호핑하면 향후 브라우저 버전에서 해결 될 것입니다.


첫 번째 예제는 Firefox (61)에서 작동하지 않는 것 같습니다. 그러나 thead에 위치 고정이 설정되어 있으면 설정됩니다.
ewh

1
thead tr+tr th두 번째 행을 타겟팅 할 수 있습니다.
Teepeemm

5

가능한 대안

JS 플로팅 테이블 헤더

js-floating-table-headers (Google 코드)

드루팔에서

Drupal 6 사이트가 있습니다. 관리자 "모듈"페이지에 있었고 테이블에 정확한 기능이 있다는 것을 알았습니다.

코드를 보면이라는 파일로 구현 된 것 같습니다 tableheader.js. 클래스가있는 모든 테이블에 기능을 적용합니다 sticky-enabled.

Drupal 사이트의 경우 tableheader.js사용자 콘텐츠에 대해 해당 모듈을 그대로 사용할 수 있기를 바랍니다 . tableheader.jsDrupal의 사용자 콘텐츠 페이지에없는 것 같습니다. Drupal 테마를 사용할 수 있도록 수정하는 방법을 묻는 포럼 메시지 를 게시했습니다 . 응답에 따르면, tableheader.js사용 Drupal 테마에 추가 할 수 있습니다 drupal_add_js()년대 테마 template.php로 다음과 같습니다 :

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

귀하의 Google 코드 링크는 매우 유용했습니다.
Vilius Gaidelis

5

최근에이 문제가 발생했습니다. 불행히도, 나는 머리글과 몸통에 대한 두 개의 테이블을 수행해야했습니다. 아마도 가장 좋은 방법은 아니지만 여기에갑니다.

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

이것은 나를 위해 일했습니다. 아마도 우아한 방법은 아니지만 작동합니다. 더 나은 것을 할 수 있는지 조사해 볼 것이지만 여러 테이블을 허용합니다.

오버 플로우 특성을 읽어 보고 필요에 맞는지 확인하십시오.


흠 작동하지 않습니다, 나는 이것을 고치려고 노력하지만 접근 방식은 여전히 ​​남아 있습니다. overflow : auto proprety
Gab Royer

귀하의 솔루션과 그 단순성에 감사하지만 내 질문에 "참고 : 헤더가 스크롤되지 않는 동안 테이블 데이터 영역을 스크롤 할 수있는 솔루션을 보았습니다.이 솔루션은 내가 찾고있는 솔루션이 아닙니다."
Craig McQueen

@GabRoyer 참조한 w3school 페이지가 존재하지 않습니다.
Farhan

그들은 그것을 움직 인 것 같습니다. 수정 됨
Gab Royer

이 방법의 또 다른 문제는 일부 열을 다른 내용에 적용해야하는 경우 해당 열 머리글과의 정렬이 끊어 질 위험이 있다는 것입니다. IMHO 열과 상대 헤드의 완벽한 정렬을 유지하는 컨텐츠의 동적 관리를 허용하는 접근 방식으로이 문제에 직면하는 것이 좋습니다. 따라서 IMHO position = sticky 는 갈 길입니다.
willy wonka

3

이것은 테이블에 끈적 끈적한 헤더를 갖는 것이 까다로운 일입니다. 나는 asp : GridView 와 동일한 요구 사항을 가지고 있었고 gridview에 끈적 끈적한 헤더가 있다고 생각했습니다. 사용할 수있는 솔루션이 많이 있으며 모든 솔루션을 시도하는 데 3 일이 걸렸지 만 어느 것도 만족할 수 없었습니다.

이러한 솔루션의 대부분에 직면 한 주요 문제는 정렬 문제였습니다. 헤더를 플로팅하려고하면 헤더 셀과 바디 셀의 정렬이 어긋납니다.

일부 솔루션을 사용하면 헤더가 본문의 처음 몇 행에 겹치는 문제가 발생하여 본문 행이 부동 헤더 뒤에 숨겨집니다.

이제는 이것을 달성하기 위해 내 자신의 논리를 구현해야했지만 완벽한 솔루션으로 간주하지는 않지만 누군가에게 도움이 될 수 있습니다.

아래는 샘플 테이블입니다.

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

참고 : 테이블은 클래스 속성이 'table-holder'인 DIV로 랩핑됩니다.

아래는 html 페이지 헤더에 추가 한 JQuery 스크립트입니다.

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

마지막에는 채색 목적의 CSS 클래스가 있습니다.

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

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

따라서이 논리의 전체 아이디어는 테이블을 테이블 홀더 div에 배치하고 페이지가로드 될 때 클라이언트 측에서 해당 홀더의 복제본을 만드는 것입니다. 이제 클론 홀더 내부의 테이블 본문을 숨기고 나머지 헤더 부분을 원래 헤더에 놓습니다.

동일한 솔루션이 asp : gridview에서도 작동합니다. gridview에서이를 달성하려면 두 단계를 더 추가해야합니다.

  1. 웹 페이지의 gridview 객체의 OnPrerender 이벤트에서 머리글 행의 테이블 섹션을 TableHeader와 동일하게 설정하십시오.

    if (this.HeaderRow != null)
    {
        this.HeaderRow.TableSection = TableRowSection.TableHeader;
    }
  2. 그리고 당신의 그리드를로 감싸십시오 <div class="table-holder"></div>.

참고 : 헤더에 클릭 가능한 컨트롤이있는 경우 복제 된 헤더에서 발생한 이벤트를 원래 헤더로 전달하기 위해 더 많은 jQuery 스크립트를 추가해야 할 수도 있습니다. 이 코드는 jmosbech에서 생성 한 jQuery sticky-header 플러그인에서 이미 사용 가능합니다.


좋은 노력을 위해서는 +1이지만, 많은 데이터를 가진 큰 테이블의 경우, 모든 것을 복제하는 것은 꽤 나쁩니다 ... 로딩 시간이 두 배가 될 것입니다.
khaverim

2

섹션 display: fixed에서 사용하면 thead작동하지만 현재 테이블에서만 작동하므로 JavaScript의 도움이 필요합니다. 브라우저 비 호환성의 주요 영역 중 하나 인 뷰포트를 기준으로 요소의 스크롤 위치와 위치를 파악해야하기 때문에 까다로울 것입니다.

인기있는 JavaScript 프레임 워크 (jQuery, MooTools, YUI 등)를보고 원하는 작업을 수행 할 수 있는지 또는 원하는 작업을 더 쉽게 수행 할 수 있는지 확인하십시오.


1
충고 감사합니다. jQuery를 사용하여 솔루션을 만들었습니다. 내 답변을 참조하십시오.
Craig McQueen

나는 이것을 시도하고 디스플레이보다는 위치를 의미한다고 생각하지만 chome에서 thead에는 효과가 없었습니다.
ericslaw

@ericslaw Ack-그렇습니다 position: fixed. Chrome에서 작동하지 않아 죄송합니다.
staticsan

너비 스타일을 무시하여 헤더를 엉망으로
만들었

2

전체 화면 테이블을 사용하는 경우 th를 display : fixed; 그리고 상단 : 0; 또는 CSS를 통해 매우 유사한 접근법을 시도하십시오.

최신 정보

iframe (html4.0)으로 작동하는 솔루션을 빠르게 구축하십시오. 이 예는 표준을 준수하지 않지만 쉽게 수정할 수 있습니다.

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, true ...하지만 요청이 크게 혼란스럽게 들립니다. 우리가 그것을 이해하지 못했거나, asker는 그가 원하는 것을 완전히 이해하지 못합니다.
Sampson

여기에 몇 가지 자바 스크립트를 사용하여 다른 솔루션입니다 imaputz.com/cssStuff/bigFourVersion.html
merkuro

2

CSS를 사용하는 가장 간단한 답변 : 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
고마워 David, 그것은 내가이 질문에서 찾은 가장 좋은 방법입니다
Tomasz Smykowski

0

당신이 만든 그 개념 증명 은 훌륭했습니다! 그러나 또한 이 jQuery 플러그인 이 매우 잘 작동하는 것으로 나타났습니다 . 그것이 도움이되기를 바랍니다!


마치 다른 기능을 구현하는 것처럼 보입니다 . 원래 질문에서 언급했듯이 "참고 : 헤더가 스크롤되지 않는 동안 테이블 데이터 영역을 스크롤 할 수있는 솔루션이 하나 있습니다. 이것이 제가 찾는 솔루션이 아닙니다."
Craig McQueen

2
플러그인을 사용하려고하면 방금 내 테이블 헤더를 엉망으로 만들었습니다. 그것을 사용할 수 없었습니다.
pavel_kazlou

0

한 브라우저에서 잘 작동하는 것이 다른 브라우저에서는 작동하지 않는 것이 실망 스럽습니다. 다음은 Firefox에서는 작동하지만 Chrome 또는 IE에서는 작동하지 않습니다.

<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에서 시도하고 있으며 아무것도하지 않는 것 같습니다. 무엇을합니까?
Craig McQueen

무엇입니까 px? 디스플레이 장치를 72dpi로 사용했을 때 90 일에 사람들이 사용한 레거시 단위입니까?
ceving

동의합니다 : 매우 실망 스럽습니다. 불행히도 브라우저 개발자는 모든 상황에서 표준을 존중하지 않습니다. 몇 년 전에는 더 악화되었습니다! 이제 몇 가지 문제가 해결되었고 더 많은 브라우저가보다 표준화 된 방식으로 작동하지만 아직 많은 단계를 수행해야합니다. 희망과기도합시다 :-)
willy wonka
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.