2013-02-27 2 views
0

Я занимаюсь разработкой единого веб-сайта Wordpress. Поскольку это одна страница, я использовал jQuery scrollTop для анимации меню. Я хочу перейти к определенному div, когда я нажимаю на соответствующую ссылку меню с div id. Текущая проблема - это фиксированная вкладка меню, пересекающая содержимое. Она отображается над содержимым div (проблема с просмотром).jQuery scrollTop viewport issue. Как добавить настраиваемое значение в позицию(). Top

Я хочу дать промежуток между этой вкладкой меню и содержимым div, чтобы сделать контент полностью видимым.

JQuery код, используемый для прокрутки эффекта, как показано ниже: «.position() верх}»

$(document).ready(function() { 

    $('a[href=#welcome]').click(function(){ 

    $('html, body').animate({scrollTop:$('#welcome').position().top}, 'slow'); 

    return false; 

    }); 



}); 


$(document).ready(function() { 

    $('a[href=#aboutus]').click(function(){ 
    $('html, body').animate({scrollTop:$('#aboutus').position().top}, 'slow'); 

    return false; 

    }); 

}); 

Что мне нужно, чтобы добавить некоторую ценность как 200px в верхнее положение, приведенный выше Див, так что я могу прокрутите до позиции ниже верхней части div ...

Редактировать: «Извините, парни ... Я допустил ошибку в вышеуказанном требовании. Мне нужно вычесть значение из верхнего положения div, чтобы я мог прокручивать в положение над верхней частью div. "


Как я могу это исправить? Любая помощь будет оценена ..

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

ответ

1

Вы можете получить высоту меню, например:

var menuHeight = $('#mainMenu').height(); 

Когда вы делаете свиток на линии:

$('html, body').animate({scrollTop:$('#aboutus').position().top}, 'slow'); 

Вы вычитаем высоту меню:

$('html, body').animate({scrollTop:$('#aboutus').position().top-menuHeight}, 'slow'); 

Не проверено, но я думаю, что он должен работать. В основном вы говорите, что прокручиваете до позиции div, но до позиции до этой позиции, которая будет высотой меню.

+0

Привет, Большое спасибо за вашу помощь .. Ваше предположение было правильным! Я использовал position(). Top-175. Но теперь я узнал, что мой выше код не работает -> $ ('html, body'). Animate ({scrollTop: $ ('# aboutus'). Position(). Top-menuHeight}, 'slow') ; он просто прокручивается до этого div, как только в html-коде. jquery анимация не работает .. у меня есть другой код и использовал ваше предложение в нем .. И теперь это работает .. :-) –

1

Я не уверен, полностью ли я понимаю, но вы можете добавить 200 (начиная с его в px) в вашу позицию.

$(document).ready(function() { 
    var marginTop = 200; // add or remove or even grab the position of another element 

    $('a[href=#aboutus]').click(function(){ 
     $('html, body').animate({scrollTop:$('#aboutus').position().top + marginTop}, 'slow'); 
     return false; 
    }); 
}); 
+0

Допустим, ваша позиция #aboutus div 1000px , если вы добавите marginTop, вы получите больше, чем прокрутка. Вы должны вычесть вместо добавления (я думаю). – rjml

+0

Все зависит от элементов человека. Вы должны просто получить позицию элемента и установить его. Переменная должна быть отрицательной или положительной, чтобы приспособить ее к его симпатиям. Снимок экрана и некоторые html уточнят его вопрос. – xivo

+0

True ... Я предположил, что у него есть меню наверху :) – rjml