Locking Grid 表头列头固定的表格

模仿Extjs做了个简单的固定表格,使用4个table实现,效果图如下。

Locking Grid 表头列头固定的表格_第1张图片

下面是html代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>

	<head>
	
	
	</head>
	
	<style>
		body{
			margin:0;
			width:100%;
			height:100%;
			overflow:hidden;
		}
		html{
			width:100%;
			height:100%;
		}
		
		*{
			padding: 0;
			margin: 0;
		}
		
		.design-grid-panel {
			position:relative;
			width: 600px; 
			height: 300px;
			margin-top: 50px;
			margin-left: 50px;
			border: 1px solid #ccc;
			font-size: 13px;
			color: #808080;
			font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
		}
		.design-grid-panel .grid-container{
			float:left;
			overflow: hidden;
			position:relative;
		}
		.design-grid-panel {
			overflow: hidden;
		}
		.design-grid-panel td{
			border-right: 1px solid #DCDFE1;
			border-bottom: 1px solid #DCDFE1;
			-moz-user-select: none;
			-webkit-user-select: none;
			user-select: none;
		}
		.design-grid-panel table {
			position:relative;
			border-collapse: collapse;
			table-layout: fixed;
		}
		.design-grid-panel tr {
			
			height: 30px;
		}
		
		.design-grid-panel td div {
			padding-left: 5px;
			height: 25px;
			line-height: 25px;
			overflow: hidden;
			text-overflow: ellipsis;
			white-space: nowrap;
		}
		.header-text {
			font-size: 15px;
			padding-left: 0;
			font-weight: bolder;
			text-align: center;
			color: #808080;
			width: 100%;
			font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
		}
		
		.header-resize {
			cursor: col-resize;
			width:10px;
			float:right;
			padding-left:0px
		}
	
	</style>
	
	
	<body>
		
		<div class = "design-grid-panel">
			
			<div class = "grid-container grid-header-left" style = "width: 200px;">
				<table  cellspacing = "0" style = "width:200px">
					<colgroup>
						<col style = "width:199px"></col>
					</colgroup>
					<tr>
						<td><div class = "header-text">company</div></td>
					</tr>
				</table>
			</div>
			<div class = "grid-container grid-header-right" style = "width: 400px;">
				<table  cellspacing = "0"  id = "header-right-table" style="width:520px;">
					<colgroup>
						<col style = "width:130px"></col>
						<col style = "width:130px"></col>
						<col style = "width:130px"></col>
						<col style = "width:130px"></col>
					</colgroup>
					<tr>
						<td><div class = "header-text">price</div></td>
						<td><div class = "header-text">change</div></td>
						<td><div class = "header-text">pctChange</div></td>
						<td><div class = "header-text">lastChange</div></td>
					</tr>
				</table>
			</div>
			<div class = "grid-container grid-body-left" style = "width: 200px; height: 270px">
				<table cellspacing = "0" id = "body-left-table" style = "width:200px">
					<colgroup>
						<col style = "width:199px"></col>
					</colgroup>
					<tr><td><div>3m Co</div></td></tr>
					<tr><td><div>Alcoa Inc</div></td></tr>
					<tr><td><div>Altria Group Inc</div></td></tr>
					<tr><td><div>American Express Company</div></td></tr>
					<tr><td><div>American Internat</div></td></tr>
					<tr><td><div>AT&T Inc</div></td></tr>
					<tr><td><div>Boeing Co.</div></td></tr>
					<tr><td><div>Caterpillar Inc.</div></td></tr>
					<tr><td><div>Citigroup, Inc.</div></td></tr>
					<tr><td><div >E.I. du Pont de Nemours and Company</div></td><td></td></tr>
					<tr><td><div>Exxon Mobil Corp</div></td></tr>
					<tr><td><div>General Electric Company</div></td></tr>
					<tr><td><div>General Motors Corporation</div></td></tr>
					<tr><td><div>Hewlett-Packard Co.</div></td></tr>
					<tr><td><div>Honeywell Intl Inc</div></td></tr>
				</table>
			</div>
			<div class = "grid-container grid-body-right" style = "width: 400px; height: 270px; overflow: auto;" onscroll = "onScrollDiv(this)" >
				<table cellspacing = "0" style="width:520px;" id = "body-right-table">
					
					<colgroup>
						<col style = "width:130px"></col>
						<col style = "width:130px"></col>
						<col style = "width:130px"></col>
						<col style = "width:130px"></col>
					</colgroup>
					
					<tr><td><div>71.72</div></td><td><div>71.72</div></td><td><div>71.72</div></td><td><div>71.72</div></td></tr>
					<tr><td><div>11.72</div></td><td><div>71.72</div></td><td><div>71.72</div></td><td><div>71.72</div></td></tr>
					<tr><td><div>51.72</div></td><td><div>43.72</div></td><td><div>33.72</div></td><td><div>71.72</div></td></tr>
					<tr><td><div>11.72</div></td><td><div>71.72</div></td><td><div>71.72</div></td><td><div>33.72</div></td></tr>
					<tr><td><div>43.72</div></td><td><div>33.72</div></td><td><div>71.72</div></td><td><div>71.72</div></td></tr>
					<tr><td><div>21.72</div></td><td><div>71.72</div></td><td><div>71.72</div></td><td><div>71.72</div></td></tr>
					<tr><td><div>55.72</div></td><td><div>43.72</div></td><td><div>33.72</div></td><td><div>71.72</div></td></tr>
					<tr><td><div>65.72</div></td><td><div>71.72</div></td><td><div>71.72</div></td><td><div>71.72</div></td></tr>
					<tr><td><div>211.72</div></td><td><div>71.72</div></td><td><div>71.72</div></td><td><div>33.72</div></td></tr>
					<tr><td><div>51.72</div></td><td><div>71.72</div></td><td><div>71.72</div></td><td><div>71.72</div></td></tr>
					<tr><td><div>25.72</div></td><td><div>71.72</div></td><td><div>71.72</div></td><td><div>71.72</div></td></tr>
					<tr><td><div>33.72</div></td><td><div>43.72</div></td><td><div>33.72</div></td><td><div>71.72</div></td></tr>
					<tr><td><div>14.72</div></td><td><div>71.72</div></td><td><div>71.72</div></td><td><div>71.72</div></td></tr>
					<tr><td><div>51.72</div></td><td><div>71.72</div></td><td><div>71.72</div></td><td><div>71.72</div></td></tr>
					<tr><td><div>35.72</div></td><td><div>43.72</div></td><td><div>71.72</div></td><td><div>71.72</div></td></tr>
				</table>
			</div>
		</div>
		
		<script>
			
			var headline  = document.getElementById('header-right-table');
			var items  = document.getElementById('body-left-table');
			
			function onScrollDiv (div) {
				scrollLeft=parseInt(div.scrollLeft);
				scrollTop=parseInt(div.scrollTop);
				headline.style.left=(-scrollLeft)+'px';
				items.style.top=(-scrollTop)+'px';
			}
		</script>
		
	</body>

</html>


你可能感兴趣的:(Locking Grid 表头列头固定的表格)