Contao-Camp 2024
Ergebnis 1 bis 18 von 18

Thema: Smooth Scroll einfügen?

  1. #1
    Contao-Nutzer
    Registriert seit
    30.08.2017.
    Beiträge
    27

    Standard Smooth Scroll einfügen?

    Huhu

    ich habe eine Website mit Contao erstellt und auf einer Seite einige Ankerpunkte gesetzt. Nun ist es so dass beim anklicken des jeweiligen Links zum richtigen Ankerpunkt gesprungen wird. Allerdings möchte ich dort den Smooth Scroll effekt einbinden damit dies schöner aussieht?
    Wie und wo kann ich dort einen (JQuerie?) Code eingeben?

  2. #2
    Contao-Fan Avatar von Stefko
    Registriert seit
    25.10.2012.
    Ort
    Karlsruhe
    Beiträge
    771
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Michi1998 Beitrag anzeigen
    Wie und wo kann ich dort einen (JQuerie?) Code eingeben?
    Eine Möglichkeit wäre den Schnipsel im Seitenlayout unter "Eigener JavaScript-Code" einzutragen.
    Grüße, Stefko

  3. #3
    Contao-Nutzer
    Registriert seit
    30.08.2017.
    Beiträge
    27

    Standard

    Wie sieht dieser Code denn aus? Ich kenn mich mit JQuery leider gar nicht aus und hab so viel verschiedene im Internet gefunden und keiner klappt...

  4. #4
    Contao-Nutzer
    Registriert seit
    30.08.2017.
    Beiträge
    27

    Standard

    Ich habe jetzt diesen Code eingefügt:

    <script>
    $('a[href^=#]').on('click', function(e){
    var href = $(this).attr('href');
    $('html, body').animate({
    scrollTop:$(href).offset().top
    },'slow');
    e.preventDefault();
    });
    </script>

    Allerdings spring ich dann immer noch zu dem jeweiligen Anker hin. Wenn ich die Seite dann neu lade wird bis zu dem jeweiligen Ankerpunkt gescrollt.

    Wie krieg ich das jetzt so hin, dass auch beim Anklicken von dem Link zu dem Ankerpunkt gescrollt wird und nicht nur beim neu laden?

  5. #5
    Contao-Fan Avatar von Stefko
    Registriert seit
    25.10.2012.
    Ort
    Karlsruhe
    Beiträge
    771
    User beschenken
    Wunschliste

    Standard

    Es gibt auch noch eine Erweiterung [jquery-smooth-scroll], dann kannst Du Dir den eigenen JS-Code sparen. Es muss lediglich "j_smoothscroll" im Seitenlayout unter "jQuery laden" aktiviert sein.
    Grüße, Stefko

  6. #6
    Alter Contao-Hase
    Registriert seit
    22.06.2009.
    Ort
    Köln
    Beiträge
    1.342

    Standard

    Gibt es da auch etwas für Contao 4.4?
    Ich arbeite gerade an einer Onepage und würde gerne die internen Links mit smooth scroll ansteuern...
    Viele Grüße aus Köln
    Matu

  7. #7
    Contao-Fan Avatar von Hoch-3
    Registriert seit
    16.11.2010.
    Ort
    Zürich
    Beiträge
    373
    Partner-ID
    7136

    Standard Scrollen zu Ankerpunkt

    Darf ich kurz nachfragen, weit es hier eine einfache Lösung?

  8. #8
    Contao-Fan
    Registriert seit
    10.08.2011.
    Ort
    Berlin
    Beiträge
    828

    Standard

    mit jQuery z.B.
    Code:
    <script>
    $(document).ready(function(){
    	$('a[href^="#"]').on('click',function (e) {
    	    e.preventDefault();
    	    var target = this.hash,
    	    $target = $(target);
    	    $('html, body').stop().animate({
    	        'scrollTop': $target.offset().top
    	    }, 900, 'swing', function () {
    	        window.location.hash = target;
    	    });
    	});
    });
    </script>
    entsprechend dem Link einen Anker Deiner Wahl anhängen , z.B. #mysection
    und am Ziel Element die id mysection vergeben - läuft

    Das ist in 5 Minuten umgesetzt - ich setze jetzt voraus, dass die unterschiedl. Methoden des JS Einbindens im Layout bekannt sind.

  9. #9
    Contao-Fan Avatar von Hoch-3
    Registriert seit
    16.11.2010.
    Ort
    Zürich
    Beiträge
    373
    Partner-ID
    7136

    Standard

    Zitat Zitat von Bennie Beitrag anzeigen
    mit jQuery z.B.
    Code:
    <script>
    $(document).ready(function(){
    	$('a[href^="#"]').on('click',function (e) {
    	    e.preventDefault();
    	    var target = this.hash,
    	    $target = $(target);
    	    $('html, body').stop().animate({
    	        'scrollTop': $target.offset().top
    	    }, 900, 'swing', function () {
    	        window.location.hash = target;
    	    });
    	});
    });
    </script>
    entsprechend dem Link einen Anker Deiner Wahl anhängen , z.B. #mysection
    und am Ziel Element die id mysection vergeben - läuft

    Das ist in 5 Minuten umgesetzt - ich setze jetzt voraus, dass die unterschiedl. Methoden des JS Einbindens im Layout bekannt sind.

    Danke herzlich. JS ist leider nicht meine Stärke. Ich denke aber, dass ich das rausfinden werde... ausser du magst mir grad ein Beispiel schicken. :-)

    Also ich hab den Code in den Header eingefügt. jQuery ist aktiv. Link und Ziel sind definiert. Aber es springt nach wie vor, anstatt dass es runderscrollt. Was hab ich vergessen oder falsch gemacht?
    Geändert von Hoch-3 (08.04.2019 um 11:38 Uhr)

  10. #10
    Contao-Fan
    Registriert seit
    10.08.2011.
    Ort
    Berlin
    Beiträge
    828

    Standard

    Das heißt Du hast den Code im Seitenlayout im Bereich "Zusätzliche <head>-Tags" eingetragen?
    Trag den Code mal in "Eigener JavaScript-Code" ein. Ändert sich dann etwas?
    Ansonsten mal Link zur Seite falls möglich

  11. #11
    Contao-Fan Avatar von Hoch-3
    Registriert seit
    16.11.2010.
    Ort
    Zürich
    Beiträge
    373
    Partner-ID
    7136

    Standard

    Zitat Zitat von Bennie Beitrag anzeigen
    Das heißt Du hast den Code im Seitenlayout im Bereich "Zusätzliche <head>-Tags" eingetragen?
    Trag den Code mal in "Eigener JavaScript-Code" ein. Ändert sich dann etwas?
    Ansonsten mal Link zur Seite falls möglich
    Ich hatte es im head, habs auch im eigener JavaScript Code versucht. Nix.

    Ist halt noch nicht fertig. http://adrienneschlick.ch/home.html

    Es gibt im benutzten Template Litenote eine ScrollTop-Funktion (ab Zeile 505 im Quellcode). Kann es sein, dass die sich nicht vertragen?

  12. #12
    Contao-Fan
    Registriert seit
    10.08.2011.
    Ort
    Berlin
    Beiträge
    828

    Standard

    jQuery ist zweimal eingebunden bei Dir, das kommt vermutlich von dem gelieferten Template. Vielleicht schaltest Du mal jQuery im Layout probehalber aus.
    Was passiert dann?

  13. #13
    Contao-Fan Avatar von Hoch-3
    Registriert seit
    16.11.2010.
    Ort
    Zürich
    Beiträge
    373
    Partner-ID
    7136

    Standard

    Zitat Zitat von Bennie Beitrag anzeigen
    jQuery ist zweimal eingebunden bei Dir, das kommt vermutlich von dem gelieferten Template. Vielleicht schaltest Du mal jQuery im Layout probehalber aus.
    Was passiert dann?


    Leider keine Veränderung.

  14. #14
    Contao-Fan
    Registriert seit
    10.08.2011.
    Ort
    Berlin
    Beiträge
    828

    Standard

    Da weiß ich momentan auch nicht weiter, aber dort solltest Du mal suchen.
    Das Scrolltotop funktioniert ja auch und sollte eigentlich nicht stören, hab ich in etlichen Installationen auch so drin.

    Wie sind die anderen JS Script eingebunden, direkt in der fe_page.html5 ?

  15. #15
    Contao-Fan Avatar von Hoch-3
    Registriert seit
    16.11.2010.
    Ort
    Zürich
    Beiträge
    373
    Partner-ID
    7136

    Standard

    Zitat Zitat von Bennie Beitrag anzeigen
    Da weiß ich momentan auch nicht weiter, aber dort solltest Du mal suchen.
    Das Scrolltotop funktioniert ja auch und sollte eigentlich nicht stören, hab ich in etlichen Installationen auch so drin.

    Wie sind die anderen JS Script eingebunden, direkt in der fe_page.html5 ?
    Im Seitenlayout als externe JS.

    Ich frag sonst mal die Programmierer vom litenote.

    Herzlichen Dank für deine Zeit.

  16. #16
    Contao-Fan Avatar von Hoch-3
    Registriert seit
    16.11.2010.
    Ort
    Zürich
    Beiträge
    373
    Partner-ID
    7136

    Standard Lösung

    So hab ichs gelöst. (Gefunden in einem Joomla-Forum)


    dem Ankerlink geb ich die class="scroll"

    Und dann dieser Code als eigener JavaScript-Code im Seitenlayout.

    Code:
    <script>
    	jQuery(document).ready(function($) {
    		$(".scroll").click(function(event){
    		event.preventDefault();
    		$('html,body').animate({scrollTop:$(this.hash).offset().top-60}, 900);
    		});
    	});
    </script>

  17. #17
    Contao-Fan Avatar von Hoch-3
    Registriert seit
    16.11.2010.
    Ort
    Zürich
    Beiträge
    373
    Partner-ID
    7136

    Standard

    Zitat Zitat von Hoch-3 Beitrag anzeigen
    So hab ichs gelöst. (Gefunden in einem Joomla-Forum)


    dem Ankerlink geb ich die class="scroll"

    Und dann dieser Code als eigener JavaScript-Code im Seitenlayout.

    Code:
    <script>
    	jQuery(document).ready(function($) {
    		$(".scroll").click(function(event){
    		event.preventDefault();
    		$('html,body').animate({scrollTop:$(this.hash).offset().top-60}, 900);
    		});
    	});
    </script>

    Nachtrag: Scheint nur zu funktionieren, wenn keine anderen internen Links (wie eine Navigation) auf der Site vorhanden ist. Also, die Navi funktioniert dann nicht mehr.

    Frage als JS-Laie. Kann man eine Abfrage machen, sowas wie, wenn a mit .scroll dann so und sonst nicht?


    Hiermit hingegen funktionierts... :-)

    HTML-Code:
    <script src="http://www.google.com/jsapi"></script>
    <script>
    /* <![CDATA[ */
     
      google.load("jquery", "1.3.2");
    /* ]]> */
    </script>
    <script>
    /* <![CDATA[ */                                            
    $(document).ready(function() {
    $('a[href*=#]').bind("click", function(event) {
    event.preventDefault();
    var verweisziel = $(this).attr("href");
    $('html,body').animate({
    scrollTop: $(verweisziel).offset().top
    }, 800 , function (){location.hash = verweisziel;});
    });
    return false;
    }); /* ]]> */
    </script>
    Geändert von Hoch-3 (30.01.2020 um 16:25 Uhr)

  18. #18
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Ich würde dir aber empfehlen, die interne Version von JQuery zu verwenden, die du vermutlich auch noch für andere Sachen auf deiner Seite nutzt. Außerdem muss ja nicht Google von jedem Seitenaufruf erfahren ;-)

    Code siehe hier:
    https://community.contao.org/de/show...l=1#post344966

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •