gulli:board Logo

Anzeige


  Antwort
s_zwerg
Ende Neu
 
Benutzerbild von s_zwerg
 
Registrierungsdatum: Jun 2000
Ort: Hysteria
Beiträge: 3.571
Suche Lösung: Der IE und halbtransparente PNGs als 'background'

Guten Morgen zusammen,

das Problem der Darstellung von halbtransparenten Grafiken im PNG-Format ist bekannt und es gibt auch eine gute Lösung für diesen Fall. Mit einer kleinen Datei namens pngbehavior.htc und der Zuweisung an das img-Tag per CSS, ist die Sache schnell erledigt.

Mein Problem ist allerdings, dass der entsprechende Alpha-Channel nicht auf ein Tag angewendet werden soll, sondern auf eines seiner Attribute, genauer auf background-image. Leider hilft das Zuweisen des Filters&nbsp;- auf z.B. die ID #schatten - nicht weiter und die Hintergrundgrafik des entsprechend ausgezeichneten <div>'s, zeigt keine Spur von Transparenz.

Eventuell habe ich auch nur etwas übersehen. Es wäre super, wenn jemand eine Lösung für mich hätte.


----------------------------------

Hier nochmal der Code für diejenigen, denen die Lösung für transparente PNGs nicht bekannt ist:

pngbehavior.htc (einfach im root abspeichern und im CSS drauf verweisen):
Code:
<public:component> <public:attach event="onpropertychange" onevent="propertyChanged()" /> <script> var supported = /MSIE (5\.5)|[6789]/.test(navigator.userAgent) && navigator.platform == "Win32"; var realSrc; var blankSrc = "blank.gif"; if (supported) fixImage(); function propertyChanged() { if (!supported) return; var pName = event.propertyName; if (pName != "src") return; // if not set to blank if ( ! new RegExp(blankSrc).test(src)) fixImage(); }; function fixImage() { // get src var src = element.src; // check for real change if (src == realSrc) { element.src = blankSrc; return; } if ( ! new RegExp(blankSrc).test(src)) { // backup old src realSrc = src; } // test for png if ( /\.png$/.test( realSrc.toLowerCase() ) ) { // set blank image element.src = blankSrc; // set filter element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='scale')"; } else { // remove filter element.runtimeStyle.filter = ""; } } </script> </public:component>
Das CSSheet:
Code:
<style type="text/css"> img { behavior: url("pngbehavior.htc"); } </style>
Quelle: http://webfx.eae.net/dhtml/pngbehavior/pngbehavior.html
Alt 01. 10. 2004, 08:30 s_zwerg is offline Mit Zitat antworten #1
Chrimp
[-choose-life-]
 
Benutzerbild von Chrimp
 
Registrierungsdatum: Jul 2000
Ort: /
Beiträge: 4.114
Ich weniß nicht sicher, ob es dir hilft, aber ich bin da mal über einen Link gestolpert:
http://82.165.8.199/typo3cms/exotec-...ndex.php?id=90
Alt 01. 10. 2004, 18:13 Chrimp is offline Mit Zitat antworten #2
s_zwerg
Ende Neu
(Threadstarter)
 
Benutzerbild von s_zwerg
 
Registrierungsdatum: Jun 2000
Ort: Hysteria
Beiträge: 3.571
Wenn ich das richtig sehe, bezieht sich der Text darauf, einem Bild Transparenz zuzuweisen. Ich würde gerne einen Transparenzverlauf (Schatten) anzeigen, der als PNG abgespeichert ist und im Stylesheet als background-image deklariert ist. Hilft mir leider nicht so richtig weiter. Aber danke für den Link! :-)
Alt 01. 10. 2004, 18:50 s_zwerg is offline Mit Zitat antworten #3
aNtiCHrist
Moderator
 
Benutzerbild von aNtiCHrist
 
Registrierungsdatum: May 2000
Beiträge: 16.167
Hier hilft mal wieder IE7.

Beschreibung: http://dean.edwards.name/IE7/

konkretes Beispiel: http://dean.edwards.name/IE7/compati...ackground.html

Übrigens: Wenn man die Einbindung der htc-Datei mit behavior:... innerhalb eines Conditional Comments vornimmt, bleibt das Dokument sogar gültig...

Geändert von aNtiCHrist (02. 10. 2004 um 02:06 Uhr).
Alt 02. 10. 2004, 01:33 aNtiCHrist is offline Mit Zitat antworten #4
s_zwerg
Ende Neu
(Threadstarter)
 
Benutzerbild von s_zwerg
 
Registrierungsdatum: Jun 2000
Ort: Hysteria
Beiträge: 3.571
Danke Antichrist,

worüber ich bei Edwards leider stolpere:

"but a noticeable affect is, that if an element has a PNG background, then none of its child elements will receive mouse events. Killing "hovers" and the like.

Because a filter is not a real background image, it cannot be offset using background-position nor can it be tiled using background-repeat."


Für den Einsatz, so wie ich ihn mir gedacht hätte, leider nicht nützlich. Der Hintergrund sollte sich schon in y-Richtung wiederholen.
Das alle child-Elemente ihre Maus-Gestiken verlieren, macht mich auch nicht glücklich.

Das "Workaround" beruht zudem auch nur auf dem von Arvidsson, welches ich oben schon nannte. ;-)


Bleibt mir also wohl doch nur ein Layout mit einem fixen Hintergrund. ;-)


s_zwerg
Alt 03. 10. 2004, 16:18 s_zwerg is offline Mit Zitat antworten #5
aNtiCHrist
Moderator
 
Benutzerbild von aNtiCHrist
 
Registrierungsdatum: May 2000
Beiträge: 16.167
Tja, dann sieht es in der Tat schlecht aus. Alternativ könntest du auch einen dezenten Hinweis über die eingeschränkte Funktionalität im IE auf der Seite platzieren. Dann zur Not mit einer serverseitigen Browserweiche dem IE ein nicht transparentes Bild servieren. Andere Browser bekommen dann trotzdem das normale Bild.
Alt 03. 10. 2004, 17:32 aNtiCHrist is offline Mit Zitat antworten #6
Themen-Optionen Antwort


Themen-Optionen

Gehe zu



Alle Zeitangaben in UTC +1. Es ist jetzt 15:19 Uhr.
Angetrieben von vBulletin
Copyright ©2000 - 2006, Jelsoft Enterprises Ltd.
neurotypical.gullisys.net

Anmelden

Benutzername
Kennwort
© Copyright 1998-2008 gulli.com home | regeln | sitemap | kontakt | impressum | partner | downloads | disclaimer |
Message Boards and Forums Directory