如何把自己變成電腦
把所有快樂儲存起來
將所有煩惱全部刪除
累的時候裝個不斷電
情緒不穩時加穩壓器
需要放空時就重開機
想重新出發請格式化
  C:> Set me = %ComputerName%  
  C:> Xcopy *.Happy %%Me  
  C:> Del *.Trouble  
  C:> If EXIST Tired Setup UPS  
  C:> If EXIST Swing Setup Stabilizer  
  C:> If EXIST Vent Reboot  
  C:> If ResetGame==True Format C:  

11.14.2008

在 MenuBar 上的圖片處理問題(解決IE6不能顯示PNG透明背景及圖文對齊問題)

我的 Menubar 是一個 [HTML/Javascript] widget,雖然有使用CSS定義,但是臨時想在 Menubar 上,在文字的左側增加一個小 icon,結果圖形和文字老是無法垂直居中。


後來找了了這篇 [藍森林-自由軟件] - 用css怎麼描述圖片align=absmiddle這一屬性?,才總算搞定。

其實我只是在 <img src="" > 中加入 align="absmiddle" 這一串字,其他的詳細說明可以查看 [藍森林-自由軟件] 上的該篇討論文章,因為我目前僅用在 Menubar 的圖形+文字,的顯示所以沒有定義在 CSS 上。

在 Firefox 顯示上算是搞定,但是卻發現在IE6的顯示上,透明圖形變成不透明了...

在 Firefox 上的功能表:(如設定功能表靠左,透明背景的CSS 圖片也正常顯示)

image

在IE6上的功能表:(功能表居然跑到右半邊的中間位置,CSS圖片沒有透明效果)

image

後來找到了使用Js來讓IE支援png圖片透明效果 這篇文章,按照它的作法,發覺無效。幾經測試才發覺它上面的程式碼有誤,多了一個字 "defer",刪除之後儲存就OK了。

其實 [CSS] 讓 IE6 下的 PNG 圖片透明 也是一種方式,還是採用 Microsoft 建議的方式。詳細的說明可參閱微軟技術支援服務的【PNG 檔案在 Internet Explorer 中不會顯示透明度】文件說明。

先把相關操作紀錄下來:

  • 圖片垂直居中的方式: 在 <img src="" > 中加入 align="absmiddle"
  • PNG 透明背景的圖片,在IE6 顯示透明背景效果的方式,如下:
  1. 建立pngfix.js:
    • var arVersion = navigator.appVersion.split("MSIE")
      var version = parseFloat(arVersion[1])

      function fixPNG(myImage)
      {
      if ((version >= 5.5) && (version < 7) && (document.body.filters))
      {
       var imgID = (myImage.id) ? "id='"+myImage.id+"'":""
       var imgClass = (myImage.className) ? "class='" +myImage.className +"'":""
       var imgTitle = (myImage.title) ?
           "title='" +myImage.title +"'":"title='" +myImage.alt+"'"
       var imgStyle = "display:inline-block;" +myImage.style.cssText
       var strNewHTML = "<span "+imgID+imgClass+imgTitle
           +" style=\"" "width:"+myImage.width
           +"px; height:"+myImage.height
           +"px;"+imgStyle+";"
           +"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
           +"(src=\'"+myImage.src+"\', sizingMethod='scale');\"></span>"
           myImage.outerHTML = strNewHTML
      }
      }
  2. 在模板的<HEAD> </HEAD> 區段中加上如下程式碼:
    • <!--[if lt IE 7]>
      <script defer type="text/javascript" src="pngfix.js"></script>
      <![endif]-->
  3. 在需要透明的 png 的地方 <img src="" > 中加入onload="fixPNG(this)"

有空在來研究 CSS 在 IE6 的功能表位置會跑掉的問題。

沒有留言:

張貼留言