分享
 
 
 

谈Filter在网页中的运用

王朝html/css/js·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

自W3C公布了样式单(CSS)的标准以来,HTML的每一部分开始以元素的形式出现,并且事件开始真正被引入页面,动态HTML成为了人们讨论的热点。实际上,W3C采用的标准即为微软的DOM,也就是说IE4.0可以更好的支持CSS,并且微软对CSS还进行了许多十分有益地探索,Filter就是一个很好的例子。

众所周知,Javascript或Vbscript作为脚本语言,其功能是不完善的,有许多高级语言的功能无法实现,如图象的处理功能。Filter是微软对CSS的扩展,与PhotoShop中的滤镜概念相似,它可以用很简单的方法对页面中的文字特效作出特效处理,静态如阴影、模糊的效果,动态如各种淡入淡出效果。下面我来仔细讲解一下(以下内容需在IE4.0下浏览):

静态滤镜:

要显示滤镜效果,必须先建立一个区域(<div>),并规定区域的范围(width和height),以下是对一个一般区域的规定:

<style>

<!--div {height:50;width:300;font-size:20pt}//-->

</style>

把此样式单放入到“<head>”标记和“<body>”之间,然后在“<body>”标记间填写正文:

<div>…………</div>

在“<div>”标记中插入样式单:style="filter:样式(参数1,参数2,参数3……);"

下面给出完整的例子:

<HTML>

<head>

</head>

<style>

div {height:100;width:400;font-size:20pt}

</style>

<body bgcolor=yellow>

<h1 align=center>Filter Effects</h1><hr>

<div style="filter:wave(add=0,freq=1,lightStrength=20,phase=50,strength=20)">

<img src="00cirr.gif">

this is div

is

wave-filtered</div>

<div style="filter:alpha(opacity=10,finishOpacity=10,style=10,startX=10,startY=10,finishX=20,finishY=30,add=0,direction=45,strength=10)">

this is alpha.

<img src=00cirr.gif>

</div>

<div style="filter:blur(add=0,direction=45,strength=5)">

this is blur effect.

<img src=00cirr.gif>

</div>

<div style="filter:chroma(color=white)">

this is chroma effect

<img src=00cirr.gif>

</div>

<div style="filter:flipV">

this is flipV effect

<img src=00cirr.gif>

</div>

</body>

</html>

以wave滤镜为例,它在垂直方向产生正弦波形,其中参数add表示是否加入原图象(1=是,0=否),freq表示波的数量,phase表示波形的起始偏移量,lightStrength表示光对波纹照射的强度,strength表示波的强度。下表是Filter支持的所有滤镜样式及其参数:

其中经常出现的color属性可以用十六进制表示(如#ff0000),也可以用rgb()表示(如rgb(255,0,0)),还可用系统承认的颜色名表示(如red)。

以上就是静态滤镜的全部内容,要注意的是CSS是区分大小写的!

动态滤镜

动态滤镜可以为页面添加动人的淡入淡出、图象转化效果,它可以分为两种blend(混合)和reveal(显示),前者可以使对象渐渐消失或出现,后者提供了24种图象转化的效果。对于动态滤镜的调用除去象在静态滤镜中要定义的滤镜类型,参数等等,还用到脚本语言控制它的状态,首先,在开始一个动态效果之前,先需要进行装备(Apply),然后播放(Play)动态效果,在动态效果进行中还可以中断动态效果(Stop),以上可以用下面的方法实现:

对象名.filters(滤镜数值).Apply()

对象名.filters(滤镜数值).Play()

对象名.filters(滤镜数值).Stop()

对于滤镜状态的判断可以通过“对象名.filters(滤镜数值).status”判断,该值为0时,表示滤镜未执行,为1时,表示滤镜已经完成,为2时表示滤镜在执行中。

在定义filter时,如上面所提到的,可以有混合(“filter:blendTrans(duration=时间数值)”,duration表示滤镜执行需要的时间,单位为秒)和显示(“filter:revealTrans(duration=时间数值,transition=过渡类型)”,过渡类型为从0-23的数值)两种,下面请看混合的例子:

<html>

<head>

</head>

<body>

<div style="position:absolute;left:200;top:50;width:400;height:220;background-

color:yellow;

color:blue;font-size:20px;border:solid black;"

id="main">

<div id="Inner1"

style="position:relative;left:20%;top:35%;width:60%;height:30%; filter:blendTrans(duration=3);">

<p align=center>演示区域</p>

</div>

<div id="control" style="position:absolute;left:180;top:180">

<input type=button value="开始" onclick="toggleMultimedia();">

</div>

</div>

<script language="JavaScript">

var curObj=Inner1,i=0;

words=new Array(3);

words[0]="<p align=center>渐渐隐去</p>";

words[1]="<p align=center>慢慢浮现</p>";

words[2]="<p align=center>这就是Blend的效果</p>";

function toggleMultimedia() {

curObj.innerHTML=words[i];

if (curObj.filters(0).status == 2) {

curObj.filters(0).Stop();

if (curObj.style.visibility == "hidden")

curObj.style.visibility = "visible";

else

curObj.style.visibility = "hidden";

window.setTimeout("toggleMultimedia()", 1);

}

//准备开始

curObj.filters(0).Apply();

if (curObj.style.visibility == "hidden")

{curObj.style.visibility = "visible";}

else

{curObj.style.visibility = "hidden";

if (i==2) i=-1;

i=i+1;}

//开始

curObj.filters(0).Play();

window.setTimeout("toggleMultimedia()",4000);

}

</script>

</body>

</html>

下面的例子是reveal的例子。

<HTML>

<head>

<script language="Javascript">

var i=0;

function filter_me(){

if (change.filters(0).status!=2){i=i+1;

if (i%2!=0){

change.style.backgroundColor='yellow';

change.filters(0).Apply();

change.filters(0).Play();

change.style.visibility='hidden';

}

else {

change.style.backgroundColor='brown';

change.filters(0).Apply();

change.filters(0).Play();

change.style.visibility='visible';}

}

}

</script>

</head>

<body>

<div id=change style="color:blue;border:solid

black;position:absolute;left:250;top:100;width:300;height:200;filter: revealTrans(Duration=0.8,Transition=23)"><h1>

Something like this :-></h1>

change.filters(0).Apply();

change.filters(0).Play();

change.style.visibility='hidden';

change.style.backgroundColor='yellow'

</div>

<div style="position:absolute;left:470;top:310">

<input type=button id=button1 value="Click me"

onClick="filter_me();">

</div>

</body>

</HTML>

在Frontpage98中也可以通过设定页面的参数得到,如要在进入页面时要显示某种特效可以在“<body>”标记前加入“<meta http-equiv="Page-Enter" content="revealTrans(Duration=1.0,Transition=22)">”,这个特效在Frantpage98菜单的“样式/页面特效”中找到,而reveal的24种特效你也可以在其中找到名称,值得一提的是第24种特效可以随机从前23种之一中选择一种显示。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有