`
soft901
  • 浏览: 36849 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Scrollable HTML table

阅读更多

原文: http://www.webtoolkit.info/scrollable-html-table.html



Scrollable HTML table JavaScript code can be used to convert tables in ordinary HTML into scrollable ones. No additional coding is necessary. All you need to do is put header rows (if you need them) in THEAD section, table body rows in TBODY section, footer rows (if you need them) in TFOOT section and give your table an ID field, include the webtoolkit.scrollabletable.js file and create ScrollableTable() object after each table.

 


Scrollable HTML table code tested in IE5.0+, FF1.5+.

Source code for index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<title>Scrollable HTML table</title>
	<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
	<script type="text/javascript" src="webtoolkit.scrollabletable.js"></script>
 
	<style>
		table {
			text-align: left;
			font-size: 12px;
			font-family: verdana;
			background: #c0c0c0;
		}
 
		table thead  {
			cursor: pointer;
		}
 
		table thead tr,
		table tfoot tr {
			background: #c0c0c0;
		}
 
		table tbody tr {
			background: #f0f0f0;
		}
 
		td, th {
			border: 1px solid white;
		}
	</style>
</head>
 
<body>
 
<table cellspacing="1" cellpadding="2" class="" id="myScrollTable" width="400">
	<thead>
		<tr>
			<th class="c1">Name</th>
			<th class="c2">Surename</th>
			<th class="c3">Age</th>
		</tr>
	</thead>
 
	<tbody>
		<tr class="r1">
			<td class="c1">John</th>
			<td class="c2">Smith</th>
			<td class="c3">30</th>
		</tr>
		<tr class="r2">
			<td class="c1">John</th>
			<td class="c2">Smith</th>
			<td class="c3">31</th>
		</tr>
		<tr class="r1">
			<td class="c1">John</th>
			<td class="c2">Smith</th>
			<td class="c3">32</th>
		</tr>
		<tr class="r2">
			<td class="c1">John</th>
			<td class="c2">Smith</th>
			<td class="c3">33</th>
		</tr>
		<tr class="r1">
			<td class="c1">John</th>
			<td class="c2">Smith</th>
			<td class="c3">34</th>
		</tr>
		<tr class="r2">
			<td class="c1">John</th>
			<td class="c2">Smith</th>
			<td class="c3">35</th>
		</tr>
		<tr class="r1">
			<td class="c1">John</th>
			<td class="c2">Smith</th>
			<td class="c3">36</th>
		</tr>
		<tr class="r2">
			<td class="c1">John</th>
			<td class="c2">Smith</th>
			<td class="c3">37</th>
		</tr>
	</tbody>
 
	<tfoot>
		<tr>
			<th class="c1">Name</th>
			<th class="c2">Surename</th>
			<th class="c3">Age</th>
		</tr>
	</tfoot>
</table>
 
<script type="text/javascript">
var t = new ScrollableTable(document.getElementById('myScrollTable'), 100);
</script>
 
</body>
</html>
 

Source code for webtoolkit.scrollabletable.js

/**
*
*  Scrollable HTML table
*  http://www.webtoolkit.info/
*
**/
 
function ScrollableTable (tableEl, tableHeight, tableWidth) {
 
	this.initIEengine = function () {
 
		this.containerEl.style.overflowY = 'auto';
		if (this.tableEl.parentElement.clientHeight - this.tableEl.offsetHeight < 0) {
			this.tableEl.style.width = this.newWidth - this.scrollWidth +'px';
		} else {
			this.containerEl.style.overflowY = 'hidden';
			this.tableEl.style.width = this.newWidth +'px';
		}
 
		if (this.thead) {
			var trs = this.thead.getElementsByTagName('tr');
			for (x=0; x<trs.length; x++) {
				trs[x].style.position ='relative';
				trs[x].style.setExpression("top",  "this.parentElement.parentElement.parentElement.scrollTop + 'px'");
			}
		}
 
		if (this.tfoot) {
			var trs = this.tfoot.getElementsByTagName('tr');
			for (x=0; x<trs.length; x++) {
				trs[x].style.position ='relative';
				trs[x].style.setExpression("bottom",  "(this.parentElement.parentElement.offsetHeight - this.parentElement.parentElement.parentElement.clientHeight - this.parentElement.parentElement.parentElement.scrollTop) + 'px'");
			}
		}
 
		eval("window.attachEvent('onresize', function () { document.getElementById('" + this.tableEl.id + "').style.visibility = 'hidden'; document.getElementById('" + this.tableEl.id + "').style.visibility = 'visible'; } )");
	};
 
 
	this.initFFengine = function () {
		this.containerEl.style.overflow = 'hidden';
		this.tableEl.style.width = this.newWidth + 'px';
 
		var headHeight = (this.thead) ? this.thead.clientHeight : 0;
		var footHeight = (this.tfoot) ? this.tfoot.clientHeight : 0;
		var bodyHeight = this.tbody.clientHeight;
		var trs = this.tbody.getElementsByTagName('tr');
		if (bodyHeight >= (this.newHeight - (headHeight + footHeight))) {
			this.tbody.style.overflow = '-moz-scrollbars-vertical';
			for (x=0; x<trs.length; x++) {
				var tds = trs[x].getElementsByTagName('td');
				tds[tds.length-1].style.paddingRight += this.scrollWidth + 'px';
			}
		} else {
			this.tbody.style.overflow = '-moz-scrollbars-none';
		}
 
		var cellSpacing = (this.tableEl.offsetHeight - (this.tbody.clientHeight + headHeight + footHeight)) / 4;
		this.tbody.style.height = (this.newHeight - (headHeight + cellSpacing * 2) - (footHeight + cellSpacing * 2)) + 'px';
 
	};
 
	this.tableEl = tableEl;
	this.scrollWidth = 16;
 
	this.originalHeight = this.tableEl.clientHeight;
	this.originalWidth = this.tableEl.clientWidth;
 
	this.newHeight = parseInt(tableHeight);
	this.newWidth = tableWidth ? parseInt(tableWidth) : this.originalWidth;
 
	this.tableEl.style.height = 'auto';
	this.tableEl.removeAttribute('height');
 
	this.containerEl = this.tableEl.parentNode.insertBefore(document.createElement('div'), this.tableEl);
	this.containerEl.appendChild(this.tableEl);
	this.containerEl.style.height = this.newHeight + 'px';
	this.containerEl.style.width = this.newWidth + 'px';
 
 
	var thead = this.tableEl.getElementsByTagName('thead');
	this.thead = (thead[0]) ? thead[0] : null;
 
	var tfoot = this.tableEl.getElementsByTagName('tfoot');
	this.tfoot = (tfoot[0]) ? tfoot[0] : null;
 
	var tbody = this.tableEl.getElementsByTagName('tbody');
	this.tbody = (tbody[0]) ? tbody[0] : null;
 
	if (!this.tbody) return;
 
	if (document.all && document.getElementById && !window.opera) this.initIEengine();
	if (!document.all && document.getElementById && !window.opera) this.initFFengine();
 
 
}
 

 

 

分享到:
评论

相关推荐

    ScrollableTable.js

    通过在HTML中添加`&lt;script&gt;`标签引用`ScrollableTable.js`,开发者可以轻松地使表格具备滚动功能,使得用户能够方便地浏览长表格内容。 然而,值得注意的是,`ScrollableTable.js`并不支持纵向固定表头和拖动功能。...

    JS 工具 资源

    15. **滚动HTML表格**:对于长表格,Scrollable HTML table plugin提供了滚动功能,使得用户可以更方便地查看和操作表格内容。 以上这些JS工具和资源都是提高网页交互性和用户体验的有效手段,开发者可以根据项目...

    jQuery滚动插件scrollable

    Scrollable是一个灵活、轻量级用于创建滚动内容的jQuery插件。任何内容(HTML、视频、文件、图片等...)都可以作为一个滚动项。支持水平与垂直两种滚动方向。用途:滚动效果,可制作分步验证页面

    jQuery 表格插件整理

    5. Scrollable HTML table - 通过将表格分为THEAD、TBODY和TFOOT三个区域,使得普通HTML表格可滚动,同时保持表头固定,提升了用户体验。 6. KeyTable - 提供类似于Excel的单元格导航和现场编辑功能,让用户在表格...

    jquery给表格加滚动条.zip

    #scrollableTable th, #scrollableTable td { border: 1px solid #ddd; padding: 8px; } ``` 这里,我们为`#scrollableTable`设置了`overflow-y: auto;`,这样当内容超过设定高度时,就会出现垂直滚动条。同时,...

    table表头浮动

    在网页设计中,数据展示经常使用到表格(Table)。然而,当表格内容过多,需要滚动查看时,表头(thead)通常会随着滚动消失,给用户带来不便。为了解决这个问题,我们可以采用“表头浮动”技术,使表头始终保持在...

    利用JS+CSS实现滚动表格数据展示

    首先,我们需要创建一个基本的HTML结构,包含一个`&lt;table&gt;`元素,用于展示数据。表格通常由`&lt;thead&gt;`(表头)、`&lt;tbody&gt;`(表格主体)和`&lt;tfoot&gt;`(表脚)组成。例如: ```html &lt;table id="scrollTable"&gt; 列1 ...

    纯CSS实现的表格滚动条效果

    &lt;div class="scrollable-table"&gt; &lt;table&gt; &lt;!-- 表头单元格 --&gt; &lt;!-- 表格数据行 --&gt; &lt;/table&gt; .scrollable-table { max-height: 300px; /* 设置表格容器的最大高度 */ overflow-y: auto; /...

    Angular8 实现table表格表头固定效果

    总结来说,通过合理构建HTML结构,利用jQuery监听滚动事件,以及CSS样式控制,我们可以在Angular8中实现table表格的表头固定效果,同时提供内部滚动条功能。这样的设计有助于提升用户体验,尤其是在处理大数据量和...

    jQuery 表格工具集

    jQuery 表格插件 Flexigrid – Web 2.0 Javscript Grid for jQuery – 可变列宽,自动适应表头宽度,可通过 Ajax 连接 XML 数据源,类似 Ext Grid,但基于 jQuery 因此更轻量小巧。...Scrollable HTML tabl

    CSS如何实现表头冻结效果

    复制代码代码如下: &lt;!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” ...Pure CSS Scrollable Table with Fixed Header&lt;/title&gt; &lt;meta http-equiv=”content-type” content=”text/h

    Hibernate 中文 html 帮助文档

    可滚动遍历(Scrollable iteration) 10.4.1.7. 外置命名查询(Externalizing named queries) 10.4.2. 过滤集合 10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管...

    创建头部固定可滚动的表格

    标题中的“创建头部固定可滚动的表格”是指在网页设计中实现的一种常见功能,它允许表格的...在压缩包中的“Pure CSS scrollable table & fixed header”文件可能包含了更完整的示例代码,可以下载后进行研究和实践。

    bootstrap.docx

    7. **表格**:Bootstrap 的表格类如 `.table` 用于创建基本的HTML表格,`.table-striped` 添加斑马线,`.table-bordered` 添加边框,`.table-hover` 实现鼠标悬停时行高亮,`.table-condensed` 则是紧凑型表格,节省...

    再次分享18个非常棒的jQuery表格插件

    5. Scrollable HTML(在线例子):对于大数据量的表格,此插件提供了滚动条功能,使得用户可以轻松浏览长表格。 6. columnManager(在线例子):columnManager允许用户动态地隐藏和显示表格的列,提供了灵活的列...

    hibernate 体系结构与配置 参考文档(html)

    可滚动遍历(Scrollable iteration) 10.4.1.7. 外置命名查询(Externalizing named queries) 10.4.2. 过滤集合 10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改...

    解决不同版本IE浏览器兼容问题

    .scrollable-table { display: block; overflow-x: auto; overflow-y: auto; height: 200px; } ``` 3. **其他常见CSS兼容性问题** - **垂直居中问题**:使用`vertical-align: middle;`和调整`line-height`...

    DynamicTableWithFixedHeader.:在这里,我将使用bootstrap和jquery创建一个具有固定列的html项目,并使用垂直正文滚动

    在这里,我将创建一个带有垂直列滚动固定列的html项目。 一段时间,我们需要将成千上万的数据加载到html中。 那时,当我们滚动表标题时,它也滚动并移出页面,因此看不到它。 那个时候我们需要使我们的html表头固定...

    TableLayout的使用

    TableLayout是Android开发中一种常用的布局管理器,它允许开发者以表格的形式组织用户界面元素,类似于HTML中的table标签。在Android应用设计中,TableLayout能够帮助我们创建清晰、有序的界面,尤其适用于展示数据...

Global site tag (gtag.js) - Google Analytics