CSS中expression的用法

作者:曾加 来源:曾加的blog 时间:2008-09-11 14:18:00 

Expression定义

IE5及其以后版本支持在CSS中使用expression,用来把CSS属性和Javascript表达式关联起来,这里的CSS 属性可以是元素固有的属性,也可以是自定义属性。就是说CSS属性后面可以是一段Javas cript表达式,CSS属性的值等于 Javas cript表达式计算的结果。 在表达式中可以直接引用元素自身的属性和方法,也可以使用其他浏览器对象。这个表达式就好像是在这个元素的一个成员函数中一样。

给元素固有属性赋值

例如,你可以依照浏览器的大小来安置一个元素的位置。

以下是引用片段:

#myDiv { 
position: absolute; 
width: 100px; 
height: 100px; 
left: expression(document.body.offsetWidth - 110 + "px"); 
top: expression(document.body.offsetHeight - 110 + "px"); 
background: red; 
}

给元素自定义属性赋值

例如,消除页面上的链接虚线框。 通常的做法是:

<a href="link1.htm" onfocus="this.blur()">link1</a> 
<a href="link2.htm" onfocus="this.blur()">link2</a> 
<a href="link3.htm" onfocus="this.blur()">link3</a>

粗看或许还体现不出采用expression的优势,但如果你的页面上有几十甚至上百个链接,这时的你难道还会机械式地Ctrl+C,Ctrl+V么,何况两者一比较,哪个产生的冗余代码更多呢?

采用expression的做法如下:

<style type="text/css"> 
a {star : expression(onfocus=this.blur)} 
</style> 
<a href="link1.htm">link1</a> 
<a href="link2.htm">link2</a> 
<a href="link3.htm">link3</a>

说明:里面的star就是自己任意定义的属性,你可以随自己喜好另外定义,接着包含在expression()里的语句就是JS脚本,在自定义属性与expression之间可别忘了还有一个引号,因为实质还是CSS,所以放在style标签内,而非s cript内。OK,这样就很容易地用一句话实现了页面中的链接虚线框的消除。不过你先别得意,如果触发的特效是CSS的属性变化,那么出来的结果会跟你的本意有差别。例如你想随鼠标的移进移出而改变页面中的文本框颜色更改,你可能想当然的会认为应该写为


<style type="text/css"> 
input 
{star : expression(onmouseover=this.style.backgroundColor="#FF0000"; 
onmouseout=this.style.backgroundColor="#FFFFFF")} 
</style> 
<style type="text/css"> 
input {star : expression(onmouseover=this.style.backgroundColor="#FF0000"; 
onmouseout=this.style.backgroundColor="#FFFFFF")} 
</style> 
<input type="text"> 
<input type="text"> 
<input type="text">

可结果却是出现脚本出错,正确的写法应该把CSS样式的定义写进函数内,如下所示:

<style type="text/css"> 
input {star : expression(onmouseover=function() 
{this.style.backgroundColor="#FF0000"}, 
onmouseout=function(){this.style.backgroundColor="#FFFFFF"}) } 
</style> 
<input type="text"> 
<input type="text"> 
<input type="text">

注意

不是非常需要,一般不建议使用expression,因为expression对浏览器资源要求比较高。

标签:Expression,css,优化
0
投稿

猜你喜欢

  • Pandas:Series和DataFrame删除指定轴上数据的方法

    2022-12-22 12:49:26
  • 实用的Go语言开发工具及使用示例

    2024-04-26 17:25:25
  • TensorFlow绘制loss/accuracy曲线的实例

    2022-01-25 08:01:16
  • ASP关于SQL插入数据后获得当前ID

    2010-01-24 19:55:00
  • golang容易导致内存泄漏的6种情况汇总

    2024-04-25 13:20:17
  • Vue.js监听select2的值改变进行查询方式

    2024-04-30 10:42:13
  • 深入了解Vue中双向数据绑定原理

    2024-05-13 09:38:25
  • Python错误的处理方法

    2021-08-01 05:38:15
  • Vue.js 的过滤器你了解多少

    2024-04-28 09:26:37
  • 利用PHP实现递归删除链表元素的方法示例

    2024-04-23 09:09:41
  • oracle 安装与SQLPLUS简单用法

    2009-06-10 17:49:00
  • 基于Python的图像数据增强Data Augmentation解析

    2022-12-21 11:50:31
  • Python 生成一个从0到n个数字的列表4种方法小结

    2023-06-10 19:14:59
  • Django Admin后台模型列表页面如何添加自定义操作按钮

    2021-02-24 18:57:15
  • NLTK 3.2.4 环境搭建教程

    2023-09-14 03:47:27
  • MySQL 两张表数据合并的实现

    2024-01-28 07:25:49
  • Django logging配置及使用详解

    2022-06-01 14:12:48
  • Tensorflow2.4从头训练Word Embedding实现文本分类

    2023-05-22 20:03:17
  • MAC下MYSQL5.7.17连接不上的问题及解决办法

    2024-01-15 00:35:32
  • python自动发送邮件脚本

    2023-01-24 07:56:28
  • asp之家 网络编程 m.aspxhome.com