日期:2014-05-17  浏览次数:20680 次

关于CSS滤镜的层次问题
<html>
<style>
/*img{filter:alpha(opacity=5);background-color:#f00;}*/
</style>
<body>
<img   id= "test "   src= "test.jpg "   onclick= "fun(this) "  

style= "filter:light(enabled=1) "/>

</body>
<script   lang=javascript   type=text/javascript>
function   fun(obj)
{
/*obj.filters.alpha.opacity+=5;*/
obj.filters.clear();         //该处为什么用filters就可以完成功能,而下面这行为什么要用数组的形式?
obj.filters[0].addcone(window.event.x,-20,5,100,100,255,255,0,40,25);         //另外这行为什么不能直接写成this.filters[0].method()这样的形式?

}
</script>
</html>

问题请看注释

------解决方案--------------------
alpha滤镜参数有很多的了,没有参数,就只能是默认地属性。有参数可以实现更高级地效果。不过现在滤镜的应用是受到限制的,仅IE支持。 注重内容,不要太热衷于花俏地小技巧了。
Drive for show, put for goal.
挥杆只是为了好看作秀,真功夫在于推杆地技巧了 —— 打高尔夫窍门
------解决方案--------------------
这里不用this的原因是因为在fun(this)中的this代表img这个对象
所以在接受的时候也是针对这个对象obj的
如果fun(obj)该为fun(this)的话他就可以用this了
或者你在这个方法里面定义以下
fun(obj){
var this=obj;
//这里操作的也是个对象
this.filters[0].addcone(window.event.x,-20,5,100,100,255,255,0,40,25)
}
就可以调用了

------解决方案--------------------
this是指当前对象。
obj.filters指当前对象的滤镜对象,
obj.filters[0]指当前对象的第一个滤镜
用prototype来增加。