tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von Quaese
  • 1 Beitrag von spicelab
ERLEDIGT
NEIN
ANTWORTEN
12
ZUGRIFFE
456
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Sasser Sasser ist offline Mitglied Smaragd
    Registriert seit
    Mar 2008
    Beiträge
    1.000
    Guten Abend!

    Ich habe ein scrollbares DIV mit mehreren Bildern untereinander. Jedes Bild hat eine ID.

    Gibt es die Möglichkeit, das DIV bis zu einer bestimmten ID zu scrollen? Es soll jedoch nur das DIV bis zu dem Bild gescrollt werden, nicht jedoch der Browser.

    Vielen Dank!
     

  2. #2
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    Mit scrollIntoView() ist sowas möglich.
     

  3. #3
    Sasser Sasser ist offline Mitglied Smaragd
    Registriert seit
    Mar 2008
    Beiträge
    1.000
    Damit scrollt man aber den kompletten Browser. Ich möchte aber nur das DIV scrollen.

    Und wie ermittle ich da die Position der ID?
     

  4. #4
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    ermittel über offsetTop und offsetParent die Abstände des inneren und äusseren Elements. Über die Eigenschaft scrollTop weist du dem äusseren Element die benötigte Scrollhöhe zu.

    Beispiel:
    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
    
    <html>
    <head>
    <title>www.tutorials.de</title>
    <meta name="author" content="Quaese">
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    <style type="text/css">
      <!--
    #Absatz{
      height: 300px;
      overflow: auto;
      background: #efefef;
    }
    #Absatz p{
      padding: 0;
      margin: 0;
      height: 30px;
    }
     //-->
    </style>
    <script type="text/javascript">
    function Test(strId){
      var objOuter = document.getElementById("Absatz");
      var objInner = document.getElementById(strId);
     
      // Top-Offsets ermitteln
      var objOffset = {
        outer: getTopOffset(objOuter),
        inner: getTopOffset(objInner)
      };
     
      // Scroll-Höhe zuweisen (= Differenz der beiden Elemente)
      objOuter.scrollTop = (objOffset.inner-objOffset.outer);
    }
     
    // Funktion zum Ermitteln des Top-Offsets eines übergebenen Elements
    function getTopOffset(objTest){
      var intOffset = objTest.offsetTop;
      var objParent = objTest.offsetParent;
     
      while(objParent){
        intOffset += objParent.offsetTop;
        objParent = objParent.offsetParent;
      }
     
      return intOffset;
    }
    </script>
    </head>
    <body>
    <h1>Hallo Welt</h1>
    <div id="Absatz">
      <script type="text/javascript">
        for(var i=1; i<100; i++){
          strInsert = (i%2==0)? " style=\"background: #efef00;\"" : "";
          document.write("<p id=\"zeile"+i+"\""+strInsert+">Zeile " + i + "</p>");
        }
      </script>
    </div>
     
    <div style="height: 1200px;">Höhen-Element</div>
    <p><a href="javascript:Test('zeile50')">Test</a></p>
    </body></html>
    Ciao
    Quaese
    Sasser bedankt sich. 
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

  5. #5
    Sasser Sasser ist offline Mitglied Smaragd
    Registriert seit
    Mar 2008
    Beiträge
    1.000
    Vielen Dank!
     

  6. #6
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    Zitat Zitat von Sasser Beitrag anzeigen
    Damit scrollt man aber den kompletten Browser. Ich möchte aber nur das DIV scrollen
    Na und? Die Methode lässt sich ebenso auf das von dir eingangs vorgegebene <div>-Element anwenden - pack hierzu einfach in dem Beispiel das <p id="Absatz">Ein Text</p> in ein <div>.

    Hätte ich dir sonst diesen Vorschlag unterbreitet?

    Aktives Mitdenken und -arbeiten wird vorausgesetzt, anstatt grundlose Einwände zu posten, ohne sich zuvor vergewissert zu haben, was tatsächlicher Stand der Dinge / Technik ist
    Geändert von spicelab (21.02.11 um 16:07 Uhr) Grund: Tipp-Ex
     

  7. #7
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    es wird allerdings auch die Scrollposition im Browser verändert, wenn die von dir vorgeschlagene Variante verwendet wird.

    So wie ich das Problem verstanden hatte, soll lediglich die Position im Element angepasst werden.

    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

  8. #8
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    Nichts desto trotz empfinde ich es persönlich leider nur als geistig "engstirnig" bis "armselig", lieber mit so einem voreiligen unbegründeten / unqualifizierten Beitrag aufzuschlagen, anstatt, sofern dazu gewillt und/oder imstande, den Quellcode des Beispiels, der mit seiner eigenen HTML-Konstellation gewiß nicht auf seinen beschriebenen Anwendungsfall zutrifft, für die JS-Technik aber sowas von unerheblich ist, dahingehend abzuändern, dass das JavaScript in dem geforderten <div>, und nicht (mehr) unmittelbar in <body> zum Tragen kommt (wie auch in deinem gezeigten Code), womit sich hier nicht (mehr) unmittelbar im Browserfenster selbst die Scrollposition verändert.

    Die angepasste Fassung des Beispiels (http://de.selfhtml.org/javascript/ob..._into_view.htm) lautet in wenigen Sekunden Tipparbeit für HTML und CSS dann eben so:

    HTML-Code:
    <html><head><title>Test</title>
    <script type="text/javascript">
    function Test () {
      document.getElementById('Absatz').scrollIntoView(true);
    }
    </script>
    <style type="text/css">
    div.scrollBox {height:100px;border:thin solid #eee;overflow:auto;}
    </style> 
    </head><body>
    <div class="scrollBox">
        <p id="Absatz">Ein Text</p>
        <script type="text/javascript">
            for (i = 1; i < 100; i++)
            document.write("<br>Zeile " + i);
        </script>
    </div>
    <p><a href="javascript:Test()">Test</a></p>
    </body></html>
    Die Preisfrage dieser Woche lautet demnach:

    Welches Code-Fundstück aus'm Netz passt direkt und ohne jegliche Anpassungsarbeit(en) für den eigenen individuell zugeschnittenen Gebrauch?

    Weidmanns Heil! Weidmanns Dank!
    Geändert von spicelab (21.02.11 um 18:09 Uhr) Grund: Tipp-Ex
     

  9. #9
    Sasser Sasser ist offline Mitglied Smaragd
    Registriert seit
    Mar 2008
    Beiträge
    1.000
    Nur ist das Problem nun immer noch das gleiche...

    Die Browserleiste scrollt mit, wenn das DIV z.B. am Ende der Seite ist.
     

  10. #10
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    Zitat Zitat von Sasser Beitrag anzeigen
    Nur ist das Problem nun immer noch das gleiche...

    Die Browserleiste scrollt mit, wenn das DIV z.B. am Ende der Seite ist.
    Nur, das eine (mehrere <img> innerhalb eines <div> scrollen) hat mit dem anderen (neben diesem <div> existiert weiterer umfangreicher Inhalt in <body>, was selbstverständlich und natürlich ein Scrollen des kompletten Dokument(körper)s im Browserfenster nach sich zieht) nix zu tun!

    Von "dem gleichen Problem" kann somit hier kaum die Rede sein
    Geändert von spicelab (21.02.11 um 20:05 Uhr)
     

  11. #11
    Sasser Sasser ist offline Mitglied Smaragd
    Registriert seit
    Mar 2008
    Beiträge
    1.000
    Wir haben uns also schon weiter oben falsch verstanden. Denn dies war oben bereits so gemeint. Es hatte nichts damit zu tun, dass ich keine Lust habe das Script anzupassen etc.
     

  12. #12
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    HTML-Code:
    <html><head><title>Test</title>
    <script type="text/javascript">
    function Test () {
      document.getElementById('Absatz').scrollIntoView(true);
    }
    </script>
    <style type="text/css">
    h1 { margin:600px 0;}
    .box {height:100px;border:thin solid #eee;overflow:auto;}
    </style> 
    </head><body>
    <h1>test</h1>
    <div class="box">
        <p id="Absatz">Ein Text</p>
        <script type="text/javascript">
            for (i = 1; i < 100; i++)
            document.write("<br>Zeile " + i);
        </script>
    </div>
    <p><a href="#" onclick="Test();return false;">Test</a></p>
    </body></html>
    Das Anhängsel return false im onclick-Event bewirkt, dass beim Aufruf der JS-Funktion Test() der Browser nicht zum Dokumentanfang springt, die komplette Seite von unten nach oben scrollt
    Geändert von spicelab (21.02.11 um 20:17 Uhr)
    Sasser bedankt sich. 

  13. #13
    Sasser Sasser ist offline Mitglied Smaragd
    Registriert seit
    Mar 2008
    Beiträge
    1.000
    Aah vielen Dank!

    Genau so funktioniert´s nun einwandfrei!
     

Ähnliche Themen

  1. div und scrollen
    Von chickenwings im Forum Javascript & Ajax
    Antworten: 6
    Letzter Beitrag: 12.08.08, 14:19
  2. Scrollen mit IE
    Von samsh im Forum CSS
    Antworten: 8
    Letzter Beitrag: 13.01.07, 21:05
  3. CSS Scrollen
    Von Acidfood im Forum CSS
    Antworten: 7
    Letzter Beitrag: 22.03.05, 10:57
  4. scrollen
    Von annerl im Forum HTML & XHTML
    Antworten: 5
    Letzter Beitrag: 24.09.04, 19:52
  5. Scrollen
    Von ChrisXXL im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 30.08.03, 15:59

Stichworte