`
bluedusk
  • 浏览: 270256 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通过样式表实现固定表头和列(ZZ)

阅读更多

看此帖:http://blog.csdn.net/chinmo/archive/2008/04/24/2322158.aspx 通过样式表来实现固定表头和列。效果确实不错。但是对于其中的疑问和问题这里需要补充一下。原文中设了三个样式,FixedTitleRow标题行(TR) 的样式,FixedTitleColumn标题列(TD)的样式及FixedDataColumn数据列(TD)的样式;在这三种样式中都统一设置 position属性为relative,这个设置是非常重要的,relative的解释说明是这样的:

Setting the property to relative places the object in the natural HTML flow of the document, but offsets the position of the object based on the preceding content. (设置HTML文档中的对象属性为relative时,其位移是相对于前面内容对象的)

也就是说那些固定列头的位置(left,top)是在当前所在的位置的基础上偏移的,其偏移量就是在样式中设置的left或top属性值。例如偏移量是10,则当前列头的位置则向右偏移10个象素,如果是-10,则向左偏移10个象素;所以在样式中可以看到下面的代码:

//这里的expression函数是计算js表达式的值
top: expression(this.offsetParent.scrollTop);
left: expression(this.parentElement.offsetParent.scrollLeft);

其作用就是将当前TABLE所属的DIV的滚动条的偏移位置(top,left)付给固定列头的left或top属性,这样当滚动条拖动时,固定列头就不会随之移动啦!这也是样式的expression强大之处,它可以在运行时实时计算left和top值而不需要我们写一句代码。如果真要用JS代码来实现此功能,估计没百把行是不可能完成的,并且实现起来也不是那么容易。

另外一个感到疑惑的是在样式expression表达式中,又是this.parentElement,又是this.offsetParent,觉得有点乱。其实都是为了得到TABLE所属的DIV对象,但我很少用parentElement属性,如果想要以document层次树更清晰的表达,推荐用 parentNode。所以我对原文中的expression改成了如下形式:是不是比以前的表达式清晰?!呵呵,在上面需要注意一点的就是TR的parentNode是TBODY,就算你TABLE中没有写<TBODY>,它也是隐藏的。所以TR追溯到DIV需要3级,TD则需要4级;

        .FixedTitleRow
        
{...}{
            position
: relative; 
            top
: expression(this.parentNode.parentNode.parentNode.scrollTop); 
            z-index
: 10;
            background-color
: #E6ECF0;
        
}

        
        .FixedTitleColumn
        
{...}{
            position
: relative; 
            left
: expression(this.parentNode.parentNode.parentNode.parentNode.scrollLeft);
        
}

        
        .FixedDataColumn
        
{...}{
            position
: relative; 
            left
: expression(this.parentNode.parentNode.parentNode.parentNode.scrollLeft);
            background-color
: #E6ECF0;
        
}

 

在你将上面的示例代码准备运用到你的项目中时,请注意如下几点:

  • 不要将div的宽度或高度设置的比固定列的宽度或高度要小,否则是永远也看不到滚动的内容的;
  • 固定列只设置前面几列即可,不要设置最后面哦。那样最后的固定列同样也是看不到内容的。不过没有人会那么变态将固定列设到最后的几列!
  • 你设置了固定列样式FixedTitleColumn,当然对应的显示数据列也要设置FixedDataColumn哦!
分享到:
评论

相关推荐

    vue表格实现固定表头首列

    在实现固定表头和首列的表格时,我们将利用Vue的这两个特性来构建可复用的组件。 1. **数据绑定**:Vue中的数据绑定允许我们创建动态视图。在表格中,我们可以将数据存储在一个数组中,然后通过`v-for`指令遍历这个...

    GridView 固定表头和列

    在解压并打开项目后,可以找到相关的ASPX页面(`.aspx`)、后台代码文件(`.cs`或`.vb`)和CSS样式表(`.css`),这些文件中会包含实现固定表头和列的具体代码和样式。 总之,GridView固定表头和列的实现涉及到前端...

    实现Table表头和列固定

    JavaScript则负责处理用户的交互,比如监听滚动事件,实时更新表头和固定列的位置。 实现步骤大致如下: 1. 创建HTML结构,包括`&lt;table&gt;`、`&lt;thead&gt;`、`&lt;tbody&gt;`和`&lt;tfoot&gt;`,以及必要的嵌套`&lt;thead&gt;`以实现多级...

    JasperReport、ireport固定表头隐藏列

    通过深入理解和利用它们的API,开发者可以实现诸如固定表头、隐藏和显示列等高级功能,以满足各种复杂的报表需求。对于初学者,理解并熟练掌握这些技巧需要一定的实践和学习,但是一旦掌握了,就能极大地提升报表...

    html table 固定表头和列

    通常,它会结合HTML、CSS和可能的JavaScript来实现固定表头和列的功能。 五、兼容性和优化 虽然`position: sticky;`在现代浏览器中得到了广泛支持,但老版本的IE浏览器并不支持。为了确保兼容性,可能需要使用...

    h5 固定表头及列头demo

    表头和列头的固定通常涉及到CSS(层叠样式表)的定位技巧。在H5中,可以利用`position`属性来实现这一效果。`position`属性有`static`、`relative`、`absolute`和`fixed`等值,其中`fixed`可以使元素相对于浏览器...

    复杂表头固定表头和列.html

    复杂表头固定行,固定列,纯css实现,样式可修改,可根据自己要求,更改表头,以及固定列的数量,本人亲测,确实好用

    用css样式固定表头和列

    通过以上分析,我们可以看到,利用CSS的定位属性,配合动态计算的`expression`函数,可以有效地实现表格表头和列的固定效果。然而,在实际项目中,考虑到浏览器兼容性和性能优化,建议采用更加现代的技术方案,如CSS...

    移动端table固定表头与固定第一列

    本教程将详细讲解如何在移动端实现"固定表头与固定第一列"的功能,以提升用户体验,使得用户在滚动时能够始终保持表头和第一列可见。 首先,我们需要理解HTML5中的`&lt;table&gt;`元素,它是用于创建表格的标准标签。在...

    jquery表头固定、列固定完美解决方案

    总结来说,"jquery表头固定、列固定完美解决方案"是通过jQuery库和自定义JavaScript插件实现的一种优化用户体验的方法,特别是在处理大量数据的表格时。它提供了表头和列的固定功能,使用户在浏览长表格时能更方便地...

    JS固定表头和左边列V2.0(源码)

    锁定表头及固定左边列,原生JS原创代码 需要注意的问题: 1.表格的宽度以及表格每一列的宽度需要固定(特殊情况除外:当表格列数少并且表格总宽度明显小于表格父容器的宽度时,也就是表格列不存在自动换行的问题) 2...

    html 表头固定及列固定

    为了解决这个问题,我们可以使用CSS和其他技术实现“html 表头固定”和“列固定”,使用户在滚动浏览时始终能看到表头和特定列的内容。以下将详细介绍这两种方法。 ### 一、表头固定(Header Fixing) 表头固定的...

    GridView固定表头和列 实例(GridView冻结表头和列)

    本实例主要关注如何实现GridView的固定表头和列,使得用户在滚动浏览长表格时,表头和部分列始终保持可见,提高用户体验。 GridView冻结表头和列的需求在大数据量展示时尤为重要,因为表头的可见性有助于用户在浏览...

    js实现固定表头表列和表格翻页

    功能特色: 1. 实现表格的列排序功能(点击表头,切换该列升降序),也可以指定哪一列不排序;...6. 表格外观样式可通过CSS灵活定制 7. 所需要引用的js文件非常小巧,压缩版仅2.5k 8. 使用非常简单,可进行参数配置

    html Table 表头固定的实现

    这样,无论表格如何滚动,表头列和表格主体的列宽度都会保持一致。 接下来,我们看下如何通过CSS来定义固定表头的效果。首先,我们需要为表头定义一个CSS类,比如这里的.table-head,然后为其设置固定的高度和背景...

    js固定表头和第一列固定

    js固定表头和第一列固定,内容变化

    CSS 固定表头和列

    在处理大型数据表格时,为了提高用户体验,我们常常需要实现固定表头和列的效果,这样用户在滚动页面时,表头和列标签始终保持可见,方便用户定位数据。本教程将详细介绍如何使用CSS实现这一功能。 首先,我们需要...

    div+css 固定表头和列

    div+css 固定表头和列div+css 固定表头和列

    JQuery固定表头 及左侧列

    JQuery固定表头 及左侧列

    jquery 固定表头和列

    为了解决这个问题,我们可以利用jQuery来实现表头和列的固定效果,使用户在滚动时始终能看到列标题。本教程将详细讲解如何使用jQuery、JavaScript和HTML实现这一功能。 1. **HTML结构**: 首先,我们需要创建一个...

Global site tag (gtag.js) - Google Analytics