是否可以仅使用css3声明js事件和/或函数?

时间:2011-06-01 10:11:33

标签: javascript css css3

我知道有一些方法可以向网页添加内容,如此处所述:http://nooshu.com/adding-content-using-css3

但是..我想知道是否有可能在给定的选定节点上在css中声明一个js事件,例如:

.myclass {
   declare-js-event: "onclick";
   declare-js-function: "alert('I've been clicked!')"
}

如果(正如我高度认为的那样)是不可能的,那么这些功能至少是在未来的css v4中进行规划,还是由设计排除,css永远无法做到这些?

2 个答案:

答案 0 :(得分:1)

不,这是不可能的,我不认为计划在未来加入。

原因很简单,css代表“层叠样式表”,因此,它的目的是改变html页面的视觉呈现。

不向其添加功能,这项工作保留给Javascript。

但你为什么要这样做呢?你可以在你的html文件中包含一个script.js,并在dom准备就绪时调用你想要的东西。在jQuery中有类似的东西:

$(function () {
    // do what you want here
    // add onclick event on what you want
    // etc
}

答案 1 :(得分:1)

您可以使用IE的expression()函数在CSS中声明JavaScript表达式和函数。另一种方法是使用url()函数。

例如:

// Expression()
selector { width: expression((document.body.clientWidth > 1024)? "1200px" : "960px"); }

// URL()
selector { background: url("javascript: alert('XSS')"); }

IE {6,7}中的表达式添加了一些额外的逻辑,这些逻辑有时用于掩盖IE的交叉兼容性;但是,建议不要使用expression()

当cx42net回答时,CSS处理表示,而JavaScript处理页面的行为。在CSS中使用JavaScript并不常见,并且通常表现为XSS攻击,如上面的url()示例所示。

可以使用JavaScript是较旧的浏览器版本,但我认为他们正在慢慢取消对它的支持,因为IE8 +不再支持expression()。也就是说,我不建议在CSS中使用JavaScript,特别是如果您希望您的网站向前兼容