Avatar billede j-roar-h Nybegynder
07. november 2010 - 11:43 Der er 15 kommentarer og
1 løsning

Scroll menu

Hej,

Jeg ved ikke helt hvad jeg skal kalde denne funktion, så overskriften er måske ikke helt korrekt.

Det jeg gerne vil have hjælp til er, at jeg gerne vil lave en slags tabel som indeholder tekst. Når man så kører musen ind over, skifter baggrunden farve. Der skal i bunden af denne tabel (ved ikke om det skal være en tabel) være en knap så den scroller ned når man klikker på knappen og viser så næste del af indholdet. Fx står der 20 tekster, og når man klikker på "vis 20 mere" knappen i bunden, scroller den ned og viser de 20 næste.

Jeg håber i forstår hvad jeg mener. Det er lidt svært at forklare.
Avatar billede webweaver Praktikant
07. november 2010 - 13:15 #1
Du kan lave din scroll funktion med simpel HTML.

Her er linket,
<a href="#ID">De næste 20</a>

Og dette sættes ind, hvor den skal scrolle til,
<a name="ID"></a>
Avatar billede webweaver Praktikant
07. november 2010 - 13:18 #2
Og med hensyn til baggrundsfarven, kan det gøres således;

<td bgcolor="#E8DCBA" onmouseover="this.style.backgroundColor='#F2ECD9';" onmouseout="this.style.backgroundColor='#E8DCBA';">
Avatar billede j-roar-h Nybegynder
07. november 2010 - 19:21 #3
Jeg kan ikke helt se hvordan man får den til det. Er med på at man bare sætter et anchor ind, men hvordan skjuler man så det af tabellen man ikke vil se?

Den skal have en bestemt højde, fx 200 px. Hvis man laver en tabel vil den jo vise alle rækkerne...
Avatar billede webweaver Praktikant
07. november 2010 - 19:56 #4
Ahh okay. Så du vil have scroll inde i selve boksen.
Smid det ind i en div, og så lav følgende i CSS.

#main {
margin: 0px 0px 0px 25px;
width: 400px;
height: 200px;
background-color: transparent;
overflow: auto;
}   

<div id="main">Dine data her ...</div>
Avatar billede j-roar-h Nybegynder
07. november 2010 - 21:43 #5
har nu prøvet det, men det er stadig ikke helt det jeg ønsker.

Der skal ikke være scroll på, men den skal scrolle når man klikker på "De næste 20".

Dvs man ikke skal kunne se der er scroll.

Udover det virker det fint.
Avatar billede webweaver Praktikant
07. november 2010 - 23:38 #6
Så ved jeg nu ikke rigtig hvad du mener?

Hvis du har et anchor point, og du klikker på det, scroll'er den da også ned til hvor det er placeret!? Du ønsker at den scroll'er lige akkurat langt nok ned, til at man ikke kan se de første 20, men kun de næste 20 eller? Det kan jo bare gøres ved at placere anchor pointet det rigtige sted.

Og skal det ikke være hele siden som scroll'er, men kun "boksen"?

Jeg har givet dig begge løsninger. Har lidt svært ved at gennemskue hvad du ønsker.

Ønsker du det som du har nu, og så bare uden en scrollbar på boksen?

Har du et link til et sted, hvor man kan se den ønskede funktion?
Avatar billede j-roar-h Nybegynder
08. november 2010 - 12:56 #7
Jeg skal se om jeg ikke kan forklare mig bedre.

Det med anchor point virker fint, og der er korrekt forstået at den kun lige akkurat skal scrolle langt nok ned til at man ikke kan se de 20 første, men de 20 næste.

Og der er kun boksen der skal være scroll i.

Og ja, det er faktisk bare det jeg har nu uden scrollbar på boksen.

Jeg har desværre ikke noget link.

Håber det gav bedre mening.
Avatar billede j-roar-h Nybegynder
08. november 2010 - 13:09 #8
Og så må den gerne køre langsomt ned til de 20 næste. Så det ikke er et hård skift. Hvis du forstår?
Avatar billede webweaver Praktikant
08. november 2010 - 17:59 #9
Ahh okay. Hvis du vil skjule scrollbar'en, skriver du overflow:hidden; istedet for. Hvis du ønsker at det skal køre langsomt ned, så er du ovre i JavaScript,

Der findes lidt forskellige scripts derude.
Jeg har taget et og bygget om, så det passer til dig formål.

Resultatet kan du se her,
http://www.lasse-jensen.dk/eksperten/scroll_funktion.html

Det skulle vidst være det som du leder efter.
Designet på det, kan jo naturligvis altid ændres.
Avatar billede webweaver Praktikant
08. november 2010 - 18:00 #10
*dit formål
Avatar billede j-roar-h Nybegynder
08. november 2010 - 19:13 #11
Super.. det var lige det jeg søgte.

Men jeg har et problem. Jeg fandt ud af at 20 af gangen er lige i overkanten så har jeg sat den ned til 3. Problemet er bare at den så scroller for meget.

Jeg har prøvet at ændre det, men kan ikke få det til at passe.

Derudover vil jeg gerne have at der ikke er mellemrum "kasserne".

koden ser nu sådan ud:

<!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>Text scroll med JavaScript</title>

  <style>
   

    #encFilmMain
    {
      width:200px; /* Max widht of the container */
      background-color:#98c23c;
    }
    #encFilm
    {
    height:180px;  /* Max height of the container */
    overflow:hidden;
    text-align: center;
    }

    #encScrollBarTop a, #encScrollBarBottom a
    {
      line-height:20px;
      padding:2px;
      color:#fff;
      display:block;
      text-decoration:none;
    }
    #encNav
    {
    position:relative;
    color:#FFF;
    top:0px;
    font-family:Verdana, Geneva, sans-serif;
    font-size:12px;
    }

    p {
    padding-top: 5px;
    padding-bottom: 5px;
    background-color:#98c23c;
}
  </style>
 
<script type="text/javascript">
 
          var gTop=0;
          var gIncVal=0;
          var timeOutValue=80;
           
           
          function scrollMe(arg)
          {   
            var objEncNav=document.getElementById('encNav');
           
            var scrollAmount=390;
            var objEncNavHeight=parseInt(objEncNav.offsetHeight);
            var objEncNavTop=objEncNav.style.top;
       
            var barHeight=390; 
           
            if(!objEncNavTop)
              objEncNavTop=0;
            else
              objEncNavTop=objEncNavTop.substring(0,objEncNavTop.length-2);
             
            if(arg>0)
            {
              if(objEncNavTop>=0 || objEncNavTop>(-(objEncNavHeight-(barHeight+scrollAmount))))
              {
                incrementValue=scrollAmount;
              }
              else if(objEncNavTop<(-(objEncNavHeight-(barHeight+scrollAmount))))
              {
                incrementValue=(objEncNavHeight-barHeight)+parseInt(objEncNavTop);
              }
              else
              {
                incrementValue=0;
              }
              encSmoothScroll("minus", parseInt(objEncNavTop), parseInt(incrementValue));
            }
            else
            {
              if(objEncNavTop<0 && ((parseInt(objEncNavTop)+scrollAmount) < 0))
              {
                incrementValue=scrollAmount;
              }
              else
              {
                incrementValue=-objEncNavTop-0;   
              }
              encSmoothScroll("plus", parseInt(objEncNavTop), parseInt(incrementValue));
            }
          }
          function encSmoothScroll(dir, currentVal, incValue)
          {
            gTop=currentVal;
            gIncVal=incValue;
            encScrollBy(dir, 0)
          }
          function encScrollBy(dir, val)
          {
            if(val<gIncVal)
            {
              var tmpInc;     
              if((gIncVal-val)>1)     
              {
                tmpInc=Math.ceil((gIncVal-val)/10);
                if(tmpInc <1)
                  tmpInc=1;
              }
              else
              {
                tmpInc=gIncVal-val;
              }
             
              val+=tmpInc;
             
              var objEncNav=document.getElementById('encNav');
              if(dir=="plus")
              {
                objEncNav.style.top=gTop+val+"px";
              }
              else if(dir=="minus")
              {
                objEncNav.style.top=gTop-val+"px";
              }
              var t=setTimeout("encScrollBy('"+dir+"', "+val+");", timeOutValue);
            }
            else
            {
              clearTimeout(t);
            }
          }

    </script>
 
  </head>
 
  <body>
 
    <div id="encFilmMain">

        <a href="#" onClick="scrollMe(-1); return false;">Vis de 5 forrige</a>
   
        <div id="encFilm"> 
            <div id="encNav">
                <p onmouseover="this.style.backgroundColor='#9C3';" onmouseout="this.style.backgroundColor='#98c23c';">
                <strong>Ryvangen</strong><br>22 juni - 1 juli 2010<br></p>
               
                <p onmouseover="this.style.backgroundColor='#9C3';" onmouseout="this.style.backgroundColor='#98c23c';">
                <strong>Jyllinge</strong><br>
                22 juni - 1 juli 2010<br></p>
               
                <p onmouseover="this.style.backgroundColor='#9C3';" onmouseout="this.style.backgroundColor='#98c23c';">
                <strong>Hundested</strong><br>
                22 juni - 1 juli 2010<br></p>
               
                <p onmouseover="this.style.backgroundColor='#9C3';" onmouseout="this.style.backgroundColor='#98c23c';">
                <strong>Ryvangen</strong><br>22 juni - 1 juli 2010<br></p>
               
                <p onmouseover="this.style.backgroundColor='#9C3';" onmouseout="this.style.backgroundColor='#98c23c';">
                <strong>Ryvangen</strong><br>22 juni - 1 juli 2010<br></p>
               
                <p onmouseover="this.style.backgroundColor='#9C3';" onmouseout="this.style.backgroundColor='#98c23c';">
                <strong>Ryvangen</strong><br>22 juni - 1 juli 2010<br></p>
               
                <p onmouseover="this.style.backgroundColor='#9C3';" onmouseout="this.style.backgroundColor='#98c23c';">
                <strong>Ryvangen</strong><br>22 juni - 1 juli 2010<br></p>
               
                <p onmouseover="this.style.backgroundColor='#9C3';" onmouseout="this.style.backgroundColor='#98c23c';">
                <strong>Ryvangen</strong><br>22 juni - 1 juli 2010<br></p>
               
                <p onmouseover="this.style.backgroundColor='#9C3';" onmouseout="this.style.backgroundColor='#98c23c';">
                <strong>Ryvangen</strong><br>22 juni - 1 juli 2010<br></p>
               
                <p onmouseover="this.style.backgroundColor='#9C3';" onmouseout="this.style.backgroundColor='#98c23c';">
                <strong>Ryvangen</strong><br>22 juni - 1 juli 2010<br></p>
               
                <p onmouseover="this.style.backgroundColor='#9C3';" onmouseout="this.style.backgroundColor='#98c23c';">
                <strong>Ryvangen</strong><br>22 juni - 1 juli 2010<br></p>
               
                <p onmouseover="this.style.backgroundColor='#9C3';" onmouseout="this.style.backgroundColor='#98c23c';">
                <strong>Ryvangen</strong><br>22 juni - 1 juli 2010<br></p>
               
                <p onmouseover="this.style.backgroundColor='#9C3';" onmouseout="this.style.backgroundColor='#98c23c';">
                <strong>Ryvangen</strong><br>22 juni - 1 juli 2010<br></p>
               
                <p onmouseover="this.style.backgroundColor='#9C3';" onmouseout="this.style.backgroundColor='#98c23c';">
                <strong>Ryvangen</strong><br>22 juni - 1 juli 2010<br></p>
               
                <p onmouseover="this.style.backgroundColor='#9C3';" onmouseout="this.style.backgroundColor='#98c23c';">
                <strong>Ryvangen</strong><br>22 juni - 1 juli 2010<br></p>
               
                <p onmouseover="this.style.backgroundColor='#9C3';" onmouseout="this.style.backgroundColor='#98c23c';">
                <strong>Ryvangen</strong><br>22 juni - 1 juli 2010<br></p>
               
                <p onmouseover="this.style.backgroundColor='#9C3';" onmouseout="this.style.backgroundColor='#98c23c';">
                <strong>Ryvangen</strong><br>22 juni - 1 juli 2010<br></p>
               
                <p onmouseover="this.style.backgroundColor='#9C3';" onmouseout="this.style.backgroundColor='#98c23c';">
                <strong>Ryvangen</strong><br>22 juni - 1 juli 2010<br></p>
               
                <p onmouseover="this.style.backgroundColor='#9C3';" onmouseout="this.style.backgroundColor='#98c23c';">
                <strong>Ryvangen</strong><br>22 juni - 1 juli 2010<br></p>
               
                <p onmouseover="this.style.backgroundColor='#9C3';" onmouseout="this.style.backgroundColor='#98c23c';">
                <strong>Ryvangen</strong><br>22 juni - 1 juli 2010<br></p>
            </div>
   
        </div>
   
        <a href="#" onClick="scrollMe(1); return false;">Vis de 5 næste</a>
 
    </div>
 
  </body>

</html>
Avatar billede webweaver Praktikant
08. november 2010 - 19:58 #12
var scrollAmount=390; Denne afgør hvor der skal scrolles til. Sæt tallet ned, indtil det passer til dig.

var barHeight=390; Denne skal også sættes ned, så du ikke kan scrolle længere ned end indholdet. Så den sættes til samme værdi, som den ovenover.

Begge er at forfinde i scriptet.

Jeg ved ikke rigtig hvad du mener med mellemrum og kasserne?
Der må du lige forklare end tand bedre :)
Avatar billede j-roar-h Nybegynder
09. november 2010 - 08:28 #13
Okay...

Det jeg mener med mellemrummet er det som der normalt kommer hvis man laver hårdt linjeskift <p> så springer den en linje over. Kan man ikke undgå det?
Avatar billede webweaver Praktikant
09. november 2010 - 11:55 #14
Brug margin. <p style="margin: 0px"> ... Det skulle gerne fjerne luften. Men der findes også CSS til at definere linieafstand, hvis man gerne vil øge den fx.
Avatar billede j-roar-h Nybegynder
09. november 2010 - 17:45 #15
Super.. det virker.. Ligger du et svar?
Avatar billede webweaver Praktikant
09. november 2010 - 17:51 #16
Det er godt :)

Glad for at kunne hjælpe.
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