Hallo @all, ich habe testweise das script aus einer alten backup datei reingeladen, da scheint es zu funktionieren.
Alter CODE (SC geht und macht kein #hashtag in url)
NEUER CODE (SC geht nicht bzw. nur desktop)
Alter CODE (SC geht und macht kein #hashtag in url)
Code:
/** * Initialize smooth scrolling to one page anchor links */ jQuery(document).ready(function() { if(jQuery('body').hasClass('is_regular_page')) { jQuery('.smartmenu-content a').addClass('backlink'); jQuery('.onepage_page a').addClass('backlink'); } var stickyheader = jQuery(".stickyheader"); var header = jQuery(".header.original"); var lastActive = null; var links = jQuery(".onepage_page .mainmenu a:not(.backlink), .onepage_page .onepagenav a:not(.backlink), .page_navigation a:not(.backlink), .smartmenu-content a:not(.backlink)"); var horizontalScroll = jQuery('body').hasClass('horizontal_scrolling'); // not on mobile devices because content is 100% if(horizontalScroll && jQuery('body').hasClass('mobile')) { horizontalScroll = false; } var duration = 700; var timeout = 300; // jump to hashtag anchor in url var strHash = window.location.hash.toString(); if(strHash.length > 0) { var target = jQuery(strHash); if( target.length > 0 ) { jQuery(strHash+' a').addClass('active'); lastActive = jQuery(".onepagenav a:not(.backlink)[href*=\\"+strHash+"]"); lastActive.addClass('active'); var offsetX = 0; var posX = target.offset().left - offsetX; var offsetY = stickyheader.height(); var posY = target.offset().top - offsetY; jQuery("html, body").animate({scrollTop: posY, scrollLeft:posX}, { start : function() { localStorage.setItem('onepage_animate', 1); }, complete : function() { setTimeout(function() { localStorage.removeItem('onepage_animate'); }, timeout); } }, 0); } } // set the last anchor to active on page load and scroll to it if(localStorage.getItem('onepage_active') !== null && localStorage.getItem('onepage_active') != undefined && strHash.length < 1) { jQuery.each(links, function(index, elem) { var hash = this.href.split("#"); if(!hash[1]) { return; } var anchor = hash[1].toString(); if(anchor == localStorage.getItem('onepage_active')) { jQuery(elem).addClass('active'); lastActive = jQuery(elem); } }); // find target in page var target = jQuery("#"+localStorage.getItem('onepage_active')) ; if (target.length > 0) { var offsetX = 0; var posX = target.offset().left - offsetX; var offsetY = stickyheader.height(); var posY = target.offset().top - offsetY; jQuery("html,body").stop().animate({scrollTop: posY, scrollLeft: posX}, { duration : 0, start : function() { // on start: flag that onepage started its animation localStorage.setItem('onepage_animate', 1); }, complete : function() { setTimeout(function() { localStorage.removeItem('onepage_animate'); localStorage.removeItem('onepage_position'); }, timeout); } }); } } // click event listener links.click(function(event) { var hash = this.href.split("#"); if(!hash[1]) { return true; } var anchor = hash[1].toString(); var target = jQuery("#"+anchor); if(target.length < 1) { return false; } // store the current active anchor as cookie for further use localStorage.setItem('onepage_active', anchor); var offsetX = 0; var posX = target.offset().left - offsetX; var offsetY = stickyheader.height(); var posY = target.offset().top - offsetY; jQuery("html,body").stop().animate({scrollTop: posY, scrollLeft: posX}, { duration : duration, start : function() { localStorage.setItem('onepage_animate',1); }, step : function() { // on start: flag that onepage started its animation localStorage.setItem('onepage_animate',1); }, complete : function() { // on complete: remove the flag setTimeout(function() { localStorage.removeItem('onepage_animate'); }, timeout); // store last position localStorage.setItem('onepage_position', { 'x': posX, 'y': posY, 'anchor': anchor }); } }); // toggle active class if(lastActive != jQuery(this)) { links.removeClass('active'); jQuery(".onepagenav a[href*="+anchor+"]").addClass('active'); jQuery(".mainmenu a[href*="+anchor+"]").addClass('active'); jQuery(this).addClass('active'); } event.preventDefault(); return false; }); }); /** * Set navi active on scroll */ jQuery(document).ready(function() { var links = jQuery(".onepage_page .mainmenu a:not(.backlink), .onepage_page .onepagenav a:not(.backlink), .page_navigation a"); var stickyheader = jQuery(".stickyheader"); var header = jQuery(".header.original"); var lastActive = jQuery(".onepage_page .mainmenu a.active, .onepage_page .onepagenav a.active"); var horizontalScroll = jQuery('body').hasClass('horizontal_scrolling'); // not on mobile devices because content is 100% if(horizontalScroll && jQuery('body').hasClass('mobile')) { horizontalScroll = false; } var lastScrollX = 0; var lastScrollY = 0; jQuery(window).scroll(function() { // escape when animation is running if(localStorage.getItem('onepage_animate') > 0) { return; } // remove active class from all links links.removeClass('active'); var scrollX = jQuery(window).scrollLeft(); var scrollY = jQuery(window).scrollTop(); var offsetX = 10; var offsetY = stickyheader.height(); jQuery.each(links, function(index, elem) { var hash = elem.href.split("#"); if(!hash[1]) { return; } var anchor = hash[1].toString(); var target = jQuery("#"+anchor); if(target.length < 1) { return; } // vertical scrolling var posY = target.offset().top - offsetY; var sizeY = posY + target.height(); if (posY <= scrollY && sizeY >= scrollY && !horizontalScroll) { jQuery(elem).addClass("active"); } // horizontal scolling var posX = target.offset().left - offsetX; var sizeX = posX + target.width(); if (posX <= scrollX && sizeX >= scrollX && horizontalScroll) { jQuery(elem).addClass("active"); } }); }); });
Code:
/** * Initialize smooth scrolling to one page anchor links */ jQuery(document).ready(function () { if ( !jQuery('body').hasClass('onepage_page') ) { return; } if(jQuery('body').hasClass('is_regular_page')) { jQuery('.smartmenu-content a').addClass('backlink'); jQuery('.onepage_page a').addClass('backlink'); } var links = jQuery(".mainmenu a:not(.backlink), #stickyheader .onepagenav a:not(.backlink), .smartmenu-content a:not(.backlink)"); var horizontalScroll = jQuery('body').hasClass('horizontal_scrolling'); // not on mobile devices because content is 100% if(horizontalScroll && jQuery('body').hasClass('mobile')) { horizontalScroll = false; } var duration = 300; var timeout = 200; // click event listener links.click(function(event,params) { event.preventDefault(); var hash = this.href.split("#"); if(!hash[1]) { return true; } var anchor = hash[1].toString(); var target = jQuery("#"+anchor); if(target.length < 1) { return false; } // regular click if( params == undefined ) { links.removeClass('active'); } jQuery(this).addClass('active'); // store the current active anchor as cookie for further use localStorage.setItem('onepage_active', anchor); var offsetX = 0; var offsetY = jQuery("#stickyheader").height(); var posX = target.offset().left - offsetX; var posY = target.offset().top - offsetY; var href = jQuery(this).attr('href'); if (params != undefined) { posY = params.posY; posX = params.posX; } jQuery("html, body").animate({ scrollTop: posY, scrollLeft: posX }, { duration : duration, start : function() { localStorage.setItem('onepage_animate',1); }, complete : function() { // on complete: remove the flag setTimeout(function() { localStorage.removeItem('onepage_animate'); }, timeout); // store last position localStorage.setItem('onepage_position', JSON.stringify({ 'x': posX, 'y': posY, 'anchor': anchor, 'href': href }) ); } }); }); // set the last anchor to active on page load and scroll to it if ( localStorage.getItem('onepage_position') != undefined && window.location.hash.toString().length < 1) { var obj = JSON.parse(localStorage.getItem('onepage_position' )); if( obj.y <= 0 ) { localStorage.removeItem('onepage_active'); localStorage.removeItem('onepage_position'); localStorage.removeItem('onepage_animate'); return; } jQuery('a[href="' + obj.href + '"]').trigger('click', {posY:obj.y}); } // anchor in url if ( window.location.hash.toString().length > 0 ) { localStorage.setItem('onepage_animate',1); //jQuery("html, body").animate({ scrollTop: 0 },0); setTimeout(function () { var target = jQuery(window.location.hash.toString()); var offsetX = 0; var offsetY = jQuery("#stickyheader").height(); var posX = target.offset().left - offsetX; var posY = target.offset().top - offsetY; jQuery.each(links, function (index, elem) { var hash = elem.href.split("#"); if (!hash[1]) { return; } var anchor = '#' + hash[1].toString(); if (anchor == window.location.hash.toString()) { jQuery(elem).trigger('click', { 'posY': posY }); } }); }, timeout); } }); /** * Set navi active on scroll */ jQuery(document).ready(function () { var links = jQuery(".onepage_page .mainmenu a:not(.backlink), .onepage_page .onepagenav a:not(.backlink), .page_navigation a"); var stickyheader = jQuery(".stickyheader"); var horizontalScroll = jQuery('body').hasClass('horizontal_scrolling'); // not on mobile devices because content is 100% if(horizontalScroll && jQuery('body').hasClass('mobile')) { horizontalScroll = false; } jQuery(window).scroll(function() { // escape when animation is running if(localStorage.getItem('onepage_animate') > 0) { return; } // remove active class from all links links.removeClass('active'); var scrollX = jQuery(window).scrollLeft(); var scrollY = jQuery(window).scrollTop(); var offsetX = 10; var offsetY = stickyheader.height(); jQuery.each(links, function(index, elem) { var hash = elem.href.split("#"); if(!hash[1]) { return; } var anchor = hash[1].toString(); var target = jQuery("#"+anchor); if(target.length < 1) { return; } // vertical scrolling var posY = target.offset().top - offsetY; var sizeY = posY + target.height(); if (posY <= scrollY && sizeY >= scrollY && !horizontalScroll) { jQuery(elem).addClass("active"); } }); }); });
Kommentar