WEBシステムを構築する場合に、ユーザビリティを考慮したユーザーインターフェースを検討する場合の参考情報です。
特に業務系のWEBシステムでは、データを検索して一覧表示する画面を多様することは多いと思ます。
簡単にやるなら、検索結果をHTMLのtableタグでレンダリングして表示すればよいのですが、表の列や行が非常に多い場合はブラウザのスクロールバーでスクロールして見せたとしても、列や行の見出しタイトルもスクロールされてしまって、現在どのデータを見ているか分かりにくい時もあります。
特にエクセルの使い方に慣れている方だと、
「エクセルのように『ウィンドウ枠の固定』みたいにできないの?」
という要望をいただくことも少なくありません。
そこで、表の列、表の行、表の中身(行列)をそれぞれ別のtableタグでレンダリングして、javascriptのscrollイベント処理でエクセルのウィンドウ枠の固定のような動きをHTMLで作成するサンプルです。
行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
|
列A
|
列B
|
列C
|
列D
|
列E
|
列F
|
列G
|
列H
|
列I
|
列J
|
列K
|
列L
|
列M
|
列N
|
列O
|
列P
|
列Q
|
列R
|
列S
|
列T
|
列U
|
列V
|
列W
|
列X
|
列Y
|
列Z
|
---|
1A
|
1B
|
1C
|
1D
|
1E
|
1F
|
1G
|
1H
|
1I
|
1J
|
1K
|
1L
|
1M
|
1N
|
1O
|
1P
|
1Q
|
1R
|
1S
|
1T
|
1U
|
1V
|
1W
|
1X
|
1Y
|
1Z
|
2A
|
2B
|
2C
|
2D
|
2E
|
2F
|
2G
|
2H
|
2I
|
2J
|
2K
|
2L
|
2M
|
2N
|
2O
|
2P
|
2Q
|
2R
|
2S
|
2T
|
2U
|
2V
|
2W
|
2X
|
2Y
|
2Z
|
3A
|
3B
|
3C
|
3D
|
3E
|
3F
|
3G
|
3H
|
3I
|
3J
|
3K
|
3L
|
3M
|
3N
|
3O
|
3P
|
3Q
|
3R
|
3S
|
3T
|
3U
|
3V
|
3W
|
3X
|
3Y
|
3Z
|
4A
|
4B
|
4C
|
4D
|
4E
|
4F
|
4G
|
4H
|
4I
|
4J
|
4K
|
4L
|
4M
|
4N
|
4O
|
4P
|
4Q
|
4R
|
4S
|
4T
|
4U
|
4V
|
4W
|
4X
|
4Y
|
4Z
|
5A
|
5B
|
5C
|
5D
|
5E
|
5F
|
5G
|
5H
|
5I
|
5J
|
5K
|
5L
|
5M
|
5N
|
5O
|
5P
|
5Q
|
5R
|
5S
|
5T
|
5U
|
5V
|
5W
|
5X
|
5Y
|
5Z
|
6A
|
6B
|
6C
|
6D
|
6E
|
6F
|
6G
|
6H
|
6I
|
6J
|
6K
|
6L
|
6M
|
6N
|
6O
|
6P
|
6Q
|
6R
|
6S
|
6T
|
6U
|
6V
|
6W
|
6X
|
6Y
|
6Z
|
7A
|
7B
|
7C
|
7D
|
7E
|
7F
|
7G
|
7H
|
7I
|
7J
|
7K
|
7L
|
7M
|
7N
|
7O
|
7P
|
7Q
|
7R
|
7S
|
7T
|
7U
|
7V
|
7W
|
7X
|
7Y
|
7Z
|
8A
|
8B
|
8C
|
8D
|
8E
|
8F
|
8G
|
8H
|
8I
|
8J
|
8K
|
8L
|
8M
|
8N
|
8O
|
8P
|
8Q
|
8R
|
8S
|
8T
|
8U
|
8V
|
8W
|
8X
|
8Y
|
8Z
|
9A
|
9B
|
9C
|
9D
|
9E
|
9F
|
9G
|
9H
|
9I
|
9J
|
9K
|
9L
|
9M
|
9N
|
9O
|
9P
|
9Q
|
9R
|
9S
|
9T
|
9U
|
9V
|
9W
|
9X
|
9Y
|
9Z
|
10A
|
10B
|
10C
|
10D
|
10E
|
10F
|
10G
|
10H
|
10I
|
10J
|
10K
|
10L
|
10M
|
10N
|
10O
|
10P
|
10Q
|
10R
|
10S
|
10T
|
10U
|
10V
|
10W
|
10X
|
10Y
|
10Z
|
11A
|
11B
|
11C
|
11D
|
11E
|
11F
|
11G
|
11H
|
11I
|
11J
|
11K
|
11L
|
11M
|
11N
|
11O
|
11P
|
11Q
|
11R
|
11S
|
11T
|
11U
|
11V
|
11W
|
11X
|
11Y
|
11Z
|
12A
|
12B
|
12C
|
12D
|
12E
|
12F
|
12G
|
12H
|
12I
|
12J
|
12K
|
12L
|
12M
|
12N
|
12O
|
12P
|
12Q
|
12R
|
12S
|
12T
|
12U
|
12V
|
12W
|
12X
|
12Y
|
12Z
|
13A
|
13B
|
13C
|
13D
|
13E
|
13F
|
13G
|
13H
|
13I
|
13J
|
13K
|
13L
|
13M
|
13N
|
13O
|
13P
|
13Q
|
13R
|
13S
|
13T
|
13U
|
13V
|
13W
|
13X
|
13Y
|
13Z
|
14A
|
14B
|
14C
|
14D
|
14E
|
14F
|
14G
|
14H
|
14I
|
14J
|
14K
|
14L
|
14M
|
14N
|
14O
|
14P
|
14Q
|
14R
|
14S
|
14T
|
14U
|
14V
|
14W
|
14X
|
14Y
|
14Z
|
15A
|
15B
|
15C
|
15D
|
15E
|
15F
|
15G
|
15H
|
15I
|
15J
|
15K
|
15L
|
15M
|
15N
|
15O
|
15P
|
15Q
|
15R
|
15S
|
15T
|
15U
|
15V
|
15W
|
15X
|
15Y
|
15Z
|
16A
|
16B
|
16C
|
16D
|
16E
|
16F
|
16G
|
16H
|
16I
|
16J
|
16K
|
16L
|
16M
|
16N
|
16O
|
16P
|
16Q
|
16R
|
16S
|
16T
|
16U
|
16V
|
16W
|
16X
|
16Y
|
16Z
|
17A
|
17B
|
17C
|
17D
|
17E
|
17F
|
17G
|
17H
|
17I
|
17J
|
17K
|
17L
|
17M
|
17N
|
17O
|
17P
|
17Q
|
17R
|
17S
|
17T
|
17U
|
17V
|
17W
|
17X
|
17Y
|
17Z
|
18A
|
18B
|
18C
|
18D
|
18E
|
18F
|
18G
|
18H
|
18I
|
18J
|
18K
|
18L
|
18M
|
18N
|
18O
|
18P
|
18Q
|
18R
|
18S
|
18T
|
18U
|
18V
|
18W
|
18X
|
18Y
|
18Z
|
19A
|
19B
|
19C
|
19D
|
19E
|
19F
|
19G
|
19H
|
19I
|
19J
|
19K
|
19L
|
19M
|
19N
|
19O
|
19P
|
19Q
|
19R
|
19S
|
19T
|
19U
|
19V
|
19W
|
19X
|
19Y
|
19Z
|
20A
|
20B
|
20C
|
20D
|
20E
|
20F
|
20G
|
20H
|
20I
|
20J
|
20K
|
20L
|
20M
|
20N
|
20O
|
20P
|
20Q
|
20R
|
20S
|
20T
|
20U
|
20V
|
20W
|
20X
|
20Y
|
20Z
|
21A
|
21B
|
21C
|
21D
|
21E
|
21F
|
21G
|
21H
|
21I
|
21J
|
21K
|
21L
|
21M
|
21N
|
21O
|
21P
|
21Q
|
21R
|
21S
|
21T
|
21U
|
21V
|
21W
|
21X
|
21Y
|
21Z
|
22A
|
22B
|
22C
|
22D
|
22E
|
22F
|
22G
|
22H
|
22I
|
22J
|
22K
|
22L
|
22M
|
22N
|
22O
|
22P
|
22Q
|
22R
|
22S
|
22T
|
22U
|
22V
|
22W
|
22X
|
22Y
|
22Z
|
23A
|
23B
|
23C
|
23D
|
23E
|
23F
|
23G
|
23H
|
23I
|
23J
|
23K
|
23L
|
23M
|
23N
|
23O
|
23P
|
23Q
|
23R
|
23S
|
23T
|
23U
|
23V
|
23W
|
23X
|
23Y
|
23Z
|
24A
|
24B
|
24C
|
24D
|
24E
|
24F
|
24G
|
24H
|
24I
|
24J
|
24K
|
24L
|
24M
|
24N
|
24O
|
24P
|
24Q
|
24R
|
24S
|
24T
|
24U
|
24V
|
24W
|
24X
|
24Y
|
24Z
|
25A
|
25B
|
25C
|
25D
|
25E
|
25F
|
25G
|
25H
|
25I
|
25J
|
25K
|
25L
|
25M
|
25N
|
25O
|
25P
|
25Q
|
25R
|
25S
|
25T
|
25U
|
25V
|
25W
|
25X
|
25Y
|
25Z
|
26A
|
26B
|
26C
|
26D
|
26E
|
26F
|
26G
|
26H
|
26I
|
26J
|
26K
|
26L
|
26M
|
26N
|
26O
|
26P
|
26Q
|
26R
|
26S
|
26T
|
26U
|
26V
|
26W
|
26X
|
26Y
|
26Z
|
27A
|
27B
|
27C
|
27D
|
27E
|
27F
|
27G
|
27H
|
27I
|
27J
|
27K
|
27L
|
27M
|
27N
|
27O
|
27P
|
27Q
|
27R
|
27S
|
27T
|
27U
|
27V
|
27W
|
27X
|
27Y
|
27Z
|
28A
|
28B
|
28C
|
28D
|
28E
|
28F
|
28G
|
28H
|
28I
|
28J
|
28K
|
28L
|
28M
|
28N
|
28O
|
28P
|
28Q
|
28R
|
28S
|
28T
|
28U
|
28V
|
28W
|
28X
|
28Y
|
28Z
|
29A
|
29B
|
29C
|
29D
|
29E
|
29F
|
29G
|
29H
|
29I
|
29J
|
29K
|
29L
|
29M
|
29N
|
29O
|
29P
|
29Q
|
29R
|
29S
|
29T
|
29U
|
29V
|
29W
|
29X
|
29Y
|
29Z
|
30A
|
30B
|
30C
|
30D
|
30E
|
30F
|
30G
|
30H
|
30I
|
30J
|
30K
|
30L
|
30M
|
30N
|
30O
|
30P
|
30Q
|
30R
|
30S
|
30T
|
30U
|
30V
|
30W
|
30X
|
30Y
|
30Z
|
コメントを残す