Avatar billede bgo Nybegynder
23. marts 2003 - 02:35 Der er 3 kommentarer og
2 løsninger

Fade transperant

Ja, nu har jeg prøvet selv, men mine js evner er knap så gode endnu, og jeg har ikke kunnet søge mig til de gyldne linier her :)

Jeg skulle bruge en funktion der fader et objekt ind og en der fader det ud igen. Som parametre skulle objektets navn og maximum opacity overføres, evt. fade hastighed. Der er nemlig flere objekter der skal fades uafhængigt af hinanden på baggrund af henholdsvis onClick og onMouseOver/Out events.

Objekterne er hidden som udgangspunkt, og når de er fadet ud skal de være hidden igen.

Jeg håber der er nogen der vil hjælpe med at konstruere disse funktioner.

bgo
Avatar billede Slettet bruger
23. marts 2003 - 03:10 #1
sådan et finder du inde på www.dhtmlcentral.com
Avatar billede Slettet bruger
23. marts 2003 - 09:45 #2
Her:

<html>
<head>
<script>
to = new Array();

function fade(obj, mo, hast) {
  clearTimeout(to[obj.id]);
  if (obj.filters.alpha.opacity != mo) {
    obj.filters.alpha.opacity += (obj.filters.alpha.opacity < mo) ? 10 : -10;
    to[obj.id] = setTimeout("fade(document.all." + obj.id + ", " + mo + ", " + hast + ");", hast);
  } 
}
</script>
</head>
<body>
<img src="billede1.gif" onMouseOver="fade(this, 100, 50);" onMouseOut="fade(this, 20, 50);" id="bill1" style="filter: alpha(opacity=20);">
<img src="billede2.gif" onMouseOver="fade(this, 70, 50);" onMouseOut="fade(this, 10, 50);" id="bill2" style="filter: alpha(opacity=10);">
</body>
</html>
Avatar billede Slettet bruger
23. marts 2003 - 09:47 #3
Det virker kun i IE. Hvis de også skal virke i NS6+, må du sige til.
Scriptet kaldes, som du ser, med:

fade(reference-til-objektet-der-skal-fade, opacity-der-skal-fades-til, hastighed);

hastighed er intervallet i millisekunder mellem hver kald af funktionen. Jo mindre, jo hurtigere.

I øvrigt er det meget vigtigt, at al opacity skrives i tiere. Altså ikke noget med opacity=87 eller sådan noget.
Avatar billede bgo Nybegynder
23. marts 2003 - 12:49 #4
phoenixy:

Ser genialt godt ud. Har bare et mindre problem... Jeg har lavet følgende lille funktion for at få sidste detalje med:

function fader(inout, obj, mo, hast){
if (inout=='in'){
document.getElementById(obj.id).style.visibility='visible';
fade(obj, mo, hast);
}else{
fade(obj, mo, hast);
document.getElementById(obj.id).style.visibility='hidden';
}
}

Problemet består i else-delen, for objektet bliver sat hidden før fade er færdig-udført. Kan jeg på én eller anden måde få den til ikke at udføre dén sætning før fade er udført?

bgo
Avatar billede bgo Nybegynder
23. marts 2003 - 12:58 #5
Ok, hehe fandt selv en løsning på det sidste :) Så hele koden ser således ud:

to = new Array();
var done = 'false';

function fade(obj, mo, hast) {
  done = 'false';
  clearTimeout(to[obj.id]);
  if (obj.filters.alpha.opacity != mo) {
    obj.filters.alpha.opacity += (obj.filters.alpha.opacity < mo) ? 10 : -10;
    to[obj.id] = setTimeout("fade(document.all." + obj.id + ", " + mo + ", " + hast + ");", hast);
  }else{
  done = 'true';
  }
}

function fader(inout, obj, mo, hast){
if (inout=='in'){
document.getElementById(obj.id).style.visibility='visible';
fade(obj, mo, hast);
}else{
fade(obj, mo, hast);
if (done=='true'){document.getElementById(obj.id).style.visibility='hidden';}
}
}

bgo
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester