利用CSS的Expression自定义属性来实现表格的OnMouseOver 特效

在我们使前后台分开的同时,有时我们想也用CSS来实现只有在JS里才能实现的动作,看似不可能的事情,但经过我的努力,但很好的工作了.

        我们知道 CSS 的Exprssion 在IE窗体需要重画时以及有鼠标动作时执行.所以不能直接用它来实现,这样当你的内容多时再快的计算机也受不了(原因是你的鼠标动一下,Expression就执行好几百次).

        为了避免这种情况,我们让我们的Expression第一次执行一次操作,以后就简单的返回,这样就可以大大的节省CPU.

       费话少说,下面是示例代码(偶是程序员,也不知道说什么了!):

文件名:myfont.css
-----------------------------------------------------------

body
{
}


/*
作者:阿牛(牛昆亮) QQ:273352165 MSN:niukl@hotmail.com

声明:可以免费使用,请您保留此信息(大家都是作程序的,帮个忙了).
 如果您有什么改过,记得告诉我!
*/


.dgInit
{
 over
:expression(((this.readyState=="complete") && (this.className=="dg")) || (
 (
 __evlon_init_tr=function(objTable){
 var i
;
 for(i=0;i<objTable.rows.length;i++){
  objTable.rows[i].onmouseover=function(){this.className="dg_tr_mouseover"
}
;
  objTable.rows[i].onmouseout=function()
{this.className="dg_tr_normal"};
  objTable.rows[i].className="dg_tr_normal";
 }
 
 } 
 ) ,(__evlon_init_tr(this)), (this.className="dg")));
}


.dg
{
  
}


/*表格行的全局CSS设置*/
.dg_tr_mouseover,.dg_tr_normal
{
 font-style
: italic;
 color
:blue;

}

.dg_tr_normal
{
 background-color
:#ffffff;
 
}


/*表格行的 OnMouseOver 时的CSS设置*/
.dg_tr_mouseover
{
 background-color
:#cccccc;
 
}


文件名:hello.htm
------------------------------------------------------------------
<html>
<head>
<title></title>
<link href="myfont.css" rel="stylesheet" type="text/css">
</head>
<body >
<table class="dgInit"><!--只要这里加上 Class 就行了-->
  
<tr >  
    
<td> ni hao </td>
    
<td> ni hao </td>
    
<td> ni hao </td>
  
</tr>
  
<tr >  
    
<td> ni hao </td>
    
<td> ni hao </td>
    
<td> ni hao </td>
  
</tr>
</table>
</body>
</html> 
posted @ 2006-09-30 11:09  阿牛  阅读(563)  评论(0编辑  收藏  举报