Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.11.2015, 14:27
Интересующийся
Отправить личное сообщение для goody-goody Посмотреть профиль Найти все сообщения от goody-goody
 
Регистрация: 13.10.2015
Сообщений: 17

Как правильно реализовать прокрутку меню?
Доброго времени суток! Подскажите, пожалуйста, как реализовать переход меню при прокрутке, чтоб пункты не уползали, и потом снова появлялись, а были зафиксированы
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <link rel='stylesheet' href="style.css">
    <title>Test Frontend</title>
</head>
<body>
    <header id='header'>
    	<ul class='nav-bar'> <!-- proximanova semibold -->
    		<li>Our<br>Heritage</li>
    		<li>What’s Our<br>Secret?</li>
    		<li>Why Are Dairy<br>Products Good<br>For You?</li>
    		<li>Our<br>Products</li>
    		<li>Ask Your<br>Farmer</li>
    		<li>Cheese<br>Recipes</li>
    		<li id='contact'>Contact Us</li>
    		<li></li>
    	</ul>
    </header>
    <div id='jumbotron'></div>
    <div id='content'>

    </div>
    <script>
    var header = document.getElementById('header');
    var headerSourceBottom = header.getBoundingClientRect().bottom + window.pageYOffset;
    window.onscroll = function() {
      if (header.classList.contains('fixed') && window.pageYOffset < headerSourceBottom) {
        header.classList.remove('fixed');
      } else if (window.pageYOffset > headerSourceBottom) {
        header.classList.add('fixed');
      }
    };
  </script>
</body>
</html>


* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}

@font-face {
	font-family: ProximaNova Semibold;
	src: url(fonts/proximanova-semibold.otf);
}


header {
	width: 100%;
	height: 140px;
	position: absolute;
}

.nav-bar {
	margin-left: 20em;
}
.nav-bar li {
	margin-top: 1.8em;
	display: inline-block;
	padding: 0 1.5em;
	font-family: ProximaNova Semibold;
	font-size: 1.3em;
	color: white;
	text-align: center;
	vertical-align: top;
	line-height: 1.3em;
}

#contact {
	padding-top: .75em;
}

#jumbotron {
	background-image: url(http://i11.pixs.ru/storage/4/6/2/jumbotronj_7527400_19634462.jpg);
	background-size: 100%;
	background-repeat: no-repeat;
	height: 765px;
}

#content {
	background-image: url(http://i11.pixs.ru/storage/4/7/3/contentbgj_3491250_19634473.jpg);
	background-size: 100%;
	background-repeat: no-repeat;
	height: 1765px;
}

.fixed {
	background-image: url(http://i11.pixs.ru/storage/4/4/7/headerjpg_2661381_19634447.jpg);
	background-size: 100%;
	background-repeat: no-repeat;
	height: 140px;
    position: fixed;
    top: 0;
}
Ответить с цитированием
  #2 (permalink)  
Старый 25.11.2015, 17:49
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

Вот вам примерчик
тут
Ответить с цитированием
  #3 (permalink)  
Старый 25.11.2015, 18:07
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

(function() {
	var header = document.getElementById('header'),
		headerIsFixed = false,
		headerTop = header.getBoundingClientRect().top;
	
	window.addEventListener('scroll', function() {
		if(this.pageYOffset >= headerTop != headerIsFixed) {
			headerIsFixed = !headerIsFixed;
			header.classList[headerIsFixed ? 'add' : 'remove']('fixed');
		}
	});
})();
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Как дописать значения атрибута в ссылках в динамическом меню? dimas15 Ваши сайты и скрипты 7 02.08.2013 22:00
Контекстное меню как считать данные из таблицы xela1980 jQuery 25 31.05.2013 14:20
Как правильно очистить maxlength в input? Маэстро Events/DOM/Window 10 22.06.2011 18:14
Подскажите как в superfish.js меню SAA jQuery 5 20.12.2009 21:54