談Filter在網頁中的運用

來源:互聯網
上載者:User
網頁   自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="http://www.webjx.com/htmldata/2005-02-23/http://www.webjx.com/htmldata/2005-02-23/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=http://www.webjx.com/htmldata/2005-02-23/http://www.webjx.com/htmldata/2005-02-23/00cirr.gif>
</div>
<div style="filter:blur(add=0,direction=45,strength=5)">
this is blur effect.
<img src=http://www.webjx.com/htmldata/2005-02-23/http://www.webjx.com/htmldata/2005-02-23/00cirr.gif>
</div>
<div style="filter:chroma(color=white)">
this is chroma effect 
<img src=http://www.webjx.com/htmldata/2005-02-23/http://www.webjx.com/htmldata/2005-02-23/00cirr.gif>
</div>

<div style="filter:flipV">
this is flipV effect
<img src=http://www.webjx.com/htmldata/2005-02-23/http://www.webjx.com/htmldata/2005-02-23/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="開始" >
</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" 
>
</div>
</body>
</HTML>

  在Frontpage98中也可以通過設定頁面的參數得到,如要在進入頁面時要顯示某種特效可以在“<body>”標記前加入“<meta http-equiv="Page-Enter" content="revealTrans(Duration=1.0,Transition=22)">”,這個特效在Frantpage98菜單的“樣式/頁面特效”中找到,而reveal的24種特效你也可以在其中找到名稱,值得一提的是第24種特效可以隨機從前23種之一中選擇一種顯示。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.