惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
V
Vulnerabilities – Threatpost
Google Online Security Blog
Google Online Security Blog
Hugging Face - Blog
Hugging Face - Blog
L
LINUX DO - 热门话题
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
D
Docker
C
Cyber Attacks, Cyber Crime and Cyber Security
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
T
Tenable Blog
P
Privacy International News Feed
Google DeepMind News
Google DeepMind News
小众软件
小众软件
Cisco Talos Blog
Cisco Talos Blog
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
A
Arctic Wolf
C
Cybersecurity and Infrastructure Security Agency CISA
C
Cisco Blogs
T
Threat Research - Cisco Blogs
NISL@THU
NISL@THU
The Hacker News
The Hacker News
Project Zero
Project Zero
AWS News Blog
AWS News Blog
Simon Willison's Weblog
Simon Willison's Weblog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Threatpost
V
Visual Studio Blog
The GitHub Blog
The GitHub Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
Jina AI
Jina AI
Cyberwarzone
Cyberwarzone
The Register - Security
The Register - Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
Vercel News
Vercel News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
MongoDB | Blog
MongoDB | Blog
U
Unit 42
Scott Helme
Scott Helme
A
About on SuperTechFans
WordPress大学
WordPress大学
F
Fortinet All Blogs
大猫的无限游戏
大猫的无限游戏
G
GRAHAM CLULEY
Latest news
Latest news
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Schneier on Security

博客园 - wddavid

明天要回老家了,发一张阳台上最后的夕阳 【转载】淘宝百度之争 易博士这个可悲的品牌 枪手无数 必亡 【WDDAVID独家评测】金鹏E1191评测 【转载】把自己打造成一张"活名片" 企业网站建设中常用的英文翻译 【转载】发传单的艺术 【转帖】CorelDraw快捷键的使用大全 司马懿 【转载】Photoshop快捷键和技巧大全 新一代电子书汇总介绍,想入手了 继续做下去还是转行? 正则表达式30分钟教程 [Serializable]在C#中的作用-NET 中的对象序列化 常见尺寸LCD液晶显示器点距一览 多风格选择 样式实时切换 block(块元素)、inline(内联元素) DIV+CSS小技巧随写 Marquee为什么不符合WEB标准?
CSS中的expression
wddavid · 2007-03-24 · via 博客园 - wddavid

 转自:52css 

       什么是CSS expression?

  IE5及其以后版本支持在CSS中使用expression,用来把CSS属性和Javascript脚本关联起来,这里的CSS属性可以是元素固有的属性,也可以是自定义属性。就是说CSS属性后面可以是一段Javascript表达式,CSS属性的值等于Javascript表达式计算的结果。 在表达式中可以直接引用元素自身的属性和方法,也可以使用其他浏览器对象。这个表达式就好像是在这个元素的一个成员函数中一样。 是不是感觉上面的文字有点晦涩?没有关系,你只需要知道:我们可以通过expression把Javascript脚本写放在css文件中,通过它来实现一些很方便的功能与效果。

  CSS expression能发挥什么作用呢?

  1、给元素固有属性赋值

  下面的实例是依照浏览器的大小来安置一个元素的位置。查看运行效果试试。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>www.52css.com</title>
<style type="text/css">
<!-- 
#myDiv 
{
position
: absolute;
width
: 100px;
height
: 100px;
background
:#c00;
left
: expression(document.body.offsetWidth - 180 + "px");
top
: expression(document.body.offsetHeight - -80 + "px");
text-align
:center;
line-height
:90px;
color
:#fff;
}
-->
</style>
</head>
<body>
<div id="myDiv">wddavid</div> 
</body>
</html>


  2、给元素自定义属性赋值

  我们想给页面的链接消除点击时产生的虚线。
  在一般情况下,我们是这样做的:

<a href="link1.htm" onfocus="this.blur()">52css.com</a><br />
<a href="link2.htm" onfocus="this.blur()">52css.com</a><br />
<a href="link3.htm" onfocus="this.blur()">52css.com</a>
  粗看或许没有感觉。但如果你的页面上有几十甚至上百个链接,这时的你难道还会机械式地Ctrl+C,Ctrl+V么,采用expression的优势现在就突现出来了。两者比较,哪个产生的冗余代码更多呢?

  采用expression的做法如下:
  a {star:expression(this.onFocus=this.blur())}

  我们看下面的例子:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>www.52css.com</title>
<style type="text/css">
<!-- 
{star:expression(this.onFocus=this.blur())}
-->
</style>
</head>
<body>
<href="#">我爱wddavid</a>
</p>
</body>
</html>


  说明:里面的star就是自己任意定义的属性,你可以随自己喜好另外定义,接着包含在expression()里的语句就是JS脚本,在自定义属性与expression之间可别忘了还有一个引号,因为实质还是CSS,所以放在style标签内,而非script内。这样就很容易地用一句话实现了页面中的链接虚线框的消除。

  需要引起你特别重视的:若不是非常特别的需要用到expression,一般不建议使用expression,因为expression对浏览器资源要求比较高。

用CSS定义表格行背景色交替出现:
  应用div+css网页布局,表格的使用已经非常少了,至少table表格只是作为内容数据,并不再作为页面布局的手段。

  表格数据是很常见的数据格式,如产品列表,产品参数,数值等等,有时候表格数据的每一行占据了比较宽的位置,我们往往通过定义行背景色交替,让用户浏览更加的清晰。

  我们可以用CSS定义表格行背景色交替吗?或许你立即就想到了class,用class来定义背景色,然后在不同的行设置不同的class就可以现实了。这只是方法之一,我们的数据如果有几十行,上百行,这个方法也稍嫌繁琐了一些。

  我们可以通过css的expression属性,批量定义表格行背景色交替。关于expression你可以参考这里。

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

  我们以具体的实例来看它的实现方法,以下是CSS代码:

tr{ background-color:expression('#F0F0F0,#DDD'.split(',')[rowIndex%2]); }
  一句话就可以声明一切了。我们看最终的运行效果:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>www.52css.com</title>
<style type="text/css">
<!-- 
tr
{ background-color:expression('#F0F0F0,#DDD'.split(',')[rowIndex%2]); }
-->
</style>
</head>
<body>
<table width="600px" border="0">
  
<tr>
    
<td> </td>
  
</tr>
<tr>
    
<td> </td>
  
</tr>
  
<tr>
    
<td> </td>
  
</tr>
  
<tr>
    
<td> </td>
  
</tr>
  
<tr>
    
<td> </td>
  
</tr>
  
<tr>
    
<td> </td>
  
</tr>
  
<tr>
    
<td> </td>
  
</tr>
  
<tr>
    
<td> </td>
  
</tr>
  
<tr>
    
<td> </td>
  
</tr>
</table>
</body>
</html>

  我们成功的实现了表格行背景色(#F0F0F0,#DDD)交替出现,不需要每行单独定义。
  需要你特别注意的是css的expression属性,IE5.5以后版本并不支持。