тег привязки и атрибут имени анимированная прокрутка - PullRequest
6 голосов
/ 04 января 2012

Я сделал это http://jsfiddle.net/thilakar/WsxJy/3/, используя теги привязки и атрибуты имени.

, но мне нужно использовать jquery, как показано нижеhttp://www.jibevisuals.com/

при нажатии на страницу меню «о нас» медленно перемещается вверх.Мне нужна такая работа.

Любое предложение

Заранее спасибо.

Ответы [ 4 ]

14 голосов
/ 04 января 2012

Описание

Вы можете сделать это, используя jQuery.offset() и jQuery.animate().

Ознакомьтесь с демонстрацией jsFiddle .

Пример

function scrollToAnchor(aid){
    var aTag = $("a[name='"+ aid +"']");
    $('html,body').animate({scrollTop: aTag.offset().top},'slow');
}

scrollToAnchor('id3');

Дополнительная информация

1 голос
/ 14 марта 2014

Вы можете использовать jQuery Animate :

    var $root = $('html, body');
    $('a').click(function() {
    if ($.attr(this, 'href').indexOf("#")!=-1&&$.attr(this, 'href')!="#")
    {
        $root.animate({
            scrollTop: $( $.attr(this, 'href') ).offset().top
        }, 500);
        return false;
    }
    });

Так что, если вы используете следующую ссылку:

<a href="#home"></a>

и поставьте якоря в нужное место:

<a id="home"></a>

он будет плавно перемещаться к тегу привязки.

Этот бесплатный плагин меню jQuery работает с этим методом: PageScroll Плагин меню jQuery

1 голос
/ 04 января 2012

Вы имеете в виду, как это -> http://css -tricks.com / examples / SmoothPageScroll / # source-code ?

0 голосов
/ 14 января 2014

Snake Eyes ответ является наиболее динамичным вариантом, поскольку вам не нужно кодировать каждый тег в js.Все, что клиент должен сделать, это использовать решение HTML, лучше для управления CMS.

Этот небольшой фрагмент кода - все, что вам нужно (ну, конечно, и jQuery)

$(function() {
  $('a[href*=#]:not([href=#])').click(function() {
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {

      var target = $(this.hash);
      target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
      if (target.length) {
        $('html,body').animate({
          scrollTop: target.offset().top
        }, 1000);
        return false;
      }
    }
  });
});
    

Даже естьрешение для stickymenu в верхней части страницы, обратите внимание, чтобы заменить #main_menu на id или класс вашего меню:

$(function() {
    $('a[href*=#]:not([href=#])').click(function() {
        if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
            var height_menu = $("#main_menu").css("height");
            height_menu = parseInt(height_menu,10);

            var target = $(this.hash);
            target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
            if (target.length) {
                $('html,body').animate({
                scrollTop: target.offset().top - height_menu
                }, 1000);
                return false;
            }
        }
    });
});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...