이전에 HTML 틀고정하기 관련 포스팅을 한 적이 있었습니다.
이번 포스팅을 하기 위해 이전에 만들었던 소스를 편집해서 직접 iframe으로 호출해서 확인 해보았습니다.
세로방향은 깔끔하게 고정이 된 것을 확인할 수 있었습니다.
<세로방향 스크롤>
하지만 가로 방향으로 스크롤 하면 어떨까요?
<가로방향 스크롤>
아랫테이블이 쇼를 하던 말던 홀로 고고하게 멈춰 있는 헤더를 볼 수 있었습니다.
실제 작업할 때도 이 때문에 당시 테이블 고정 작업을 다시 진행했었는데요.
지금부터 어떻게 만들었는지 설명하겠습니다.
* * * * * *
가로·세로 방향 스크롤 할때 깔끔하게 테이블 틀 고정하기
깔끔하게 테이블 헤더의 틀고정을 하기 위해서는 iframe을 통한 호출이 필요합니다.
1) 서브페이지 - 테이블 코드
두개의 테이블을 사용하는 방식은 앞서의 포스팅과 동일합니다.
다만 기존 방식과 다르게 몇가지 내용이 삭제 또는 추가 되었습니다. 아래 내용을 참고하세요.
-. overflow 사용 금지 : 테이블마다 각각 스크롤바가 생기면 따로 움직입니다. overflow는 iframe에서 한 번만 허용하면 됩니다.
-. JQuery 호출 : 가로 스크롤 할 때 틀고정이 적용된 헤더도 움직이게 하려면 JQuery의 명령어를 사용하는게 깔끔합니다.
-. Script 작성 : .틀고정이 적용된 헤더테이블(table1)의 left position값 변경.
아래 코드는 스크롤이 움직일 때마다 left값이 같이 변하도록 작성된 코드입니다. 이를 추가해주면 됩니다.
<script>
$(window).scroll(function(){
$(".table1").css("left",0-$(this).scrollLeft());
})
</script>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | <style> * {margin:0; padding:0;} .wrap{width:600px; height: 200px; border:0px solid #00c; color:rgb(0, 0, 0); position: relative;} .table1, .table2{border:1px solid #000; width:100%; background:#E1E1E1; text-align: center; font-size: 20px;} .table1 th{background:#5c5c5c;} .table1 th,.table2 td{border:1px solid rgba(0, 0, 0, 0.596); height:20px;} .wrap .table1{position: fixed; width:inherit; z-index: 100;} .table2{position: absolute; top:28px; width:inherit;} .tbwid_10{width:10%;} .tbwid_20{width:20%;} .tbwid_30{width:30%;} </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="wrap"> <table class="table1" cellpadding=0 cellspacing=0 border=0> <tr> <th class="tbwid_20">구분</th> <th class="tbwid_30">품목</th> <th class="tbwid_10">수량</th> <th class="tbwid_20">단가</th> <th class="tbwid_20">구매금액</th> </tr> </table> <table class="table2" cellpadding=0 cellspacing=0 border=0> <tr> <td class="tbwid_20">게임</th> <td class="tbwid_30">배틀그라운드</td> <td class="tbwid_10">2</td> <td class="tbwid_20">20,000</td> <td class="tbwid_20">40,000</td> </tr> <tr> <td>게임</td> <td>오버워치</td> <td>1</td> <td>32,000</td> <td>32,000</td> </tr> <tr> <td>게임</td> <td>스타크래프트2</td> <td>2</td> <td>28,000</td> <td>56,000</td> </tr> <tr> <td>게임</td> <td>드래곤퀘스트11</td> <td>1</td> <td>40,000</td> <td>40,000</td> </tr> <tr> <td>게임</td> <td>배틀그라운드</td> <td>2</td> <td>20,000</td> <td>40,000</td> </tr> <tr> <td>게임</td> <td>오버워치</td> <td>1</td> <td>32,000</td> <td>32,000</td> </tr> <tr> <td>게임</td> <td>스타크래프트2</td> <td>2</td> <td>28,000</td> <td>56,000</td> </tr> <tr> <td>게임</td> <td>드래곤퀘스트11</td> <td>1</td> <td>40,000</td> <td>40,000</td> </tr> <tr> <td>게임</td> <td>배틀그라운드</td> <td>2</td> <td>20,000</td> <td>40,000</td> </tr> <tr> <td>게임</td> <td>오버워치</td> <td>1</td> <td>32,000</td> <td>32,000</td> </tr> <tr> <td>게임</td> <td>스타크래프트2</td> <td>2</td> <td>28,000</td> <td>56,000</td> </tr> <tr> <td>게임</td> <td>드래곤퀘스트11</td> <td>1</td> <td>40,000</td> <td>40,000</td> </tr> </table> </div> </div> <script> $(window).scroll(function(){ $(".table1").css("left",0-$(this).scrollLeft()); }) </script> | cs |
2) 메인 페이지 - iframe 코드
실제로 실무에서는 더 복잡하겠지만 지금은 예시만을 보여주고자 iframe만을 넣은 페이지입니다.
틀고정이 제대로 동작하는지 확인하기 위해 ifame의 width 값과 height 값을 실제 테이블보다 작게 만들었습니다.
1 2 3 4 5 6 7 8 | <style> * {margin:0; padding:0;} </style> <iframe width="400" hight="200" frameborder="1" src="fixed_table.html"> </iframe> | cs |
3) 정리. 테스트 이미지 & 첨부파일
앞서 올렸던 포스트는 몇몇 시행착오 상태에서 틀고정 하는 과정을 다뤘었는데 엉성하게 만들어진 부분이 많았습니다.
원래 이 포스팅을 바로 할 생각이었는데 방치하다가 이제서야 하게 되었습니다.
당시에 틀고정을 해달라는 요청사항에 시행착오를 참 많이 겪었던 기억이 나네요.
누군가에게 도움이 되기를 바랍니다.
<세로방향 스크롤>
<가로방향 스크롤>
앞서 작성한 코드를 토대로 만든 실제 HTML파일 입니다. 필요하신 분은 다운로드하세요.
'Web 이야기 > 티스토리&HTML&CSS' 카테고리의 다른 글
티스토리 Poster 스킨 꾸미기 3 (썸네일 이미지 테두리 넣기) (0) | 2019.02.24 |
---|---|
티스토리 Poster 스킨 꾸미기 2 (사이드 메뉴 버튼 고정) (1) | 2019.02.21 |
티스토리 Poster 스킨 꾸미기 1-2 (고정 배경 이미지 추가) (0) | 2019.02.20 |
티스토리 Poster 스킨 꾸미기 1-1 (고정 배경 이미지 넣기) (4) | 2019.02.19 |
티스토리 꾸미기 - FastBoot 텍스트로고에 홈바로가기 기능 넣기 (0) | 2018.09.20 |