20. juni 2003 - 18:35Der er
14 kommentarer og 1 løsning
Transparent .png billede i IE
Hejsa!
Jeg bruger i et nyt design et .png billede, hvor en stor del af det er gennemsigtigt. Mit problem er, at det rigtigt nok er gennemsigtigt i mange browsere, men i IE virker det bare ikke som ønsket! Min partner siger man godt kan lave en png billede som også er gennemsigtigt i IE, evt. med noget CSS eller noget.
Nogle der ved hvordan jeg skal skrive koden eller hvad jeg skal gøre? Kan det være rigtigt jeg kun kan bruge .gif billeder til IE?
Du kan godt bruge transparente png-billeder i MSIE - de skal blot loades gennem det filter, der hedder AlphaImageLoader. Her er en rigtig nem måde at gøre det på:
1. Indsæt dit billede som sædvanligt. NB: Du SKAL sætte width og height, for at det her skal virke.
2. Tilføj følgende css-regel i dit stylesheet:
img {behavior: url(pngalpha.htc)}
3. Kopier følgende, indsæt det i en tom tekst-fil og gem det som "pngalpha.htc". Hvis du vælger et andet navn og/eller at placere filen i en undermappe, så ret url'en under punkt 2.
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 && /\.png$/i.test(src)) { element.src = blankSrc; return; }
if ( ! new RegExp(blankSrc).test(src)) { // backup old src realSrc = src; }
// test for png if (/\.png$/i.test(realSrc)) { // 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>
---------- kopier hertil
4. Lav en gennemsigtig gif-fil på 1 x 1 px og gem den som "blank.gif". Hvis du vælger et andet navn og/eller at placere filen i en undermappe, så tilret variablen "blankSrc" i behavior-filen i punkt 3.
5. Nu sker der følgende, når din side loades: Behavior'en kigger på, om der er png-filer i dokumentet. Hvis der er, sætter den deres src til at være den gennemsigtige "blank.gif", loader png-filen gennem AlphaImageLoader og lægger den ovenpå, så den er det eneste, du ser.
Det lyder mere besværligt, end det er: Du skal trods alt blot gemme behaviour-filen, lave gif-filen, samt tilføje en ny css-regel én gang for alle - så spiller det hele helt automatisk...
Det lyder helt fantastisk det der... Men jeg har lige siddet og leget med det... Og jeg kan altså ikke få det til at virke... Virker det ikke i dag eller er det bare mig der er en hat...?!
Det vil sige... Det der sker er at billedet "forsvinder"... Dvs. det ser ud som om at den loader det "blanke" billede, men PNG-billedet bliver ikke loadet ind ovenpå...
killer_r -> Har du husket at sætte width og height på billedet? Gerne med inline style, fx: <img style="height:50px; width:120px" src="filnavn.png" alt="xx"/>
Ja, det har jeg... Jeg har godt nok ikke brugt inline styles, men alm. height og width-attributter...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.