固定第一行,使用javascript 操作层
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>table 固定第一行</title>
<script>
Browser = (function(ua){
var b = {
msie: /msie/.test(ua) && !/opera/.test(ua),
opera: /opera/.test(ua),
safari: /webkit/.test(ua) && !/chrome/.test(ua),
firefox: /firefox/.test(ua),
chrome: /chrome/.test(ua)
};
var vMark = "";
for (var i in b) {
if (b[i]) { vMark = "safari" == i ? "version" : i; break; }
}
b.version = vMark && RegExp("(?:" + vMark + ")[\\/: ]([\\d.]+)").test(ua) ? RegExp.$1 : "0";
b.ie = b.msie;
b.ie6 = b.msie && parseInt(b.version, 10) == 6;
b.ie7 = b.msie && parseInt(b.version, 10) == 7;
b.ie8 = b.msie && parseInt(b.version, 10) == 8;
return b;
})(window.navigator.userAgent.toLowerCase());
var obj = {
change : function(o){
var div = document.getElementById("div1");
var idTr = document.getElementById("idTr");
var pos = getElementPos(div);
var height1 = document.body.clientHeight-pos[1]-20;
var height2 = div.children[0].offsetHeight;
if(height1 > height2){
div.style.height = height2 + 20;
}else{
if(height1 > 300){
div.style.height = height1;
}
else{
div.style.height = 300;
}
}
},
changeStyle:function(){
var idTr = document.getElementById("idTr");
if(Browser.ie6 || Browser.ie7){
idTr.style.position = "relative";
idTr.style.top = idTr.offsetParent.scrollTop;
}else{
idTr.style.position = "fixed";
idTr.style.top = idTr.parentNode.parentNode.parentNode.top;
}
}
}
var EventUtil = new Object;
EventUtil.addEventHandler = function (oTarget, sEventType, fnHandler) {
if (oTarget.addEventListener) {
oTarget.addEventListener(sEventType, fnHandler, false);
} else if (oTarget.attachEvent) {
oTarget.attachEvent("on" + sEventType, fnHandler);
} else {
oTarget["on" + sEventType] = fnHandler;
}
};
var oo = function(){
obj.changeStyle();
}
window.onload = function() {
var oDiv = document.getElementById("div1");
EventUtil.addEventHandler(oDiv, "scroll", oo);
}
//得到某一元素的绝对位置,不管该元素嵌套在多复杂的位置里
function getElementPos(obj) {
var left = 0;
var top = 0;
if(obj.x)
{
left= obj.x;
top = obj.y;
}else if(obj.offsetParent)
{
while(obj.offsetParent)
{
left += obj.offsetLeft;
top += obj.offsetTop;
obj = obj.offsetParent;
}
}
return [left,top];//封装在一个数组里
}
</script>
</head>
<body onresize="obj.change()">
<br>
<br><br> <br> <br>
<br> <div style="text-align:center;width:100%;border:1px blue solid;">
<div id="div1" style="margin-right: auto;margin-left: auto;border:1px red solid;height:300;overflow:auto;width:600; scrollbar-face-color:9999ff;">
<table width="800" border=3 cellspacing=0 style="margin-top:-2px;" height=1000>
<TR class="fixedHeaderTr" style="background:navy;color:white;width:800;height:30" id="idTr">
<TD nowrap>Header A</TD>
<TD nowrap>Header B</TD>
<TD nowrap>Header C</TD>
</TR>
<TR>
<TD>A</TD>
<TD>B</TD>
<TD nowrap >
sssss<br>
s</TD>
</TR>
<TR>
<TD>A</TD>
<TD>B</TD>
<TD>C</TD>
</TR>
<TR>
<TD>A</TD>
<TD>B</TD>
<TD>C</TD>
</TR>
<TR>
<TD>A</TD>
<TD>B</TD>
<TD>C</TD>
</TR>
<TR>
<TD>A</TD>
<TD>B</TD>
<TD>C</TD>
</TR>
<TR>
<TD>A</TD>
<TD>B</TD>
<TD>C</TD>
</TR>
<TR>
<TD>A</TD>
<TD>B</TD>
<TD>C</TD>
</TR>
<TR>
<TD>A</TD>
<TD>B</TD>
<TD>C</TD>
</TR>
<TR>
<TD>A</TD>
<TD>B</TD>
<TD>C</TD>
</TR>
<TR>
<TD>A</TD>
<TD>B</TD>
<TD>C</TD>
</TR>
<TR>
<TD>A</TD>
<TD>B</TD>
<TD>C</TD>
</TR>
<TR>
<TD>A</TD>
<TD>B</TD>
<TD>C</TD>
</TR>
<TR>
<TD>A</TD>
<TD>B</TD>
<TD>C</TD>
</TR>
<TR>
<TD>A</TD>
<TD>B</TD>
<TD>C</TD>
</TR>
<TR>
<TD>A</TD>
<TD>B</TD>
<TD>C</TD>
</TR>
</table>
</div> </div>
<SCRIPT LANGUAGE="JavaScript">
<!--
obj.change();
//-->
</SCRIPT>
</body>
</html>
分享到:
相关推荐
本教程将详细讲解如何在移动端实现"固定表头与固定第一列"的功能,以提升用户体验,使得用户在滚动时能够始终保持表头和第一列可见。 首先,我们需要理解HTML5中的`<table>`元素,它是用于创建表格的标准标签。在...
例如,表头(thead)和第一列(th:first-child)通常会被设置为`position: fixed`,并可能需要调整宽度和高度以适应视口。 `固定行列.html`是HTML文件,其中包含了表格结构。这个文件可能会包含一个`<table>`元素,...
为了解决这个问题,我们可以实现一个类似于Excel的功能,即在滚动时固定表格的第一行和第一列,使得在浏览大量数据时,关键的列名和行标识始终可见。以下将详细介绍如何实现这个效果。 首先,我们需要创建一个基本...
同时,我们需要确保表头的高度与实际表格的第一行高度一致,以保持视觉一致性。例如: ```html .fixed-header { position: fixed; top: 0; width: 100%; } <table> <!-- 表头内容 --> </table> <table...
为了解决这个问题,开发者通常会采用“表格头部第一行下拉固定”的技术,使得在滚动查看表格内容时,表头始终保持可见,方便用户对照查阅。本文将详细介绍如何使用JavaScript实现这一功能。 首先,理解这个需求的...
在构建固定第一行第一列的布局时,可以使用`<table>`标签创建表格,或者使用`<div>`标签结合CSS Grid或Flexbox创建自定义网格。 1. 表格布局: ```html <table> 固定列1 列2 ... 固定行1 数据1 ....
Android可固定表头和第一列自定义表格,集成简单。 API使用说明: LockTableView mLockTableView=new LockTableView(this,mContentView,mTableDatas); mLockTableView.setLockFristColumn(true) //是否锁定第一列 ...
本教程将详细介绍如何利用HTML、CSS以及JavaScript实现一个具有固定行列效果的表格特效,使用户在滚动时仍能看到关键的列名和行标识。 首先,我们需要创建一个基本的HTML结构,包含一个表格元素(`<table>`)。表格...
总结来说,"js table固定表头,固定列,全浏览器兼容"这个主题涵盖的技术点包括:JavaScript事件监听、DOM操作、CSS定位技术、浏览器兼容性处理,以及可能的第三方库或插件的使用。实现这样的功能需要深入理解前端技术...
fixedNumber: 1 // 如果需要第一列固定,将数字1替换为需要固定的列数 }); ``` 6. **更新或修复插件**:有时,问题可能出在Bootstrap表格插件本身。确保使用的是最新版本,或者查找已知的bug和修复。 7. **清除...
1. 单行固定:通常是指只将第一行表头固定,当用户向下滚动时,表头始终在顶部可见。这种实现相对简单,只需要处理一行表头的固定即可。 2. 多行固定:对于具有多级表头或者复杂结构的表格,可能需要将多行表头固定...
在CSS中,固定table第一行是一项常见的需求,特别是在创建数据表格时,为了保持表头的可见性,即使在滚动内容时。以下是一些关键的CSS面试知识点,它们涉及到表格、行高、边距、边框以及其他相关的样式特性。 首先...
在网页设计中,数据展示通常会使用表格,而当表格数据过多时...1. **DataTables**:这是一个强大的jQuery插件,它提供了许多表格增强功能,包括表头固定。引入DataTables库并设置相应的参数,即可轻松实现: ```html ...
这样即使用户滚动页面查看表格内容时,固定的表头或列依然可见,方便用户快速识别数据所在的列和行。 首先,要使用bootstrap-table实现表头固定以及列固定的功能,需要引入对应的JavaScript和CSS文件。这包括jQuery...
在ABAP中,创建动态内表的第一步是定义其结构。通常情况下,我们会为内表的所有列定义字符型数据类型。这是因为字符型数据类型的通用性较强,可以存储各种形式的信息。 **代码示例:** ```abap TYPES: BEGIN OF ...
在网页设计中,固定表头和第一列是常见的需求,特别是在处理大数据量的表格时,为了保持用户在滚动查看数据时能始终看到列标题和行标识,这种布局方式显得尤为重要。"表头、第一列固定的表格"这个主题,通常涉及到...
程序第一步就是克隆原table: this._oTable = $(table);//源table this._nTable = this._oTable.cloneNode(false);//新table this._nTable.id = "";//避免id冲突 要注意虽然ie的cloneNode参数是可选的(默认是...
创建一个简单的动态表格,首先在XML布局文件中添加TableLayout,然后在Activity中创建并添加TableRow,每行中添加TextView。例如: ```java TableLayout table = findViewById(R.id.table); for (int i = 0; i ;...
在本示例中,第一行和第一列的表头将被设置为`position: fixed`,确保它们在页面上始终可见。 具体实现时,可能需要创建两个独立的表格部分,一个用于固定表头,另一个用于显示实际数据。固定表头的表格通常会被...
4. 使用jQuery的`clone(true)`方法,创建原始表格的深拷贝,分别赋值给`tableFixClone`(用于表头和第一列的锁定)和`tableHeadClone`(仅用于表头锁定)。这些克隆的表格将被插入到对应的div元素中。 5. 在实际...