`

强大的CSS表达式 ----- expression

css 
阅读更多
IE5及其以后版本支持在CSS中使用expression,用来把CSS属性和Javas cript表达式关联起来,这里的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对浏览器资源要求比较高。

实例:利用css里expression来实现界面对象的批量控制

      问题说明: 用过CSS样式我们就知道, 可以定义一批对象的class属性来指定同一个样式来统一界面. 但如何统一同类型的对象的事件? 比如:界面有无数个 <img src="**.jpg"> 如何实现鼠标经过此图片, 图片的src变成是**_over.jpg?
  

解决方法: 使用css的expression方法,
具体实现要看看.css的写法:


以下是引用片段:
/*替换图片CSS*/ 
#imgscript {     /*这里使用对象ID来通配样式, 也可以定义一个css函数*/ 
star:expression( 
      onmouseover = function() 
      {  
          /*替换图片*/ 
          if(this.hover != null){ 
            this.name = this.src; 
            this.src = this.src.replace('.jpg', '_over.jpg');  
            this.HasChg = 1; 
         } 
     }, 
     onmouseout = function() 
    {   
         /*还原本来的图片*/ 
       if(this.HasChg != null){ 
          this.src = this.name; 
          this.HasChg = null; 
      } 
} 
)  
}/*end imgscript*/

 

分享到:
评论

相关推荐

    cron-expression-input:Cron UI:输入组件,可轻松直观地生成cron表达式

    import "cron-expression-input/lib/cron-expression-input.min.css" ; /* CSS */ require ( "cron-expression-input" ) ; /* JAVASCRIPT */ CDN 将CDN添加到您的项目 &lt; link rel =" stylesheet " hr

    CSS中使用expression表达式

    据Yahoo团队的建议,应避免使用CSS表达式,因为它们可能导致浏览器卡死或者性能降低。 为了优化`expression`,可以尝试确保表达式只执行一次,并将其结果保存到一个CSS属性中。old9在他的文章《CSS Expression ...

    第十四节 IE中利用CSS触发XSS-01

    在CSS中,可以使用CSS表达式(css expression)来执行JavaScript代码。CSS表达式是一个早期的微软DHTML产物,可以在CSS中定义表达式来达到建立元素间属性之间的联系等作用。从IE5开始得到支持,但由于标准、性能、...

    让IE6也识别CSS3-圆角效果应用border-radius

    1. **使用CSS Expression(表达式)**:IE6支持CSS表达式,可以通过这种方式动态计算边框半径。例如,可以为元素添加如下样式: ```css .element { border-top-left-radius: expression(this.runtimeStyle['...

    CSS expression判断表达式设置input样式

    2. **性能**:`expression`会在页面加载后持续运行,每次与表达式相关的元素属性改变时都会重新计算,这可能导致严重的性能下降。 3. **可维护性**:由于`expression`的非标准性质,代码难以理解和维护,可能导致...

    cron中英文表达式

    使用`jquery-cron`时,你需要首先引入jQuery库,然后引入`jquery-cron`的JavaScript和CSS文件。在HTML中添加一个元素作为cron选择器的容器,接着在JavaScript中初始化并配置`jquery-cron`。你可以设置默认值、禁用...

    CSS表达式(expression)解决IE6 position:fixed无效问题

    本文将详细讲解如何使用CSS表达式(expression)来解决IE6中`position:fixed`无效的问题。 首先,我们来看一个常见的解决方法。在非IE6浏览器中,`position:fixed`可以直接应用到元素上,如下所示: ```css #gs { ...

    常用的东西表达式 js css 之类

    在IT行业中,尤其是在Web开发领域,正则表达式(Regular Expression)、JavaScript(JS)和CSS是不可或缺的基础知识。这些技术广泛应用于数据验证、页面交互以及样式设计等方面,为网页提供了丰富的功能和美观的视觉...

    katex-expression:呈现KaTeX表达式的Web组件

    一个Web组件/自定义元素( &lt;katex&gt; ),用于呈现表达式。 目录 安装 HTML 将以下脚本标记插入html的&lt;head&gt;部分中 &lt; script type =" module " src =" ...

    CSS_information.rar_c# css_c#css_c#的css_正则表达式

    正则表达式(Regular Expression)则是用于匹配字符串模式的一种强大的文本处理工具。在这个“CSS_information.rar”压缩包中,包含了C#与CSS的相关知识以及正则表达式的系统教程。 C# CSS:C#和CSS的结合主要体现...

    Less里css表达式的写法示例介绍

    而本篇文章主要介绍了Less中的CSS表达式写法,特别是针对IE浏览器的兼容性处理。 首先,提到的“.mapfix”类中包含了一个`position: fixed;`样式,这在现代浏览器中是被广泛支持的,意味着元素将相对于浏览器窗口...

    CSS expression在Chrome的问题

    在讨论CSS表达式的问题之前,首先要了解什么是CSS表达式。CSS表达式是微软在IE5及之后版本浏览器中引入的一个特性,允许开发者使用JavaScript代码来动态计算样式属性值。例如,可以使用表达式来动态设置元素的宽度或...

    个人CSS、EL表达式、HTML、jsp笔记

    EL(Expression Language)是Java服务器页面(JSP)中的一个表达式语言,用于访问JavaBeans组件的属性并执行基本运算。它简化了从JSP页面获取和设置Java对象的属性的过程。EL表达式通常在`${}`中写,例如`${user....

    CSS中expression使用简介

    CSS中的`expression`是一个特性,它允许在CSS样式规则中嵌入JavaScript表达式,使得CSS属性的值能够动态地根据JavaScript表达式的计算结果进行更新。这个特性在Internet Explorer 5及更高版本中被支持,但并非W3C的...

    Python-Pyregex是一个开源在线的Python正则表达式编辑器测试器

    Python中的正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,它能用于搜索、替换和提取字符串中的模式。Pyregex项目是为Python开发者提供的一款在线的正则表达式编辑器和测试器,旨在简化...

    用CSS防iframe型挂马

    1. **CSS Expression**: CSS表达式(expression)是IE特有的一个功能,允许在CSS样式中嵌入JavaScript代码。虽然这个特性在现代浏览器中已被废弃,但在某些情况下仍然可以用于防御特定类型的攻击。 - **语法**: `...

    基于BootStrap简洁美观Cron表达式选择器JS插件

    2. **CSS文件**:可能包含BootStrap库和其他定制样式的CSS代码,用于控制插件的视觉呈现。 3. **HTML文件**(如`demo.html`):演示了插件如何在实际场景中使用。开发者可以通过查看和分析这个示例来了解如何在自己...

Global site tag (gtag.js) - Google Analytics