+ Yanıtla
Toplam 7 sonuçtan 1 ile 7 arası olanlar

Konu Başlığı: IE altında düzgün görüntülenemeyen Transparan PNG sorununun çözümü

  1. #1

    IE altında düzgün görüntülenemeyen Transparan PNG sorununun çözümü

    Merhaba

    web işi ile uğraşan herkez bir kez olsada sayfa içinde Transparan bir PNG eklemeyi denemiştir. Firefox eklenen Transparan PNG görüntülemede bir sorun yaşamazken internet Explorerda aynı sonucu almamız mümkün olmuyor. Erik Arvidsson kullanılışı çok basit bir yöntem ile IE 5.5 ve sonrası versiyonlarıda Win32 Platformu üzerinde çözüme ulaşmış. Tüm ihtiyacınız img elementine png behavior eklemek. Aşağıda bunu nasıl yapabileceğini gösteren style örnek olarak ekledim. Bu style dışında iki adet dosyayada ihtiyacınız olacak. Bunlardan biri pngbehavior.htc ve diğer dosya ise 1x1 pixel boyutunda transparan bir gif olan blank.gif dosyası. Bu iki dosyanında aynı klasörde olmaları önemli bir not. Eğer blank.gif dosyasının yerini değiştirmek istiyorsanız pngbehavior.htc içinde blank.gif geçtiği satırı bulup taşımak istediğiniz url yazabilirsiniz.

    <style type="text/CSS">
    img { behavior: url("pngbehavior.htc") }
    </style>

    Bu iki dosyanın yanında Erik Arvidsson'un konuyu daha iyi anlatan, örneklerinde içinde bulunduğu dosyayı http://webfx.eae.net/download/pngbehavior102.zip altınan indirebilirsiniz. Kolay gelsin.

  2. #2

    Re: IE altında düzgün görüntülenemeyen Transparan PNG sorununun çözümü

    Mükemmel bir kaynak, teşekkür ederim kendi adıma..

  3. #3

    Re: IE altında düzgün görüntülenemeyen Transparan PNG sorununun çözümü

    .htc'ye izin vermek güvenlik problemi teşkil edecek bir kapı açmaktır. aşağıdaki .js kod parçacığı da png problemlerini çözmeyi sağlamakta.
    Kod:
    <script language="JavaScript" type="text/JavaScript">
    <!--
    var arVersion = navigator.appVersion.split("MSIE")
    var version = parseFloat(arVersion[1])
    
    if ((version >= 5.5) && (document.body.filters)) 
    {
       for(var i=0; i<document.images.length; i++)
       {
          var img = document.images[i]
          var imgName = img.src.toUpperCase()
          if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
          {
             var imgID = (img.id) ? "id='" + img.id + "' " : ""
             var imgClass = (img.className) ? "class='" + img.className + "' " : ""
             var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
             var imgStyle = "display:inline-block;" + img.style.cssText 
             if (img.align == "left") imgStyle = "float:left;" + imgStyle
             if (img.align == "right") imgStyle = "float:right;" + imgStyle
             if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
             var strNewHTML = "<span " + imgID + imgClass + imgTitle
             + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
             + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
             + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" 
             img.outerHTML = strNewHTML
             i = i-1
          }
       }
    }
    //--></script>
    

  4. #4

    Re: IE altında düzgün görüntülenemeyen Transparan PNG sorununun çözümü

    Açıkcası .htc uzantılı dosyaların güvenlik açığına neden olduklarını bilmiyordum. Ben uzun zamandır kullandığım bu yöntemden verim aldığım için sizlerle paylaşmak istedim. Uyarı için teşekkürler cgencer. Eklemiş olduğun script benim vermiş olduğum yöntemden daha basit ve kullanışlı. Fakat script bu hali ile çalışmıyor. Scripti bir function içine almamız ve browserin açılışta bu scripti çalıştırması için onload olayını başlamamız gerekli. cgencer sunmuş olduğun pratik yöntem için tekrar teşekkürler.
    Kod:
    <script language="JavaScript" type="text/JavaScript">
    <!--
    function fixPng() {
    var arVersion = navigator.appVersion.split("MSIE")
    var version = parseFloat(arVersion[1])
    
    if ((version >= 5.5) && (document.body.filters)) 
    {
       for(var i=0; i<document.images.length; i++)
       {
          var img = document.images[i]
          var imgName = img.src.toUpperCase()
          if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
          {
             var imgID = (img.id) ? "id='" + img.id + "' " : ""
             var imgClass = (img.className) ? "class='" + img.className + "' " : ""
             var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
             var imgStyle = "display:inline-block;" + img.style.cssText 
             if (img.align == "left") imgStyle = "float:left;" + imgStyle
             if (img.align == "right") imgStyle = "float:right;" + imgStyle
             if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
             var strNewHTML = "<span " + imgID + imgClass + imgTitle
             + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
             + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
             + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" 
             img.outerHTML = strNewHTML
             i = i-1
          }
       }
    }
    }
    
    window.onload = fixPng;
    //--></script>
    

  5. #5

    Re: IE altında düzgün görüntülenemeyen Transparan PNG sorununun çözümü

    <IMG> tagıyla kullanıldığında çalışıyor, fakat CSS de style="background:url(img/k2.png) repeat-x bottom " şeklinde kullandığımda transparan özelliği çalışmıyor. Nasıl düzeltebilirz acaba bunu?

  6. #6

    Re: IE altında düzgün görüntülenemeyen Transparan PNG sorununun çözümü

    Alıntı David Wenham tarafından gönderilen mesaj: Mesajı Göster
    <IMG> tagıyla kullanıldığında çalışıyor, fakat CSS de style="background:url(img/k2.png) repeat-x bottom " şeklinde kullandığımda transparan özelliği çalışmıyor. Nasıl düzeltebilirz acaba bunu?
    Ben böyle çözmüştüm.

    http://forum.zoque.net/showpost.php?...4&postcount=10

    Başka bir çözüm yoluda bulamadım.
    Aza sormuşlar nereye gidiyorsun diye. Çoğun yanına demiş. :confused:

  7. #7

    Re: IE altında düzgün görüntülenemeyen Transparan PNG sorununun çözümü

    http://forum.zoque.net/showthread.php?t=20637 böyle bir konuda geçmişti. (şimdiden söylim, örnekteki yaptığım iş değiştirilmiş. bu ne biçim iş diye kızmayın sonra )

    .

+ Yanıtla

Bu konu başlığı için etiketler

Mesaj Seçenekleri

  • Yeni başlık açamazsınız
  • Cevap yazabilirsiniz
  • Dosya ekleyemezsiniz
  • Mesajlarınızı değiştiremezsiniz