[Javascript] Slide in ombouwen naar slide uit

Pagina: 1
Acties:

  • tweakingrobbie
  • Registratie: Augustus 2003
  • Laatst online: 16-10-2025
Ik heb een javascriptje waarmee ik een verborgen <div> box zichtbaar kan laten insliden, waarna hij dus te lezen is door de bezoekers. Ook kan de box weer worden verborgen maar dat gaat niet zoals ik het graag zou willen. Nu wordt namelijk in 1 keer de visibility weer op hidden gezet, terwijl ik hem eigenlijk netjes zou willen laten uitsliden. Ik moet dus de inslide functies initboxv2() en dropinv2() om zien te bouwen naar een precies tegenovergestelde functie, alleen lukt dat niet. Wie helpt?

In de <head> staat:
code:
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<style type="text/css">
<!--
#dropinboxv2cover{
width: 600px; 
height: 90px;  
position:absolute; 
z-index: 100;
overflow:hidden;
visibility: hidden;
}

#dropinboxv2{
width: 580px; 
height: 70px; 
background-color: #ffffff;
padding: 4px;
position:absolute; 
left: 0;
top: 0;
}
//-->
</style>

<script type="text/javascript">
<!--
var dropboxleft=0 // Positie van de div (links, in pixels)
var dropboxtop=0 // Positie van de div (top, in pixels)
var dropspeed=2 // Snelheid van het binnensliden in pixels

var ie=document.all
var dom=document.getElementById

function initboxv2(){ // De functie die wordt aangeroepen om in te sliden
if (!dom&&!ie)
return
crossboxcover=(dom)?document.getElementById("dropinboxv2cover") : document.all.dropinboxv2cover
crossbox=(dom)?document.getElementById("dropinboxv2"): document.all.dropinboxv2
scroll_top=(ie)? truebody().scrollTop : window.pageYOffset
crossbox.height=crossbox.offsetHeight
crossboxcover.style.height=parseInt(crossbox.height)+"px"
crossbox.style.top=crossbox.height*(-1)+"px"
crossboxcover.style.left=dropboxleft+"px"
crossboxcover.style.top=dropboxtop+"px"
crossboxcover.style.visibility=(dom||ie)? "visible" : "show"
dropstart=setInterval("dropinv2()",5)
}

function dropinv2(){ // De eigenlijk slide functie (denk ik)
scroll_top=(ie)? truebody().scrollTop : window.pageYOffset
if (parseInt(crossbox.style.top)<0){
crossboxcover.style.top=scroll_top+dropboxtop+"px"
crossbox.style.top=parseInt(crossbox.style.top)+dropspeed+"px"
}
else{
clearInterval(dropstart)
crossbox.style.top=0
}
}

function dismissboxv2(){ // De functie die de div weer laat verdwijnen als je op sluiten knikt.
if (window.dropstart) clearInterval(dropstart)
crossboxcover.style.visibility="hidden"
}

function truebody(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}
//-->
</script>

In de <body> staat:
code:
1
2
3
4
5
6
7
8
<a href="#" onClick="initboxv2();">Slide in</a>

<div id="dropinboxv2cover">
<div id="dropinboxv2">
Tekst blablabla
<a href="#" onClick="dismissboxv2();return false">Sluiten</a>
</div>
</div>

De functie dismissboxv2() zou dus moeten worden omgebouw, waarbij hij precies de tegenovergestelde werking krijgt van de functies initboxv2() en dropinv2(). Als ik alles omdraai lukt het me niet om hem werkend te krijgen.

Alvast bedankt.

[ Voor 8% gewijzigd door tweakingrobbie op 20-07-2005 18:41 ]


Verwijderd

Anders neem je gewoon contact op met de maker, of ga je zelf iets schrijven ipv de knip-en-plak programmeur uithangen :)

  • André
  • Registratie: Maart 2002
  • Laatst online: 04-05 16:01

André

Analytics dude

Of probeer er eerst zelf uit te komen. Wat lukt er niet precies?

  • tweakingrobbie
  • Registratie: Augustus 2003
  • Laatst online: 16-10-2025
Het is uiteindelijk toch gelukt.

Ik nam in m'n functie steeds het volgende stukje code over, waardoor de div meteen op zijn beginpositie terecht kwam, wat uiteraard niet de bedoeling is:
code:
1
2
3
4
crossboxcover.style.height=parseInt(crossbox.height)+"px"
crossbox.style.top=crossbox.height*(-1)+"px"
crossboxcover.style.left=dropboxleft+"px"
crossboxcover.style.top=dropboxtop+"px"


Uiteindelijk is de slide out-functie geworden:
code:
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
function dismissboxv2(){
if (!dom&&!ie)
return
crossboxcover=(dom)?document.getElementById("dropinboxv2cover") : document.all.dropinboxv2cover
crossbox=(dom)?document.getElementById("dropinboxv2"): document.all.dropinboxv2
scroll_top=(ie)? truebody().scrollTop : window.pageYOffset
crossbox.height=crossbox.offsetHeight
// alert("Cover: "+crossboxcover.style.top+"\nCB: "+crossbox.style.top)
dissstart=setInterval("dissinv2()",5)
}

function dissinv2(){
if (window.dropstart) clearInterval(dropstart)
scroll_top=(ie)? truebody().scrollTop : window.pageYOffset
if (parseInt(crossbox.style.top)>-70){
crossboxcover.style.top=dropboxtop+"px"
crossbox.style.top=parseInt(crossbox.style.top)-dropspeed+"px"
// alert("Cover: "+crossboxcover.style.top+"\nCB: "+crossbox.style.top)
}
else
{
clearInterval(dissstart)
crossboxcover.style.visibility=(dom||ie)? "hidden" : "hidden"
}
}


In ieder geval bedankt voor het reageren.

  • André
  • Registratie: Maart 2002
  • Laatst online: 04-05 16:01

André

Analytics dude

Top dat het je zelf gelukt is, daar leer je het meeste van :)

  • tweakingrobbie
  • Registratie: Augustus 2003
  • Laatst online: 16-10-2025
@Andre: klopt, maar als je er een poos mee bezig bent en het lukt niet, dan denk je daar toch al gauw anders over :)
Pagina: 1