close

DIV圖層 Flash 覆蓋解決方式  

ok,這篇單純是因為google下的關鍵字第一篇找不到能夠直接用的,就找自己已經完成可用的方式做個紀錄。
前面幾篇過於冗長,不必要的資料太多了..
基於有點批評,就不說我下了什麼關鍵字了。 (或許是關鍵字下的太精簡?)

照例一行關鍵字:DIVCSSz-indexflashswf、圖層、覆蓋、被蓋住、遮住、absolute

相信網頁設計者會碰到使用flash時,將原本在其上的圖層蓋住,而這篇文章就是講解如何將其恢復到正常的圖層位置。

通常在越上方的圖層會將下方的圖層蓋住。

例如:

<div>
我是上方圖層</div>
<div>
我是banner圖層</div>

正常情況下top圖層若使用 position:absolute; ,則在相同位置時,top的資料會蓋住下方的banner圖層。
flash通常都會浮在最上方,跳脫了原本的層次,所以下面將講解如何處理。

處理方式為將置入的object(物件)標籤 embed加入個參數 wmode="transparent" 即可。
保險的話在加入 <param value="transparent"> ,並在css上方div圖層加入z-index:10,而下方div則加入z-index:1


看不懂對不對? 沒錯,google第一頁的就是這樣,不清不楚的。
下面例子:(使用meebomeebo me做示範)
環境解釋:top圖層放圖片、banner圖層放flash檔。


原始:

<div><img src="logo.png" alt="logo"  href="#"  /></div>
<div>
  <object width="190" height="275" >
    <param value="http://widget.meebo.com/mm.swf?"/>
    <embed src="http://widget.meebo.com/mm.swf?" width="190" height="275"></embed>
  </object>
</div>


增加部份:(使用粗體橘字)

<div><img src="logo.png" alt="logo"  href="#"  /></div>

<div>

  <object width="190" height="275" >

    <param value="http://widget.meebo.com/mm.swf?"/>
    <param value="transparent">

    <embed  wmode="transparent"  src="http://widget.meebo.com/mm.swf?"
type="application/x-shockwave-flash" width="190"
height="275"></embed>

  </object>

</div>


------------
手工分隔線-------------

簡單來說只需要在 object 標籤內加入 <param value="transparent">
並在embed標籤內,認src參數,在其加入 wmode="transparent" 即可。

而加入後也會有flash背景透明的效果。


css
部份的話,可以用此方式:(也是用上方的topbanner例子來舉例。)

連結/匯入方式

#top {
position:absolute;
z-index:10;
}

#banner{
position:absolute;
z-index:1;
}

z-index
上只要數字越大,圖層將會在越上面。下方的圖層則會被上方的遮住(若為同一位置的話)。



HTML內方式

<div
style="position:absolute; z-index:10;" ><img src="logo.png" alt="logo"  href="#"  /></div>
<div
style="position:absolute; z-index:1;" > .... 後面省略


------------------------------------
後記:

因為meebo me widget的標題不能使用中文,本來打算使用gif檔用圖層方式覆蓋,但若使用了 wmode="transparent" ,則無法輸入中文,所以只能作罷。

 

更改flash匯入方式

無論是 CSS 下拉式目錄,或是 Javascript 製作出來的彈出式清單,一旦遇到 Flash 時,就被 Flash 遮蓋住,這個問題困擾了不少設計人員,原則上有兩種解決方法,一種是在圖層中使用 IFRAME,另一種則是改變 Flash 嵌入方式。

以下提供改變Flash嵌入方式的語法:

程序代碼

<script src="images/swfobject.js"></script>
<div>無法播放 Flash 時替代的文字內容</div>
<script>
     var fo = new FlashObject("images/flash.swf", "mymovie", "200", "200", "7", "#ff00ff");
     fo.addParam("wmode", "transparent");
     fo.write("flashcontent");
</scrip>



步驟是先連結 swfobject.js 這個檔案,檔案的官方下載位置是:

http://download.macromedia.com/pub/developer/swfobject_1.4.zip

壓縮檔中檔案很多,是範例及說明,要用到的只有 swfobject.js一個檔案。

然後宣告一個放置 flash 的區塊,這個例子的識別名稱為 flashcontent,接下來,建立 FlashObject 物件,語法是:

程序代碼

var fo=new FlashObject(swf,識別元,寬度,高度,Flash版本,背景色);



如果需要加其他屬性,例如透明,則使用 fo.addParam 加入,語法為:

程序代碼

fo.addParam("wmode", "transparent");



最後,把物件寫到 flashcontent 區塊中,語法為:

程序代碼

fo.write("flashcontent");

arrow
arrow
    全站熱搜

    avrilnote 發表在 痞客邦 留言(0) 人氣()