Avatar billede expnet Seniormester
06. juli 2004 - 22:24 Der er 33 kommentarer og
1 løsning

et div der kan rolle op og ned

Hej exp'er

jeg søger et script der kan rolle op og ned

eks: men kan kun rolle ned

http://www.dynamicdrive.com/dynamicindex17/dropinbox.htm

så ville jeg gerne have at den rolle tilbage når eks. klikker på [ Close Box ]


håber der er en der vil hjælpe mig
Avatar billede skovenborg Nybegynder
07. juli 2004 - 01:16 #1
prøv at tilføje denne funktion:
function dropout() {
if (parseInt(crossobj.top)>-250) {
crossobj.top=parseInt(crossobj.top)-40+calunits
window.setTimeout("dropout();",50);
}
else{
crossobj.visibility="hidden";
}

}

og ændre dismissbox:
function dismissbox(){
if (window.bouncestart) clearInterval(bouncestart);
dropout();
}

Jeg går her ud fra det script du viste - og brugte den, som scroller ned hver gang - men det virker sikkert også med de andre.
Avatar billede expnet Seniormester
07. juli 2004 - 01:35 #2
jamen skovenborg kan du ikke lave så den kan ruller ud med et link og ind med et link
Avatar billede skovenborg Nybegynder
07. juli 2004 - 02:09 #3
jo, men skal den rulle ind når man klikker på en knap inde i boksen (så den stikker lidt ud i toppen) eller skal der være en anden knap et sted på siden, som udløser funktionen?
Avatar billede skovenborg Nybegynder
07. juli 2004 - 02:24 #4
nå, men jeg kan vel også lave begge løsninger. Den anden hvor man trykker et eller andet sted på siden er egentlig enkel nok:
1. Fjern window.onload=initbox til sidst i scriptet
2. Lav et link/knap/hvad du nu vil hvor du udløser funktionen initbox();
eksempel:
<a href="java script:initbox();">Rul ned</a>

Den anden kræver lidt mere kode, men det går nok:
1. Fjern igen window.onload=initbox til sidst i scriptet
2. Lav din html lidt om:
<div id="dropin" style="position:absolute;visibility:visible;left:200px;top:-270px;width:500px;height:300px;background-color:#F5F5F5">

SPECIFY YOUR CONTENT HERE. IT COULD BE TEXT, IMAGES, OR RICH HTML

<div style="position:absolute;bottom:0px;right:50px;"><a href="#" onclick="rollupordown(this);return false;">Rul ned</a></div>
</div>
Læg mærke til top:-270px; - hvis du ændrer tallet -270 skal du også ændre det andre steder.

3. Ændr et par af funktionerne:
function initbox(){
if (!dom&&!ie&&!ns4)
return
crossobj=(dom)?document.getElementById("dropin").style : ie? document.all.dropin : document.dropin
scroll_top=(ie)? truebody().scrollTop : window.pageYOffset
crossobj.top=scroll_top-270+calunits
crossobj.visibility=(dom||ie)? "visible" : "show"
dropstart=setInterval("dropin()",50)
}
og
function dropout() {
if (parseInt(crossobj.top)>-270) {
crossobj.top=parseInt(crossobj.top)-40+calunits
window.setTimeout("dropout();",50);
}
}
Her har jeg ændret 250 til 270, men du kan selvfølgelig også ændre tallene til noget andet, hvis det passer dig bedre. Det skal bare som sagt på med top:-270px

4. Tilføj denne funktion:
rulnedtekst = "Rul ned";
ruloptekst = "Rul op";
down = false;
function rollupordown(le) {
      if (!down) {
            initbox();
            le.innerHTML = ruloptekst;
            down = true;

      }
      else {
          dismissbox();
          le.innerHTML = rulnedtekst;
          down = false;
      }
}
rulnedtekst og ruloptekst kan du ændre som det passer dig - det skal dog nok også passe med link-teksten, som udløser funktionen.


Det burde være det hele - men hvis det slet ikke var nogle af de to muligheder finder vi nok også ud af det.
Avatar billede expnet Seniormester
07. juli 2004 - 04:44 #5
jeg kan ikke få den til at rulle op igen og så skal den heller ikke hoppe nå den ruller ned kan du ikke gøre så den heller ikke kommer ned på midt at den kun ruller ud fra top af og lige ned så top kanten er lige med toppen på browseren
Avatar billede expnet Seniormester
07. juli 2004 - 04:45 #6
Avatar billede expnet Seniormester
07. juli 2004 - 09:29 #7
er der ikke nogle der kan hjælpe mig ://
Avatar billede skovenborg Nybegynder
07. juli 2004 - 13:09 #8
du mangler lige at rette din dismiss funktion:
function dismissbox(){
if (window.bouncestart) clearInterval(bouncestart);
dropout();
}
Avatar billede skovenborg Nybegynder
07. juli 2004 - 13:13 #9
og for få den til at holde op med at hoppe skal du lige slette et par linier, så der står:
function initbox(){
if (!dom&&!ie&&!ns4)
return
crossobj=(dom)?document.getElementById("dropin").style : ie? document.all.dropin : document.dropin
scroll_top=(ie)? truebody().scrollTop : window.pageYOffset
crossobj.top=scroll_top-270+calunits
crossobj.visibility=(dom||ie)? "visible" : "show"
dropstart=setInterval("dropin()",50)
}

function dropin(){
scroll_top=(ie)? truebody().scrollTop : window.pageYOffset
if (parseInt(crossobj.top)<100+scroll_top)
crossobj.top=parseInt(crossobj.top)+40+calunits
else{
clearInterval(dropstart)
}
}
function dropout() {
if (parseInt(crossobj.top)>-270) {
crossobj.top=parseInt(crossobj.top)-40+calunits
window.setTimeout("dropout();",50);
}
}



function dismissbox(){
if (window.bouncestart) clearInterval(bouncestart);
dropout();
}

function truebody(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

rulnedtekst = "Rul ned";
ruloptekst = "Rul op";
down = false;
function rollupordown(le) {
      if (!down) {
            initbox();
            le.innerHTML = ruloptekst;
            down = true;

      }
      else {
          dismissbox();
          le.innerHTML = rulnedtekst;
          down = false;
      }
}
Avatar billede skovenborg Nybegynder
07. juli 2004 - 14:04 #10
og en lille rettelse mere:
function dismissbox(){
if (window.dropstart) clearInterval(dropstart);
dropout();
}
Avatar billede expnet Seniormester
07. juli 2004 - 19:52 #11
det er nice skovenborg men hvordan for jeg den til at blive i toppen nå den er ude
Avatar billede skovenborg Nybegynder
10. juli 2004 - 03:14 #12
undskyld jeg ikke har svaret tilbage før nu - men jeg har lige et lille spørgsmål:

Skal boksen hele tiden være i på sin plads uanset om man scroller op eller ned - og skal den kun gøre det når man har rullet boksen ned, eller også når den er inde (inaktiv)?
Avatar billede expnet Seniormester
10. juli 2004 - 03:20 #13
den skal rulle ned når man klikker på "rul ned" og hvis men ikke klikker på rul op skal den blive der ude og selv om man rulle end på siden og så skal den rulle ud ved onload="" og være ude i sec=10 og så skal den ude ind igen

håber du forstår mig :D
Avatar billede skovenborg Nybegynder
10. juli 2004 - 15:23 #14
Jo, måske - det vil i hvert fald vise sig. Her er det fulde script så vi kan se det i en helhed:
<script language="JavaScript1.2">

// Drop-in content box- By Dynamic Drive
// For full source code and more DHTML scripts, visit http://www.dynamicdrive.com
// This credit MUST stay intact for use

var ie=document.all
var dom=document.getElementById
var ns4=document.layers
var calunits=document.layers? "" : "px"

var bouncelimit=32 //(must be divisible by 8)
var direction="up"

function initbox(){
if (!dom&&!ie&&!ns4)
return
crossobj=(dom)?document.getElementById("dropin").style : ie? document.all.dropin : document.dropin
scroll_top=(ie)? truebody().scrollTop : window.pageYOffset
crossobj.top=scroll_top-270+calunits
crossobj.visibility=(dom||ie)? "visible" : "show"
dropstart=setInterval("dropin()",50)
}

function dropin(){
scroll_top=(ie)? truebody().scrollTop : window.pageYOffset
if (parseInt(crossobj.top)<100+scroll_top)
crossobj.top=parseInt(crossobj.top)+40+calunits
else{
clearInterval(dropstart)
}
}
function dropout() {
if (parseInt(crossobj.top)>-270) {
crossobj.top=parseInt(crossobj.top)-40+calunits
window.setTimeout("dropout();",50);
}
else {crossobj.top = -270+calunits;}
}

function bouncein(){
crossobj.top=parseInt(crossobj.top)-bouncelimit+calunits
if (bouncelimit<0)
bouncelimit+=8
bouncelimit=bouncelimit*-1
if (bouncelimit==0){
clearInterval(bouncestart)
}
}

function dismissbox(){
if (window.dropstart) clearInterval(dropstart);
dropout();
}

rulnedtekst = "Rul ned";
ruloptekst = "Rul op";
down = false;
var initdown = true;
function rollupordown(le) {
      if (!down) {
            initbox();
            le.innerHTML = ruloptekst;
            down = true;

      }
      else {
          dismissbox();
          le.innerHTML = rulnedtekst;
          down = false;
      initdown = false;
      }
}
function rollupagain() {
      if (down && initdown) {
            rollupordown(document.getElementById('boxlink'));
      }
}

function truebody(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

window.onscroll = function(e) {
        if (document.documentElement && typeof document.documentElement.scrollTop == "number" && down) {
                elm = document.getElementById("dropin");
                if (elm.style.position != "fixed") {
                elm.style.top = document.documentElement.scrollTop+(270/2)+"px";
                }
        }
  }



</script>


</head>
<body onload="rollupordown(document.getElementById('boxlink'));window.setTimeout('rollupagain()',10000)">
<div id="dropin" style="position:absolute;visibility:visible;left:200px;top:-270px;width:500px;height:300px;background-color:#F5F5F5">

SPECIFY YOUR CONTENT HERE. IT COULD BE TEXT, IMAGES, OR RICH HTML
<div style="position:absolute;bottom:0px;right:50px;"><a href="#" id="boxlink" onclick="rollupordown(this);return false;">Rul ned</a></div>
</div>
Avatar billede expnet Seniormester
11. juli 2004 - 13:25 #15
så skulle den bare være i toppen når den er ude
Avatar billede skovenborg Nybegynder
11. juli 2004 - 14:23 #16
ahh, når du siger ude så mener du når den er rullet op - troede det var omvendt ;-)
Avatar billede skovenborg Nybegynder
11. juli 2004 - 14:33 #17
okay - et par ændringer skal så laves:
<body onload="rollupordown(document.getElementById('boxlink'));window.setTimeout('rollupagain()',10000);stayontop();">


function stayontop() {
        if (document.documentElement && typeof document.documentElement.scrollTop == "number" && !down) {
                elm = (document.getElementById) ? document.getElementById("dropin") : (document.all) ? document.all.dropin : null;
                if (elm.style.position != "fixed" && elm) {
                elm.style.top = document.documentElement.scrollTop-(270)+"px";
                }
        }
        window.setTimeout("stayontop();",10);
  }
(window.onscroll = function(e) { funktionen skal bare fjernes nu)

function dropout() {
scroll_top=(ie)? truebody().scrollTop : window.pageYOffset
if (parseInt(crossobj.top)>-270+scroll_top) {
crossobj.top=parseInt(crossobj.top)-40+calunits
window.setTimeout("dropout();",50);
}
}
Avatar billede expnet Seniormester
11. juli 2004 - 17:07 #18
jeg tro ikke lige du er med

jeg prøver igen igen :D :D

den skal rulle ud ude lige som på

http://www.computerworld.dk/ den må ikke gå væk fra toppen af IE
Avatar billede skovenborg Nybegynder
12. juli 2004 - 23:08 #19
altså den ligger indeni et element og ikke helt oppe øverst på skærmen? Og så skal den blive i toppen når den er rullet op (skjult) som 11/07-2004 14:33:30 ???
Avatar billede expnet Seniormester
12. juli 2004 - 23:17 #20
den skal bare isted fra et element rulle fra toppen af og ud men ikke væk fra toppen :D
Avatar billede expnet Seniormester
21. juli 2004 - 08:54 #21
skovenborg -> har du opgivet
Avatar billede roenving Novice
21. juli 2004 - 14:42 #22
Tror han ferierer !-)
Avatar billede expnet Seniormester
21. juli 2004 - 15:42 #23
okay.. roenving ->

kan du hjælpe mig med at få den lige som på http://www.computerworld.dk/
Avatar billede skovenborg Nybegynder
02. august 2004 - 23:39 #24
ja, jeg var lige væk fra computeren i et par uger (eller kald det ferie). Så jeg skal prøve at kigge på det inden alt for længe ;-)
Avatar billede skovenborg Nybegynder
11. august 2004 - 20:00 #25
jeg kiggede lige på kommentarene i dag og må stadig tilstå at være lidt i tvivl om præcis hvad du mener når du siger toppen, inde og ude og den slags.

Vil du have det præcis som computerworld.dk - og ikke noget med at den skal blive i toppen når man ruller ned med scrollbaren?
Avatar billede expnet Seniormester
11. august 2004 - 21:34 #26
hvis du laver den om den er på "computerworld" så jeg bare kan lave knapper om selv. så bliver jeg meget glad skovenborg

//expnet
Avatar billede expnet Seniormester
13. august 2004 - 06:46 #27
skovenborg -> jeg vil lige høre om du ville lave det ikke for at gåpå
Avatar billede skovenborg Nybegynder
13. august 2004 - 16:39 #28
jeg har lidt dårlig tid for nylig, men jeg håber på at afse tid i morgen - er jo lige startet i skole igen ;-)
Avatar billede skovenborg Nybegynder
15. august 2004 - 00:12 #29
okay, her er en, rent designmæssig, temmelig forenklet udgave, men den burde virke fint nok:
<script type="text/javascript">
  var speed = 50;
  var dY = 10;
  var buttonID = "scrolldownbutton";


  var timer;
  var dir = 1; // 1 = down, 2 = up
  var elm;
  var maxX,maxY;
  function scrollBoxDown() {
        cl = getClipping(elm);
        b = parseInt(cl.bottom);
        if (b + dY <= maxY) {
              elm.style.clip = "rect(0px,"+maxX+"px,"+(b+dY)+"px,0px)";
        }
        else {
              elm.style.clip = "rect(0px,"+maxX+"px,"+maxY+"px,0px)";
              clearInterval(timer);
        }
  }
  function scrollBoxUp() {
        cl = getClipping(elm);
        b = parseInt(cl.bottom);
        if (b - dY >= 0) {
              elm.style.clip = "rect(0px,"+maxX+"px,"+(b-dY)+"px,0px)";
        }
        else {
              elm.style.clip = "rect(0px,"+maxX+"px,0px,0px)";
              clearInterval(timer);
              document.getElementById(buttonID).style.display = "inline";
        }
  }
  function scrollBox(elmID) {
        elm = document.getElementById(elmID);
        maxX = elm.offsetWidth;
        maxY = elm.offsetHeight;
        document.getElementById(buttonID).style.display = "none";
        if (timer) {clearInterval(timer);}
        if (dir == 1) {timer = setInterval("scrollBoxDown();",speed);dir=2;}
        else {timer = setInterval("scrollBoxUp();",speed);dir = 1}
  }

  function getClipping(celm) {
        if (c = celm.style.clip) {
                tempC = c.substring(c.indexOf("(")+1,c.lastIndexOf(")"));
                tempC = tempC.replace(/,/g,"");
                cArr = tempC.split(" ");
                return {top:cArr[0],right:cArr[1],bottom:cArr[2],left:cArr[3]}
        }
        return;
  }
</script>

<div style="position:relative">
  <div id="scrolldiv" style="position:absolute;clip: rect(0px 0px 0px 0px);"><img src="etbillede.png" />og evt. noget tekst<br />
  <img src="rulop.png" style="width:20px;height:20px" onclick="scrollBox('scrolldiv');" />
  </div>
  <img src="rulned.png" id="scrolldownbutton" style="width:20px;height:20px" onclick="scrollBox('scrolldiv');" />
</div>
Avatar billede skovenborg Nybegynder
15. august 2004 - 00:17 #30
som du måske kan se kræver den her en rulned-knap som ikke er indeni den boks, som skal rulle op og ned (denne knap vil så blive skjult eller vist afhængigt af situationen). Dens id skal du skrive oppe i variablen buttonID - knappen behøver ikke nødvendigvis at være et billede.
Under speed og dY kan du indstille farten på boksen - andet behøves ikke i dette tilfælde. Resten håber jeg også du kan se dig frem til.

Du kan evt. rulle boksen ned fra starten af ved at skrive:
<body onload="scrollBox('scrolldiv')">

Funktionen virker også i Mozilla hvis det kan glæde dig (det gjorde computerworlds desværre ikke ;-)

Har du andre spørgsmål, problemmer eller andet, så skal du bare fyre løs.
Avatar billede skovenborg Nybegynder
06. september 2004 - 23:05 #31
håber den virkede nu...
Avatar billede expnet Seniormester
11. januar 2005 - 15:54 #32
skovenborg -> den er rigtigt god vil du svare
Avatar billede skovenborg Nybegynder
31. maj 2005 - 15:32 #33
æhm, ja. Undskyld jeg havde overset sidst kommentar ;-)
Avatar billede skovenborg Nybegynder
31. maj 2005 - 15:34 #34
så her er et svar ;-)
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