PNGs mit Alphakanal im IE6 nutzen

Posted by Poddn on Nov 5th, 2007

PNGs bieten den ungeheuren Vorteil, richtige Alphakanäle auf Websites nutzen zu können. Mozilla/Firefox und der IE7 unterstützen Transparenz bei PNGs nativ, der IE6 lässt sich mit Hilfe des AlphaImageLoader-Filters von Microsoft dazu bringen, Transparenz entsprechend darzustellen.

Aber der IE6 wäre nicht der IE6, wenn es da nicht irgendeinen Haken gäbe, richtig?

Genauer gesagt gibt es sogar mehrere Haken:

  1. AlphaImageLoader funktioniert nur im IE5.5 und IE6 auf Windows-Plattformen. Je nach Browser muss eine Fallunterscheidung getroffen werden
  2. Transparente PNGs können nicht gekachelt werden. Ein Einsatz als Hintergrundmuster fällt also aus.
  3. Der Filter behandelt PNGs nicht als Hintergrundbilder - selbst wenn man sich das eigentlich so vorstellt. Dieser Umstand macht das Positionieren von interaktiven Objekten - zum Beispiel Links - etwas schwierig.

Trotz dieser Einschränkungen lässt sich mit transparenten PNGs im IE6 doch noch einiges zaubern. Man muss nur wissen wie:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Look Ma, Transparency!</title>
 
<style type="text/css">
body {
	background-image:url('holes.gif');
	margin:0px;
	padding:0px;
}
#mybox {
	position: absolute;
	left: 50px;
	top: 50px;
	width: 376px;
	height: 376px;
	background-image: url('box.png');
	background-repeat: no-repeat;
	padding: 20px;
}
</style>
 
<!--[if lt IE 7]>

<style type="text/css">
#mybox	{
	background-image:none;
	filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(
	src='box.png',sizingMethod='crop')
	}
</style>
<![endif]-->
 
</head>
<body>
 
<div id="mybox">
	Look Ma, Transparency!
</div>
</body>
</html>

Der interessante Teil ist der, der in dem Conditional Comment steht:

  • Wir überschreiben die background-image Information mit “none”. Gefilterte PNGs sind für den IE6 keine Hintergrundbilder - er würde also beide PNGs übereinander anzeigen: das gefilterte und das ungefilterte.
  • Wir geben dem DIV die Filtereigenschaft mit. Als Quelle geben wir unser transparentes PNG an. Zusätzlich geben wir dem Filter sizingMethod=’crop’ mit auf den Weg: Sollte das PNG größer als der DIV-Container sein, wird der Rest des Bildes abgeschnitten. Neben ‘crop’ gibt es noch ’scale’, welches das PNG auf die Größe des DIVs skaliert und ‘image’, welches das DIV auf die Größe des PNGs skaliert.

Das sieht doch schonmal ganz gut aus. Aber was passiert, wenn wir einen Link in unsere Box einbauen wollen?

39
40
41
42
43
<div id="mybox">
	Look Ma,
	<a href="http://en.wikipedia.org/wiki/Transparency"
	target="_blank">Transparency!</a>
</div>

Der Link ist im IE6 nicht anklickbar. Schuld ist der Filter. Damit Links über transparenten PNGs funktionieren, gibt es zwei Dinge zu beachten:

  1. Das Element, auf das der AlphaImageLoader-Filter angewendet wird, darf keine “position”-Eigenschaft haben
  2. Die Links hingegen benötigen unbedingt eine “position”-Eigenschaft

Wir können also unser PNG-DIV nicht direkt positionieren, sonst funktionieren die Links nicht. Ist aber halb so wild, denn wir können das DIV in ein anderes DIV werfen, welches wir wiederum problemlos positionieren können. Zu diesem Zweck legen wir uns ein Container-DIV an und entfernen die Positionierungsinformationen aus unserem PNG-DIV:

13
14
15
16
17
18
19
20
21
22
23
24
25
#container {
	position: absolute;
	left:    50px;
	top:    50px;
}
 
#mybox    {
	width:    376px;
	height: 376px;
	background-image: url('box.png');
	background-repeat: no-repeat;
	padding: 20px;
}

Zu guter Letzt positionieren wir den Link relativ:

25
26
27
#mybox a {
	position:relative;
}

Der Aufruf unseres PNG-DIVs sieht dann folgendermaßen aus:

39
40
41
42
43
44
<div id="container">
	<div id="mybox">
		Look Ma, <a href="http://en.wikipedia.org/wiki/Transparency" 
		target="_blank">Transparency!</a>
	</div>
</div>

Fertig sieht das ganze dann so aus: transparency01.html

Python ist toll!

Posted by Poddn on Oct 20th, 2007

Ne jetzt, ehrlich! Ich hatte das Vergnügen, mich in letzter Zeit eingehendst mit Python beschäftigen zu können. Ich hab sogar Geld dafür bekommen ;)

Ein paar Sachen, die mir an Python wirklich gut gefallen:

Codeformatierung
Anstatt der - z.B. bei php üblichen - geschweiften Klammern werden Codeblöcke die in Schleifen, Bedingungen, Funktions- oder Objektdefinitionen stehen einfach eingerückt. Dadurch wird der Code zwangsweise sehr gut lesbar. Natürlich kann man Blöcke auch in anderen Script- oder Progammiersprachen einrücken, man muss es aber nicht. Bei Copy/Paste-Aktionen siegt dann öfter mal der Schweinehund.

Alles ist ein Objekt
Python ist objektorientiert. Aber sowas von. Im Grunde genommen ist alles was man in Python produziert ein Objekt. Um auf Methoden, Eigenschaften oder andere Objekte innerhalb von Objekten zugreifen zu können, klebt man einfach alles mit einem Punkt zusammen. Das kann dann z.B. so aussehen:
value = browser.getform('form1').getfield('field1').getvalue

Dokumentation
Kommentare, die man unter die Definition eines Objekts oder einer Methode des Objekts schreibt, werden automatisch vom Help-Befehl auf der Konsole verwurstet. Und wenn man nicht weiss was ein Objekt alles so kann, kann man sich sämtliche Methoden und Eigenschaften per dir(objektname) anzeigen lassen.

Community
Irgendwie habe ich das Gefühl, als ob Pythonbenutzer reifer sind. So gut wie alle Postings die mir google zu meinen anfänglichen Problemen ausgeworfen hat, waren konstruktiv und flamefrei.

Wer Lust hat sich Python mal etwas genauer anzuschauen dem kann vor allem Dive into Python empfehlen.

PNG und Gamma-Korrektur

Posted by Poddn on Feb 1st, 2007

Im Grunde genommen sind PNGs eine wirklich tolle Sache fürs Web. 24bit und Alpha-Kanal eröffnen dem Webdesigner ungeahnte Möglichkeiten. Wenn da nicht… ja wenn da nicht diese Sache mit der Gamma-Korrektur wäre.

Das PNG-Format sieht die Möglichkeit vor, beim Speichern den Gammawert des Systems mit in die Datei zu schreiben. Programme die das PNG anzeigen, sollen dann im Gegenzug den Gammawert auslesen können und an den eigenen Gammawert anpassen können.

Funktioniert aber nicht. Meistens scheitert es daran, dass entweder das Programm das das PNG gespeichert hat, oder das Programm das das PNG anzeigt keine Ahnung haben wie der Gammawert des Systems lautet - und dann fängt das große Raten an. Das kann nur schiefgehen.

Im Prinzip bleiben da nur zwei Möglichkeiten offen:

1) Beim Bau von Websites komplett auf PNG verzichten
2) Nur PNG benutzen und auf (kritische) Farbangaben in html und css verzichten

Alles in allem nicht so toll.

Mehr Infos zu dem Thema gibt es hier: The Sad Story of PNG Gamma “Correction”

Seiten bauen für alte Internet Explorer

Posted by Poddn on Jan 15th, 2007

Der Internet Explorer ist und bleibt eine Krux, wenn man seine Websites nicht nur nach der WFM-Regel (”Works for me”) bauen möchte. Vom Idealzustand, dass alle Browser den html-Code gleich interpretieren, sind wir ja leider weit entfernt - insofern sind Testläufe auf verschiedenen Browserversionen unerlässlich.

Doch wohingegen man bei den verschiedenen Mozilla-Derivaten problemlos mehrere Versionen installieren kann, stößt man beim Browser aus Redmond schonmal an die Grenzen des Betriebssystems, denn Microsoft hat die Möglichkeit, mehrere Versionen des Internet Explorer parallel installiert zu haben, nicht vorgesehen.

Was also tun? Eine gängige Methode lautet: Mehr Rechner kaufen. Eine andere Methode - für die nicht ganz so solventen unter uns - besteht darin, mit VMware mehrere Windowsinstallationen auf einem Rechner laufen zu haben. Jedoch sind im Grunde genommen beide Vorgehensweisen Overkill. Mit Kanonen auf Spatzen, sozusagen.

Auf der Suche nach Alternativen bin ich auf zwei interessante Lösungsansätze gestoßen:

Zum einen wäre da der Netrenderer von meineipadresse.de - ein serverseitiges Script, das einem einen Screenshot der Website als Ergebnis liefert, wahlweise mit IE7, IE6 oder IE5.5 gerendert. Zudem bietet das Script die Möglichkeit, sich die Unterschiede zwischen IE6 und IE7 Rendering direkt anzeigen zu lassen. Die Nachteile des Scriptes liegen jedoch auf der Hand: Die zu testende Website muss von außen erreichbar sein, was nicht immer unbedingt erwünscht ist. Und da es sich lediglich um einen Screenshot handelt, können Hoverzustände nicht getestet werden.

Einen konsequenteren Weg geht da Yousif Al Saif (weia, jetzt habe ich bestimmt das Heimatschutzministerium auf der Site) von Tredosoft, der sämtliche IE-Versionen aus dem evolt.org Browser-Archiv genommen und daraus einen rundum-sorglos-Installer inklusive Registry-Einträgen und fehlender DLLs gebaut hat. Zum jetzigen Zeitpunkt befinden sich in dem Multiple_IE genannten Paket neben dem IE6 und dem IE5.5 auch der IE5, der IE4 und der IE3.

Rumms

Posted by Poddn on Nov 26th, 2006

Lexus kaputtRauscht der Nachbarsjunge mir doch gestern abend mit seinem Fahrrad glatt ins (geparkte) Auto. Rücklicht im Eimer, Kofferraumdeckel verbeult, Stoßstange zerkratzt… Glücklicherweise hab ich ehrliche Nachbarn. Trotzdem ist der Zeitpunkt wirklich ungünstig gewählt, so mitten im Umzug…

Spam Poetry

Posted by Poddn on Nov 20th, 2006

Seht doch mal, was für ein Kleinod an dichterischer Spamkultur ich in meinem Posteingang gefunden habe:

Kj kk kl or km kn or ko kp. Proboards Online a bdd in Forumbull Saybox Temporal Solid is Snake am! Uc ud ue uf or ug uh! Both os just my dvds or get am.
Boards registered users threads created posts made Copyright a. Ft fu in fv fw fx fy fz ga gb.
Producer License Shareware Price Size Last September or. Great cause isnt in that annoying.
Divisionaa languagea Beautiful Minda boy Named. Eg eh ei ej ek el am em! Qa qb qc qd qe of qf.
Comply or mos rarely directly. Extracted restart whenever want am.
Spread word winter tis season am warm tha.
Firstprice is highest firstitem Titleeasy Cable Hook. Sound card available includes Master.
Spread word winter tis season am warm tha.
Vg vh vi vj. New a Feature Limited Proboards?
Imo anybody else notices please. Playpause vcd cd Audio Normal Slow in Stop Previous is.
Extract of remembers downloaded extracted restart or whenever want.
Game needed button youre. Page Trackback Thread a Tools altivec na or Status am. Vcd or cd Audio Normal Slow Stop Previous Track.
Proboards Online a bdd in Forumbull Saybox Temporal Solid is Snake am! Qd qe qf in qg qh qi am qj.
Jelsoft Ltdseo vbseo of rc av Artdesign Grabber Pictures.
Sign am inout Craft Storessign anteshari of Crochenit. Jelsoft Ltdseo vbseo of rc av Artdesign Grabber Pictures. Unit Converter Desktop is Reminder am.

Der Urheber dieses recht eindrucksvollen Werks nennt sich “Feature Limited” - ein Name, den man sich unbedingt merken sollte!

O’lala!

Posted by Poddn on Nov 17th, 2006

Ségolène Royal vs. Angela MerkelAuch die Franzosen haben jetzt ihr Polit-Girlie. Scheint ja groß in Mode zu kommen. Die Sozialistin Ségolène Royal gewann mit großer Mehrheit die Wahl zur Präsidentschaftskandidatin ihrer Partei und tritt damit zur Präsidentschaftswahl im Frühjahr an. Irgendwie könnte man da ja fast neidisch sein auf die Froschies, immerhin müssen wir uns mit einem echten Merkel herumplagen. Achja Altersunterschied? Merkel ist ein Jahr jünger. Kein Witz.

Redesign!

Posted by Poddn on Nov 15th, 2006

Ja ich gebe zu, das alte Design hat nicht allzu lange gehalten. So toll war’s ja auch nicht… Mal schauen wie lange das neue Design so hält. Wenigstens ist jetzt die Hamburg-Burg drin ;)

Throwies

Posted by Poddn on Nov 1st, 2006

LeuchtdiodenEine sehr interessante Form des Graffiti habe ich auf Graffitiresearchlab.com entdeckt. Man kauft eine Handvoll Leuchtdioden, einen Haufen Knopfzellen und einen Klumpen Magneten und backt den ganzen Krempel mit Klebeband zusammen.

Zugegeben, hört sich ein wenig langweilig an. In Verbindung mit ein paar Bekannten und einer Nacht-und-Nebel-Aktion kann man aber schon ganz interessante Effekte erzielen, wie dieses Video beweist.

Eine sehr schöne Anleitung zum Selberbasteln findet sich übrigens auf instructables.com

Microsoft Firefox

Posted by Poddn on Oct 31st, 2006

MSFirefox
Da werden sich die IT-Profis unter euch sicherlich freuen: endlich habt ihr die Möglichkeit, auf der hippen Welle des Open Source mitzureiten, ohne eure Prinzipien aufgeben zu müssen. Unglaublich aber wahr: Microsoft hat sich den Firefox-Browser (vor allem bekannt wegen seiner Sicherheitslöcher, Memory Leaks und Instabilität) vorgenommen und in ein performantes und sicheres Stück Software verwandelt.

Käuflich erwerben könnt ihr den Browser auf www.msfirefox.com.

« Prev - Next »