zoukankan      html  css  js  c++  java
  • JavaScript Table行定位效果

    作者:cloudgamer 时间: 2009-09-17 文档类型:原创 来自:蓝色理想

    第 1 页 JavaScript Table行定位效果 [1]
    第 2 页 JavaScript Table行定位效果 [2]
    第 3 页 JavaScript Table行定位效果 [3]
    第 4 页 JavaScript Table行定位效果 [4]
    第 5 页 JavaScript Table行定位效果 [5]
    第 6 页 JavaScript Table行定位效果 [6]
    第 7 页 JavaScript Table行定位效果 [7]
    第 8 页 JavaScript Table行定位效果 [8]

    近来有客户要求用table显示一大串数据,由于滚动后就看不到表头,很不方便,所以想到这个效果。上次做 table排序 对table有了一些了解,这次更是深入了解了一番,发现table原来是这么不简单。

    还不清楚这个效果叫什么,有点像表头固定的效果,就叫行定位吧,本来想把列定位也做出来,但暂时还没这个需求,等以后有时间再弄吧。
    淘宝的商品搜索页 也看到类似的效果,但淘宝的不是table,而是li,而我这个是用在table上的。

    要说明一下的是,我这个效果是用在一些普通的产品列表,当数据比较多时提高用户体验,而不是单单做数据显示,跟excel那样的方式是不同的。

    效果预览

    为方便预览,建议缩小浏览器。

    运行代码框

    [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

    注意,使用ie8的兼容性视图会有偏移。

    程序原理

    一开始的需求只是表头部分在滚动时能一直固定在头部,那关键要实现的就是让tr能定位。首先想到的方法是给tr设置relative,用ie6/7测试以下代码:

    <!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">
    <body>
    <table cellpadding="5" cellspacing="0" border="1" width="100">
        <tr style="position:relative; left:100px;">
            <td>1</td>
            <td>2</td>
        </tr>
        <tr>
            <td>3</td>
            <td>4</td>
        </tr>
    </table>
    </body>
    </html>

    给tr设置relative后就能相对table定位了,看来很简单啊,但问题是这个方法ie8和ff都无效,而且存在很多问题,所以很快就被抛弃了。
    ps:该效果用来做tr的拖动会很方便。

    接着想到的是给table插入一个新tr,克隆原来的tr,并设置这个tr为fixed(ie6为absolute),例如:

    <!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">
    <body>
    <table cellpadding="5" cellspacing="0" border="1" width="100">
        <tr style="position:fixed; left:100px;">
            <td>1</td>
            <td>2</td>
        </tr>
        <tr style="position:absolute; left:200px;">
            <td>3</td>
            <td>4</td>
        </tr>
        <tr>
            <td>5</td>
            <td>6</td>
        </tr>
    </table>
    </body>
    </html>

    第一个问题是fixed的tr在ie7中不能进行定位,而且td在定位后并不能保持在表格中的布局,这样在原表格插tr就没意义了。
    ps:fixed的相关应用可参考仿LightBox效果。

    最后我用的方法是新建一个table,并把源tr克隆到新table中,然后通过对新table定位来实现效果。用这个方法关键有两点,首先要做一个仿真度尽可能高的tr,还有是要准确的定位,这些请看后面的程序说明。

    http://www.blueidea.com/tech/web/2009/7031.asp

    出处:蓝色理想
    责任编辑:bluehearts

     

  • 相关阅读:
    C#与数据库访问技术总结(十四)之DataAdapter对象
    《运维三十六计》:运维生存宝典
    企业运维几百个重点面试题汇总(老男孩)
    5、KVM虚拟化典型案例:生产环境问题案例与分析
    Linux运维必会的实战编程笔试题(19题)
    面试中常见的 MySQL 考察难点和热点
    Linux系统运维常见面试简答题(36题)
    一键备份脚本 backup.sh
    Linux常用的200个命令总结分类
    2、KVM虚拟化CPU、内存、网络、磁盘技术及性能调优方法
  • 原文地址:https://www.cnblogs.com/zhangxiaopeng/p/5138733.html
Copyright © 2011-2022 走看看