简体   繁体   English

每当我尝试导航到链接时,整个页面都会移动,而不是滚动div中的内容

[英]Whenever I try to navigate to a link, the entire page moves, not the material in the scrolling div

My goal is to have a scrolling Div with my main content. 我的目标是要有一个带主要内容的滚动Div。 At the top of that content is my Table of Contents that links to the other material in the scrolling Div. 该内容的顶部是我的目录,该目录链接到滚动Div中的其他材料。 I found some code that automates the ToC, however I can not for the life of me figure out how to get only the scrolling Div to move when I attempt to navigate. 我找到了一些可以自动执行ToC的代码,但是我一辈子都无法弄清楚如何在尝试导航时仅使滚动Div能够移动。 Ultimately, I intend to have the ToC navigate to the FAQ question and add a button that appears later to bring the user back to the top. 最终,我打算让ToC导航到FAQ问题,并添加一个稍后出现的按钮,以使用户回到顶部。

Is there a technique or Tutorial somewhere that will allow me to do what I want to do? 是否有某种技术或教程可以使我做自己想做的事情?

 $(document).ready(function() { $("#toc").append('<br>') $("h3").each(function(i) { var current = $(this); current.attr("id", "title" + i); $("#toc").append("<p><a id='link" + i + "' href='#title" + i + "' title='" + current.attr("tagName") + "'>" + current.html() + "</a></p>"); }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="contentarea"> <div class="title" id="newstitle"> <h1>Frequently Asked Questions</h1> </div> <div id="toc"></div> <div class="article" id="content"> <h3>How does sponsorship work at this event?</h3> <p>Sponsorship is available to businesses who wish to contribute to the success of the event. If you or your business wish to become a sponsor for HonorCon 2017, please contact the convention chair committee at <a target="_blank" href="mailto:conchair2@gmail.com">conchair2@gmail.com</a>. Our sponsors receive the most benefit from their donations, as only sponsors are advertised on our website as compared to the space for sale in our program. There are 3 levels of sponsorship available:</p> <br> <br> <h3>What are the convention space rules?/Do you have a harrassment policy?</h3> <p>The staff of HonorCon wishes to ensure a safe and comfortable environment for all attendees. We encourage you to come to have a good time and to be whomever you wish to be. We believe that conventions should be safe spaces to enjoy and explore science fiction, cosplay, and gaming. If at any time you feel that your safety or the safety of others is in jeopardy, please contact Convention Security immediately (Shore Patrol), who will then contact the Police and Hotel Security as required. To that end, however, certain forms of behavior have been deemed inappropriate by the convention committee.</p> <br> <br> <h3>Who are those guys in the yellow berets and brassards?</h3> <p>Both HonorCon and MantiCon are put on by the Royal Manticoran Navy: the Official Honor Harrington Association. Because the setting in the Honor Harrington series is primarily based on a futuristic space navy, it stands to reason that our convention's security and all-around help-force would be called "Shore Patrol" in honor of the naval military police's peace-keeping function when ships come into port. HonorCon's Shore Patrol performs security functions for the convention in cooperation with the venue's management and should be the go-to people should you have any concerns or feel in need of help of any kind.If at ay time you feel that your safety or the safety of others is in jeopardy, please contact Shore Patrol emmediately.</p> <br> <br> <h3>Where is the event?</h3> <div> <p>HonorCon 2017 will be held in the luxurious Hilton North Raleigh/Midtown. The address is:</p> <br> <p>3415 Wake Forest Road</p> <p>Raleigh, North Carolina 27609-7330</p> <p>USA</p> <p>Telephone: 1(919)872-2323</p> <p>Fax: 1(919)876-0890</p> </div> <br> <br> <h3>My question isn't here, who do I contact for an answer?</h3> <p>If we've overlooked something that you are dying to know or an explanation is unclear, you have three possible courses of action. The first is to go to the "<a target="_self" href="contact.html">Contact Us!</a>" page of this website and click on the picture of the person whose department best fits the category of your question. This will help set up and address an e-mail to the person most likely to be able to answer your question on the staff. If you are unable to find an appropriate representative who seems like they can meet your needs send an e-mail to <a target="_blank" href="mailto:conchair2@gmail.com">conchair2@gmail.com</a>. And finally, if time is of the essence, feel free to message us on Facebook using Facebook messenger. Click <a target="_self" href="https://www.facebook.com/HonorCon/">here</a> to go to our Facebook page!</p> </div> 

Thanks for your time! 谢谢你的时间!

I believe you mean that when user clicks on a link, the page should scroll instead of jumping to the relevant paragraph. 我相信您的意思是,当用户单击链接时,页面应该滚动而不是跳转到相关段落。

Here is the solution for that: 这是解决方案:

// Select all links with hashes
$('a[href*="#"]')
  // Remove links that don't actually link to anything
  .not('[href="#"]')
  .not('[href="#0"]')
  .click(function(event) {
    // On-page links
    if (
      location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') 
      && 
      location.hostname == this.hostname
    ) {
      // Figure out element to scroll to
      var target = $(this.hash);
      target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
      // Does a scroll target exist?
      if (target.length) {
        // Only prevent default if animation is actually gonna happen
        event.preventDefault();
        $('html, body').animate({
          scrollTop: target.offset().top
        }, 1000, function() {
          // Callback after animation
          // Must change focus!
          var $target = $(target);
          $target.focus();
          if ($target.is(":focus")) { // Checking if the target was focused
            return false;
          } else {
            $target.attr('tabindex','-1'); // Adding tabindex for elements not focusable
            $target.focus(); // Set focus again
          };
        });
      }
    }
  });

refer article: https://css-tricks.com/snippets/jquery/smooth-scrolling/ 参考文章: https : //css-tricks.com/snippets/jquery/smooth-scrolling/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM