JavaScript - Page Transitions

Aus Wikizone
Wechseln zu: Navigation, Suche

Page Transitions, Inhalte via AJAX Laden, CSS und JavaScript Animations

Siehe auch

Tools und Links

Tutorials

Überblick

AJAX Page Loading

  • AJAX können Inhalte nachgeladen werden.
  • Es können auch nur Teile einer Seite (z.B. ein Div) nachgeladen werden.
  • Auch andere Datenformen (z.B. JSON) sind möglich. Es gibt auch entsprechende Frameworks
  • Browser-History und URLs im Blick behalten. Seite soll auch komplett ladbar sein.
  • Title Tag auslesen und ersetzen. Oder den Titel in den Link schreiben und hier holen.

Strategiebeispiel

  • 2 verschachtelte Container
  • Der äußere beinhaltet alle Inhalte. An den inneren werden die neuen Inhalte angehängt (append)
  • Page Transition wird ausgeführt und der innere Container mit den alten Inhalten ausgeblendet.
  • Evtl. Browser History aktualisieren und URL
  • Evtl. Seitenskripte neu initialisieren

Inhalte dynamisch nachladen mit AJAX

Seitenrequest auslösen

jQuery

$(function() { 
    var href;
    var title;
 
    $('body').on('click','a.ajax-link',function(e) { // nav link clicked 
        href = $(this).attr("href");
        title = $(this).attr("name");
 
        // load content via AJAX
        loadContent(href);
 
        // prevent click and reload
        e.preventDefault();
    });
 
    function loadContent(url){ // Load content
 
        // variable for page data
        $pageData = '';
 
        // send Ajax request
        $.ajax({
            type: "POST",
            url: url,
            data: { ajax: true },
            success: function(data,status){
                $pageData = data;
            }
        }).done(function(){ // when finished and successful
 
            // construct new content
            $pageData = '<div class="content no-opacity ajax">' + $pageData + '</div>';
 
            // add content to page
            $('.content-container').append($pageData);
 
            // remove old content
            $('.content.current-content').remove();
 
            // show new content and clean up classes
            $(this).removeClass('no-opacity').removeClass('ajax').addClass('current-content');
             
        }); // end of ajax().done()
    } // end of loadContent()
});