UPDATE
Я обновил ответ здесь, так что он может действительно работает!
HTML
Нам нужны некоторые основные правила HTML для работы с
- Навигация вкладках JQuery (с использованием списка или таблицы, не имеет значения)
- Некоторые разделы (Маркировки ID)
- Якоря во вкладках, которые ссылаются на идентификаторы разделов
пример:
<!DOCTYPE html>
<html>
<body id="#top">
<nav>
<ul>
<li><a href="#top">Home</a></li>
<li><a href="#web">Web</a></li>
<li><a href="#design">Design</a></li>
<li><a href="#photo">Photo</a></li>
</ul>
</nav>
<header><h2>HEADER</h2></header>
<section id="web"><h2>WEB</h2></section>
<section id="design"><h2>DESIGN</h2></section>
<section id="photo"><h2>PHOTO</h2></section>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</body>
</html>
JQuery
Это JQuery скрипт будет прекрасно работать с относительными высотами сечения.Для этого нам нужно:
- функции, которая вычисляет верхнюю все секции и прибыльность
- Функции, проверьте, если прокрутку позиции находится между ними
- Добавлением
.current
класса на вкладку текущего раздела
- Привязка событий, поэтому мы пересчитывать позиции прокрутки при прокрутке и раздел высоты при изменении размеров окна
пример:
var currentTab = (function() {
//variables
var $window = $(window),
$section = $('section'),
$scrollPosition = $window.scrollTop(),
$sectionHeights = [];
//will calculate each section heights and store them in sectionHeights[] array
function resizeSectionHeights() {
$section.each(function (i) {
$sectionHeights[i] = $(this).outerHeight();
});
}
/*will calculate current scroll position. If it's between the top and bottom of a section,
the tab containing an href value of that section id will have the .current class.*/
function applyCurrentState() {
$scrollPosition = $window.scrollTop();
$section.each(function (i) { //we indent i at each section count, so we can find it's height in sectionHeight[]
var $anchor = $("nav a[href=#" + $(this).attr('id') + "]"),
$sectionTop = $(this).offset().top - 1, // -1 get rid of calculation errors
$sectionBottom = $sectionTop + $sectionHeights[i] - 1; // -1 get rid of calculation errors
if ($scrollPosition >= $sectionTop && $scrollPosition < $sectionBottom) {
$anchor.addClass('current');
} else {
$anchor.removeClass('current');
}
});
}
//binding events
$window.resize(resizeSectionHeights);
$window.scroll(applyCurrentState);
//initialization
resizeSectionHeights();
}());
CSS
Для CSS, просто изменить стиль nav a.current
так мы замечаем, что мы в данном конкретном разделе.
FINAL
Чтобы увидеть конечный продукт, пожалуйста, проверьте THIS JSFIDDLE.
http://stackoverflow.com/questions/15798360/show-div-on-scrolldown-after-800px посмотрите на это .. для конкретного использования div $ ('your_div') .offset(). Top –
Могли бы вы пожалуйста, дайте контекстный пример? Я попытался включить его, но кажется, что моя функция .scrollTop() не работает ... Нужен ли мне специальный плагин? – lolgab123
http://jsfiddle.net/ZyKar/2074/ этот пример, чтобы вы знали, как использовать прокрутку .. не забудьте включить jquery-библиотеку в свой HTML-код .. удачи –