Avatar billede flashit Nybegynder
09. august 2006 - 20:01 Der er 14 kommentarer og
1 løsning

Drop down with Javascript

Hej Alle

Prøv lige at se denne effekt. Den er super fed, og lige til at bruge op ens side.
Jeg ville bare høre om der er en som kender en tilsvarende som ikke laver det lille hop når scriptet er kørt. Eller kan siger om man kan gøre et eller andet, så det ikke er der.

http://www.jek2k.com/wp/index.php/2006/07/14/drop-down-with-javascript/

mvh
Jakob
Avatar billede mclemens Nybegynder
09. august 2006 - 22:49 #1
Har ikke kigget på den anden men hvad med denne her?





<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title><meta name="robots" content="noindex, nofollow">

<style type="text/css">
/* Demo page css */
#mcpbrev{left:0px;border-top:0px;width:100%;background:#aaa;}


/* Needed for script */
.abs{position:absolute;}
.mcp_abs{position:absolute;overflow:hidden;}
.mcp_app{position:relative;height:0px;overflow:hidden;}
#mcp_div{position:relative;height:0px;overflow:hidden;}
</style>

<script type="text/javascript">

/* MCPosition:absolute layer */
/* Script by Marc Clemmensen */
/* http://exp.dk/spm/715114  */
/* - - - Version: 0.97 - - - */
/* Free use - keep this note */
/* If changed add extra note */

/* Edited version by MClemens */


/* Changeable values */
mcpcs=10; // Speed of animation in ms.
mcpcp=1; // Amount of pixels used for each change.
mcperr=false; // Alert if missing a div in document (true/false)
/* ----------------- */


/* Don't touch script below unless you know where to edit */

var mcp={}; // Object for transportation of objects and their properties

window.onload=function(){

// Initiate element gathering onload
var tns=document.getElementById("mcp_div").childNodes; // Get all childs
while(tns.length>0){

  if(tns[0].id){

  // Check if you've made all div's neccessary...
  if(tn=document.getElementById(tns[0].id+"_")){
    mcp[tns[0].id]={
    c:false,r:0, // Set open/close check and running count
    o:tns[0],s:tns[0].style, // Shortcut to object and style
    h:tns[0].offsetHeight,w:tns[0].offsetWidth // Store elements initial width and height
    };

  tns[0].style.top=-tns[0].offsetHeight+"px"; // Position div at top

  tn.style.height="0px"; // Set height of new parent div element
  tn.style.width=tns[0].offsetWidth+"px"; // Set width of new parent div element

  tn.removeChild(tn.childNodes[0]);tn.appendChild(tns[0]); // Move div element

  }else if(mcperr)alert("The div with id:\n"+tns[0].id+"_\n- was not found");

  }
  else{
  tnx=document.getElementById("mcp_div");
  tnx.removeChild(tnx.childNodes[0]);
  }
}

}



function mcppos(mcp0,mcp1){

mcp0=mcp["mcp"+mcp0]; // Activate shortcut
mcp2=++mcp0.r; // Get timeout run number

if(mcp1==3)mcp0.c=!mcp0.c; // Make a check value for the action
else mcp0.c=(mcp1==1)?true:false;

setTimeout("mcpact('"+mcp0.o.id+"',"+mcp2+");",2*mcpcs); // Activate layer handling

}



function mcpact(mcp0,mcp2){
mcp0=mcp[mcp0]; // Activate shortcut

if(mcp2==mcp0.r){ // Check if this is the active layer timeout

tmpns=mcp0.o.offsetParent.style;
tmpnsh=parseInt(tmpns.height.replace("px","")); // Get parent current height

tmpval=(mcp0.c)?mcpcp:-mcpcp; // Tmp value for offsetting

tmperr=false;
if((tmpnsh+tmpval)>mcp0.h)tmpval=mcp0.h-tmpnsh; // Don't make div above actual height
else if((tmpnsh+tmpval)<0)tmpval=tmpnsh; // Don't make div below 0px height
else tmperr=true;

tmpns.height=tmpval+tmpnsh+"px"; // Set new height

mcp0.s.top=-mcp0.h+tmpval+tmpnsh+"px"; // Set top

if(tmperr)setTimeout("mcpact('"+mcp0.o.id+"',"+mcp2+");",mcpcs);

}
}

</script></head><body>

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<br>tekst og indhold her<br>
<b onclick="mcppos('brev',3);">Vis / Skjul</b><br>

<div style="float:left;">
<div class="abs"><div id="mcpbrev_" class="mcp_app">&nbsp;</div></div>
</div>

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<br>tekst og indhold her






<div id="mcp_div">
<div id="mcpbrev" class="mcp_abs">Small message...<br>Small message...<br>Small message...<br>Small message...<br>Small message...<br>Small message...</div>
</div>

</body></html>
Avatar billede mclemens Nybegynder
09. august 2006 - 22:57 #2
Hov, har lige set en fejl i den jeg har lavet :D

else if((tmpnsh+tmpval)<0)tmpval=tmpnsh; // Don't make div below 0px height

Skal rettes til:

else if((tmpnsh+tmpval)<0)tmpval=-tmpnsh; // Don't make div below 0px height
Avatar billede flashit Nybegynder
09. august 2006 - 23:35 #3
Tak for dig svar, men det er ikke lige det jeg er ude efter.
Ideen er at jeg vil have en "settings" del gemt i et div som så skubber resten ned når den vises.
Men TAK
Avatar billede mclemens Nybegynder
09. august 2006 - 23:35 #4
har lige downloadet test arkiv til det du henviser til
http://wiki.script.aculo.us/scriptaculous/show/CombinationEffectsDemo
- Check f.eks. demoen under "ALTERNATIVE DEMO" nr 4 & 5 - hvis man downloader arkivet
http://script.aculo.us/downloads er der også en demo af det med deri - med fuld side bredde fyldt op med lidt tekst - de ser umiddelbart ud til at virke fint.

http://www.jek2k.com/wp/index.php/2006/07/14/drop-down-with-javascript/
- Bruger en sikkert ældre udgave (effects.js fylder 31,5 kb mens den nye fylder 33 kb) ... og hendes demo virker ikke hvis man overskriver den gemle med den nye fil ...

- Får du stadig fejl når du bruger det nye arkiv?
Så kast lige et fejl dokument herinde der kan testes...
Avatar billede mclemens Nybegynder
09. august 2006 - 23:40 #5
Update - Ok, men det gør det script du henviser til jo ikke?

Prøv i min at slette:

.abs{position:absolute;}

Fra css delen og så rette:

<div style="float:left;">
<div class="abs"><div id="mcpbrev_" class="mcp_app">&nbsp;</div></div>
</div>

til:

<div class="abs"><div id="mcpbrev_" class="mcp_app">&nbsp;</div></div>
Avatar billede mclemens Nybegynder
09. august 2006 - 23:44 #6
... Det andet script har sikkert bare samme css definering fra starten af ...
- Men prøv et nyt arkiv og ellers så kast et fejl eksempel herind...

Deres test demo som følger med i arkiv filen har dog problemer med min IE 6 :/
Avatar billede mclemens Nybegynder
09. august 2006 - 23:49 #7
Edit: Joh, det virkede sådan. Det andet script har sikkert bare samme css definering fra starten af ...
Avatar billede flashit Nybegynder
10. august 2006 - 19:27 #8
Hej

Det er perfekt. :-)
Hvis der er ok, så har jeg lige 2 ting.

Jeg godt tænke mig at sætte hastighede op.
Er det ikke her:
mcpcs=10; // Speed of animation in ms. Det hjælper ikke hvis jeg sætter mcpcs til 1.

Og så kunne jeg godt tænke mig at den ikke scroller op, men bare hider div'en.

Er det muligt.

Mvh
Jakob

Ps. lægger du ikke også et svar :-)
Avatar billede mclemens Nybegynder
10. august 2006 - 19:32 #9
mcpcs=10; // Speed of animation in ms. Det hjælper ikke hvis jeg sætter mcpcs til 1.
- Nej der er en nedre grænse på hastighed af timeout's tror den lægger omkring 30 - 100 ms. afhængig af browser - så det hjælper ikke med et lavere tal... (generalt kodning i browsers håndtering af javascript timeout - ikke script specifikt)

[ Og så kunne jeg godt tænke mig at den ikke scroller op, men bare hider div'en. ]
Piller lige...

[ Ps. lægger du ikke også et svar :-) ]
- Ok her er lige et svar :o)
Avatar billede mclemens Nybegynder
10. august 2006 - 19:37 #10
tmpval=(mcp0.c)?mcpcp:-mcpcp; // Tmp value for offsetting
rettes til:
tmpval=(mcp0.c)?mcpcp:-tmpnsh; // Tmp value for offsetting
Avatar billede mclemens Nybegynder
10. august 2006 - 19:39 #11
M.h.t. timeout ... Du kan selvfølgelig lave px hoppet højere
ligesom de har gjort i det script eksempel du henviser til...

mcpcp=1; // Amount of pixels used for each change. ... 100 er nok for voldsom men prøv at øge den lidt :o)
Avatar billede mclemens Nybegynder
10. august 2006 - 19:47 #12
Prøv f.eks. denne her med hensyn til timeout problemet ( hvis du vil læse om det ) http://www.google.dk/search?hl=da&q=javascript+minimum+timeout+ms&meta=
Avatar billede flashit Nybegynder
10. august 2006 - 19:49 #13
PERFEKT c",) TAK
Avatar billede mclemens Nybegynder
10. august 2006 - 19:49 #14
Velbekom, og tak for point :o)
Avatar billede flashit Nybegynder
04. september 2006 - 13:35 #15
Hej Igen

Er du frisk en en ny omgang med dit script? Jeg skal namlig til at benytte det i en asp.net masterpage nu, og har lidt problemer. Jeg opretter et nyt spg. hvis du er :-)
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