JavaScript教程:Table行定位效果

2016-02-20 00:58 7 1 收藏

下面图老师小编跟大家分享一个简单易学的JavaScript教程:Table行定位效果教程,get新技能是需要行动的,喜欢的朋友赶紧收藏起来学习下吧!

【 tulaoshi.com - Web开发 】

近来有客户要求用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;"
        td1/td
        td2/td
    /tr
    tr
        td3/td
        td4/td
    /tr
/table
/body
/html

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

接着想到的是给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;"
        td1/td
        td2/td
    /tr
    tr style="position:absolute; left:200px;"
        td3/td
        td4/td
    /tr
    tr
        td5/td
        td6/td
    /tr
/table
/body
/html

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

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

来源:http://www.tulaoshi.com/n/20160220/1632968.html

延伸阅读
标签: Web开发
缓动,学名为Tween,缓冲移动的简称。要想页面内容切换起来舒服,就使用淡入淡出特效,要想让页面元素动起来自然,就要使用缓动效果。这两个混合起来,可以衍生多种特效的。感谢Flash开发人员为我们做了那么多先行研究,我们直接把它们拆出来装在各种菜单与相册中。我们先从最简单的东西做起,加速与减速。 既然是缓动,它就一定涉及以下概...
标签: Web开发
/**  * 取得鼠标坐标  * @return Position  */  function getMouseLocation(){  if(ns4||ns6){  mouseX = e.pageX;  mouseY = e.pageY;  }  else{  mouseX = event.x + document.body.scrollLeft;  mouseY&nbs...
标签: Web开发
函数为程序设计人员提供了一个非常方便的能力。通常在进行一个复杂的程序设计时,总是根据所要完成的功能,将程序划分为一些相对独立的部分,每部分编写一个函数。从而,使各部分充分独立,任务单一,程序清晰,易懂、易读、易维护。JavaScript函数可以封装那些在程序中可能要多次用到的模块。并可作为事件驱动的结果而调用的程序。从而实现...
标签: Web开发
随着浏览器安全性的提高,要实现图片预览也越来越困难。 不过群众的智慧是无限的,网上也有很多变通或先进的方法来实现。 在研究了各种预览方法后,作为总结,写了这个程序,跟大家一起分享。 上次写的简便无刷新文件上传系统最初的目的就是用来实现这个图片预览效果。 兼容 :ie6/7/8, firefox 3.5.5 后台支持下还兼容 :opera 10.10, s...
标签: Web开发
原文:http://www.linxz.cn/blog2/article.asp?id=140 很神奇的一个晚上,居然在以前老同事的群里跟同事讨论起CSS的东西来了,不过很意外的还是有收获。在IE中常常会碰到如果将容器定位后,出现容器内的文字不可选择(测试的时候主要用带连接的文字)。 xhtml结构: div a href="#"定位后无法选择容器的内容解决方案/a /div ...

经验教程

551

收藏

38
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部