This website uses cookies to personalise ads and to analyse traffic ok
web design

Page scroll to id

Frequently Asked Questions

  • Can I use the plugin to scroll an overflowed div?

    No. Page scroll to id scrolls the entire page (the document’s root element) so it works correctly highlighting links, alongside deep linking plugins etc. with mouse and touch events.

  • Do you support Internet Explorer 7?

    No and you shouldn’t either (IE7 usage is non-existent). If the script does work on IE7, it’s by pure luck.

  • When I click the link, nothing happens or page “jumps” to the target id without animation

    Make sure your link has href value # with the id of the section you want to scroll-to (e.g. <a href="#id" rel="m_PageScroll2id">link</a>) and a section with such an id exists in your page (e.g. <div id="id">target</div>). Check your mPageScroll2id function selector(s) and verify that such links exist in your document. Check the path of jquery.malihu.PageScroll2id.min.js and make sure it’s loaded correctly. Verify that the jQuery version you’re using is 1.6.0 or higher.

  • How do I make my links work from other/different pages?

    To make your links work from any page, you need to add the full address in your links href (instead of just the hash with the id). For example, you’ll need to change <a href="#id" rel="m_PageScroll2id">link</a> to something like <a href="http://mysite.com/some-page/#id" rel="m_PageScroll2id">link</a>.

  • The page doesn’t scroll exactly where I want

    The script scrolls the page to the top position of your target element. Your target’s top position does not include its margins, so make sure to check your element’s actual position via your browser’s developer tools and change your CSS if needed (e.g. adding paddings on your target). You can also offset the scroll-to position via the offset option parameter.

  • The page doesn’t scroll to the very top

    Your target element is probably not at the very top (check its position via your browser’s developer tools). If your link has href value #top and no target with id top exists in your page, the plugin will automatically scroll the page to the very top (the position of the body tag).

  • How to prevent my fixed navigation menu overlapping the content?

    Set your menu selector as the value of offset option parameter. For example, if you have a fixed menu with id navigation-menu, set offset to "#navigation-menu" in order to stop page scrolling below it and avoid overlapping your content.

    $("a[rel='m_PageScroll2id']").mPageScroll2id({
      offset:"#navigation-menu"
    });
    
  • Can I specify link specific offset values?

    Yes, by adding the html attribute data-ps2id-offset to a link. For example, <a href="#id" rel="m_PageScroll2id" data-ps2id-offset="100">link</a> will offset scroll-to position by 100 pixels. Note that data-ps2id-offset overwrites the offset option parameter.

  • How do I scroll to an id when page loads?

    Use the plugin’s scrollTo method in your script. For example:

    $(window).on("load",function(){
        $("a[rel='m_PageScroll2id']").mPageScroll2id();
        $.mPageScroll2id("scrollTo","#id");
    });
    
  • How do I highlight the links in my menu?

    Use the mPS2id-highlight class in your stylesheet. This class is added by the script on links whose target element is considered to be within the viewport. Example:

    .menu a.mPS2id-highlight{ 
        background: #ff0; 
    }
    
  • More than one links are highlighted! How to highlight only the first one?

    Use the mPS2id-highlight-first class in your stylesheet (instead of just mPS2id-highlight). This class is added by the script on the first link whose target element is considered to be within the viewport. Example:

    a.mPS2id-highlight-first{ 
        background: #ff0; 
    }
    

    Alternatively, you can use the forceSingleHighlight option parammeter by setting its value to true

    $("a[rel='m_PageScroll2id']").mPageScroll2id({
      forceSingleHighlight:true
    });
    
  • How to keep my links highlighted when my target elements have 0 height?

    Set the keepHighlightUntilNext option parammeter to true:

    $("a[rel='m_PageScroll2id']").mPageScroll2id({
      keepHighlightUntilNext:true
    });
    

    This will keep the highlighted element on until the next one comes into view.

  • How can I get the plugin to scroll to the current target on window resize?

    Get the current target by its highlight class and call the scrollTo method to scroll to its id

    $(window).resize(function(){
        var to=$(".mPS2id-target").attr("id");
        $.mPageScroll2id("scrollTo",to);
    });
    
  • How can I get the plugin to scroll to URL location hash on window resize?

    Get the location hash and call the scrollTo method

    $(window).resize(function(){
        var loc=window.location.hash,
            to=(loc.indexOf("#/#")!==-1) ? loc.split("/")[1] : loc;
        $.mPageScroll2id("scrollTo",to);
    });
    
  • How to use the plugin with WordPress custom/native menus?

    See “Page scroll to id for WordPress”

  • How to use the WordPress plugin without editing my theme’s markup?

    See “Page scroll to id for WordPress”

  • What if my links have rel values already set?

    You can add the m_PageScroll2id in your link’s rel attribute (along with the other values) and change mPageScroll2id function selector to "a[rel~='m_PageScroll2id']"

  • Can I specify link specific animation duration/speed values?

    Yes, by adding the class ps2id-speed-VALUE to the link or to link’s parent element (VALUE indicating the animation duration in milliseconds). For example, <a href="#id" rel="m_PageScroll2id" class="ps2id-speed-700">link</a> will set its animation duration/speed to 700 milliseconds. Note that ps2id-speed-VALUE class overwrites the scrollSpeed option parameter.


Plugin home     Project on GitHub

Pages: 1 2 3 4


463 Comments

Post a comment

Comments pages: 1 4 5 6

  1. James
    Posted on March 27, 2017 at 18:45 Permalink

    Hi there

    I’ve said it before and I’ll say it again – your plugins are great!

    I have something that is bugging me though and I can’t see what I’m doing wrong. On the above web page there are links in the submenu to another page – the page should scroll to the offset of the ID but it doesn’t. Scrolling works within the page but not between pages. It’s as though the script is not being called.

    Can you help please?

    Thanks

    James

    Reply
    • james
      Posted on March 27, 2017 at 18:47 Permalink

      the weblink didn’t reproduce – here it is again.

      Reply
    • malihu
      Posted on March 28, 2017 at 02:22 Permalink

      Hello,

      Scrolling smoothly from/to different pages is only available on the WordPress plugin. You need to add some extra code in order to get this functionality with the simple jQuery plugin.

      You should edit your jquery.functions.js file and remove $("a[rel='m_PageScroll2id']").mPageScroll2id({ scrollSpeed: 1500, offset: 120 }); (it’ll be moved below) and add the following code at the end of the file (after the last });):

      (function($){ var _hash=location.hash || null, _validateLocHash=function(val){ try{ var $val=$(val); }catch(error){ return false; } //avoid js errors on invalid selectors return $(val).length && $("a[href*='"+val+"']").length; }; $(document).ready(function(){ if(_hash){ if(_validateLocHash(_hash)){ var href=window.location.href.replace(/#.*$/,"#"); $(window).scrollTop(0); //stop jump to hash straight away if(window.history && window.history.replaceState){ window.history.replaceState("","",href); }else{ window.location.href=href; } } } }); $(window).on("load",function(){ $("a[rel='m_PageScroll2id']").mPageScroll2id({ scrollSpeed: 1500, offset: 120 }); //Page Scroll to id fn call if(_hash){ if(_validateLocHash(_hash)){ $(window).scrollTop(0); //jump/start from the top setTimeout(function(){ $.mPageScroll2id("scrollTo",_hash); //scroll to location hash on page load if(window.history && window.history.replaceState){ window.history.replaceState("","",_hash); }else{ window.location.hash=_hash; } },0); //optional delay } } }); })(jQuery);

      Reply
      • James
        Posted on March 28, 2017 at 12:00 Permalink

        That’s perfect – thanks!

        Since sending you the message, I did manage to get a a form of it to work in another version but only to partially.

        I’m very grateful.

        πŸ™‚

        Reply
  2. gamatire
    Posted on March 26, 2017 at 11:01 Permalink

    Thanks that was helpful

    Reply
  3. horstmith
    Posted on March 16, 2017 at 19:39 Permalink

    Hey, great plugin!

    but, how can i change the color of the font?
    i tried everything. i use WordPress with the semplice theme.

    here is the button i want to change the color of the font:
    http://maxlorenz.com/?work=63&cs=1

    thanks a lot!

    Reply
    • malihu
      Posted on March 16, 2017 at 20:19 Permalink

      Changing font color is done via CSS as with any kind of link (it doesn’t matter if the link is added or handled by “Page scroll to id”).
      You should edit your theme’s stylesheet (or custom CSS) and set the color you want. For example, to set a color for links handled by the plugin (e.g. your “SKIP” link), you can add:

      a._ps2id { color: #c0c0c0; }

      and for the hover state:

      a._ps2id:hover { color: #000; }

      Reply
  4. Josh
    Posted on March 11, 2017 at 07:05 Permalink

    Just started my own WordPress website for a portfolio and I really love this plug-in. For the twenty seventeen theme it might be helpful to be able to scroll so that the bottom of an element is aligned with the bottom of the browser window (viewport?) rather than the default which is that the top of the element aligns with the top of the window. It looks like someone already commented on this but the solution seemed to only work for elements with fixed heights, or maybe there is already a way to do it but I can’t quite figure it out. Would it be possible to have an option for the target to be at the top or bottom of the viewport?

    Reply
    • Josh
      Posted on March 11, 2017 at 07:34 Permalink

      I’m looking for something like this: https://jsfiddle.net/L56wxhqm/32/

      Reply
    • malihu
      Posted on March 11, 2017 at 21:23 Permalink

      Hi,

      I can’t really say if this functionality can be added as a plugin feature/option on a future version. I’ll need to make extensive tests and if everything goes well, I’ll add it.

      For now, you’ll need to use javascript (for elements with non-fixed height).
      You can add a script (<script>) in your theme’s template (e.g. in footer.php after wp_footer function) that’ll change the offset of a specific link/target dynamically.

      Example:

      <script>

      (function($){ $(window).on("load resize",function(){ var val="#panel2"; //set your element's id/hash fragment value $("a[href*='"+val+"']").data("ps2id-offset",function(){ return $(window).height()-$(val).height(); }); }); })(jQuery);

      </script>

      The above will make your “Tinkerbot” link scroll until the bottom of #panel2 section reaches the bottom of the viewport.

      Reply
      • Josh
        Posted on March 12, 2017 at 03:01 Permalink

        This is awesome!! Thanks so much for your quick response and help. I got it working really well with a click event on the top menu. The way I did it is probably not the most efficient way but it works for this site. Donated. Have a beer on me πŸ™‚

        Reply
        • malihu
          Posted on March 12, 2017 at 07:07 Permalink

          Good call. Looks good to me πŸ˜‰
          Thanks a lot for your donation and support!

          Reply

Comments pages: 1 4 5 6

Post a comment

Your e-mail is never published nor shared. Required fields are marked *

You may use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
You can write or copy/paste code directly in your comment using the <code> tag:
<code>code here...</code>
You may also use the data-lang attribute to determine the code language like so:
<code data-lang-html>, <code data-lang-css>, <code data-lang-js> and <code data-lang-php>

css.php