20130728HTML-CSS-DIV-FIXED-GRID

1 篇文章 0 订阅

用CSS和javascript实现一个可以有固定行和列的表格,很粗糙,不过好像有点模样了。

注意

  • <!DOCTYPE html>这个东东要有,这样在IE中显示才会是想要的效果;
  • 最左上角的div的属性中要有一个float:left,要不然会在它与固定行之间有一个空隙。这里有个解释
  • 固定行高24px;固定列宽80px;
  • 实现这样的关键在于两个东东,padding和over-flow;

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<script type="text/javascript">
	function t() { 
		var top = document.getElementById('d0').getBoundingClientRect().top+24;
		var height = document.getElementById('d0').clientHeight-24;
		var width = document.getElementById('d0').clientWidth;
		document.getElementById('hdr0').setAttribute("style", "width:"+width+"px;");
		width -= 80;
		document.getElementById('d1').setAttribute("style", "padding-top:24px;height:"+height+"px;");
		document.getElementById('d2').setAttribute("style", "padding-top:24px;");
		document.getElementById('hdr2').setAttribute("style", "width:"+width+"px;");
	}
	function doscroll() { 
		document.getElementById('d1').scrollTop = document.getElementById('d0').scrollTop; 
		document.getElementById('hdr2').scrollLeft = document.getElementById('d0').scrollLeft;
	}
</script>
<style type="text/css">
	#d0{
		z-index: 2;
		width: 150px; height: 150px; /*border: 1px solid silver; */
		overflow: auto;
		background-color: Cyan;
	}
	#d1{
		z-index: 2; 
		width: 80px; 
		/*height: 200px; */
		background-color: red;
		position: absolute;
		overflow: hidden;
		/*border: 1px solid black;*/
	}
	#d2{
		z-index: 1; 
		width: 200px; 
		/*height: 200px; */
		background-color: Beige; 
		position: relative; 
		padding-left: 80px;
		padding-top: 24px;
		/*border: 1px solid black;*/
	}
	#hdr0{
		z-index: 3;
		position: absolute;
		overflow: hidden;
		height: 24px;
		/*border: 1px solid blue;*/
	}
	#hdr1{
		z-inline: 3;
		height: 100%;
		width: 80px;
		display: inline-block;
		background-color: Cyan;
		/*border: 1px solid red;*/
		float: left;
	}
	#hdr2{
		z-inline: 2;
		height: 100%;
		display: inline-block;
		background-color: white;
		overflow: hidden;
		/*border: 1px solid red;*/
	}
	span{
		padding-left : 15px;
		padding-right : 15px;
		border: 1px solid red;
	}
</style>
<body>
	<hr/>
<input type="button" οnclick="t()" value="c"/>
<table><tr><td>left</td><td>
<div id="d0" οnscrοll="doscroll()">
	<div id="hdr0">
		<div id="hdr1">topleft</div>
		<div id="hdr2"><span>A</span><span>B</span><span>C</span><span>D</span><span>E</span></div>
	</div>
	<div id="d1">
		<div>row1</div>
		<div>row2</div>
		<div>row3</div>
		<div>row4</div>
		<div>row1</div>
		<div>row2</div>
		<div>row3</div>
		<input type="button" value="a"/>
	</div>
	<div id="d2">
		<span>A</span><span>B</span><span>C</span><span>D</span><span>E</span>
		<div>row2</div>
		<div>row3</div>
		<div>row4</div>
		<div>row1</div>
		<div>row2</div>
		<div>row3</div>
		<input type="button" value="b"/>
	</div>
</div>
</td></tr></table>
</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值