expression将JS、Css结合起来

2016-02-19 18:34 14 1 收藏

今天图老师小编要向大家分享个expression将JS、Css结合起来教程,过程简单易学,相信聪明的你一定能轻松get!

【 tulaoshi.com - Web开发 】

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的属性变化,那么出来的结果会跟你的本意有差别。例如你想随鼠标的移进移出而改变页面中的文本框颜色更改,你可能想当然的会认为应该写为

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

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;
    }
 }
)

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

}/*end imgScript*/

来源:http://www.tulaoshi.com/n/20160219/1618158.html

延伸阅读
标签: Web开发
IE 浏览器中 CSS Expression 特性的最大的问题:会反复执行,每秒钟可能执行了成百上千次,有严重的性能问题。 如何对 CSS Expression 进行优化呢? 至少:如果我们将 CSS Expression 在匹配的元素中仅执行一次,性能将会提升很大。 old9 在 《CSS Expression Reloaded》一文中提供了一个解决方案: 在 CSS Expression 语句体里,将触发该 ...
标签: Web开发
先看一段HTML代码,在下边这段代码中,这张图片的宽度未知,我想写在CSS中写一行限制最大宽度为50px: div id="test"  img src="http://www.zishu.cn/attachments/month_0702/n2007271255.gif" / /div Firefox或IE较高的版本可以直接写max-width。在IE的低版本浏览器中,我们可能会写如下的代码: #test img{wi...
标签: Web开发
为了使javascript代码不被窃取,我们可以将js文件编译成动态链接库(dll)文件。下面为了演示这一功能,创建了一个控件。  程序代码:http://www.cnblogs.com/Files/hblynn/SampleControlsCS.rar 一、创建一个类库项目,命名为UpdateAnimate。 二、向项目中添加引用System.Web, System.Drawing, System.Web.Extensions ...
标签: Web开发
    对于文本框,只读状态下和普通状态下,浏览器对其并没有做什么特殊的标记,表面看来,效果是一样的,这样,对用户来说,易用性并不是很高.     当然,我们可以改变只读文本框的背景颜色来加以区分,这个时候就需要程序员自己判断这个文本框是不是只读,然后再引入相应的CSS,无疑加大了工作量.     这...
标签: Web开发
文章导航: 第一章: 基本的圆角框 第二章:透明圆角化背景图片 第三章:圆角化图片 第四章:CSS圆角框组件 V1.0 前序: 本来前三篇文章已经将CSS圆角框讲解完毕,但从网友反馈中,都说到不好使用,因此有了这篇文章,本文主要是将前面的结果总结修订后进行JS封装,方便调用。 在本次封装中, 增加了对真正 img 标签引用的图...

经验教程

871

收藏

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