Quantcast
Channel: CSSタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8920

【IE対応】tableの見出しを固定してスクロールする

$
0
0

したいこと

tableの見出しを固定してスクロールさせたい。

image (37).png

対象ブラウザ

  • IE 
  • chorme
  • Edge
  • FireFox
  • Safari

問題

調べてみると、「position:sticky」を使った記述があるが
これだとIEでは動作しない。

解決方法

  • 「position:sticky」の代わりに、「position:fixed」を使う
  • ↑のままだと、一番最初のセルが固定するセルの下に隠れてしまうので、JSで調整する

サンプルコード

CSS

body{margin:0}.c-table{max-width:900px;width:100%;overflow-x:scroll;}table{border-collapse:collapse;text-align:center;vertical-align:middle;margin-bottom:30px;}tableth{background:#ccc;padding:25px5px;position:fixed;←★これleft:0;min-width:60px;min-height:26px;}tabletd{padding:25px5px;min-width:60px;}tableth+td{display:inline-block;padding:0;border:none;}

JS

(function(){constmyFunction=table=>{constaryMax=(a,b)=>Math.max(a,b);constsetWidthPx=(el,px)=>el.style.width=`${px}px`;constths=table.querySelectorAll("th");consttds=table.querySelectorAll("th + td");consttdWidthAry=[];for(constthofths){tdWidthAry.push(th.clientWidth);}lettdWidthMax=tdWidthAry.reduce(aryMax);for(leti=0;i<tds.length;i++){setWidthPx(tds[i],tdWidthMax);setWidthPx(ths[i],tdWidthMax);}};myFunction(document.querySelectorAll("table")[0]);}());

HTML

<divclass="c-table"><table><thead><tr><th>thの文字の長さthの文字の長さ</th><td>&nbsp;</td><td>最初</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td></tr></thead><tbody><tr><th>TableHeader1</th><td>&nbsp;</td><td>最初</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td></tr><tr><th>TableHeader1</th><td>&nbsp;</td><td>最初</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td></tr><tr><th>TableHeader1</th><td>&nbsp;</td><td>最初</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td><td>TableHeader3</th><td>TableHeader4</td></tr></tbody></table></div>

終わりに

cssは各々調整してください。


Viewing all articles
Browse latest Browse all 8920

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>