sharepointcentric
4/19/2014 - 9:12 AM

subnav.css

(function ($) {

	$(function(){

		// fix sub nav on scroll
		var $win = $(window),
				$body = $('body'),
				$nav = $('.subnav'),
				navHeight = $('.navbar').first().height(),
				subnavHeight = $('.subnav').first().height(),
				subnavTop = $('.subnav').length && $('.subnav').offset().top - navHeight,
				marginTop = parseInt($body.css('margin-top'), 10);
				isFixed = 0;

		processScroll();

		$win.on('scroll', processScroll);

		function processScroll() {
			var i, scrollTop = $win.scrollTop();

			if (scrollTop >= subnavTop && !isFixed) {
				isFixed = 1;
				$nav.addClass('subnav-fixed');
				$body.css('margin-top', marginTop + subnavHeight + 'px');
			} else if (scrollTop <= subnavTop && isFixed) {
				isFixed = 0;
				$nav.removeClass('subnav-fixed');
				$body.css('margin-top', marginTop + 'px');
			}
		}

	});

})(window.jQuery);
<body data-spy="scroll" data-target=".subnav" data-offset="100">

	<div class="container">
		<div class="subnav">
			<ul class="nav nav-pills">
				<li><a href="#section1">Section 1</a></li>
				<li><a href="#section2">Section 2</a></li>
				<li><a href="#section3">Section 3</a></li>
			</ul>
		</div>
	</div>
	
	<section id="section1">
		<h1>Section 1</h1>
		<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
	</section>
	
	<section id="section2">
		<h1>Section 2</h1>
		<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
	</section>
	
	<section id="section3">
		<h1>Section 3</h1>
		<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
	</section>
	
</body>
section {
	padding-top: 60px;	
}

.subnav {
	margin-bottom: 60px;
	width: 100%;
	height: 36px;
	background-color: #eeeeee; /* Old browsers */
	background-repeat: repeat-x; /* Repeat the gradient */
	background-image: -moz-linear-gradient(top, #f5f5f5 0%, #eeeeee 100%); /* FF3.6+ */
	background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f5f5f5), color-stop(100%,#eeeeee)); /* Chrome,Safari4+ */
	background-image: -webkit-linear-gradient(top, #f5f5f5 0%,#eeeeee 100%); /* Chrome 10+,Safari 5.1+ */
	background-image: -ms-linear-gradient(top, #f5f5f5 0%,#eeeeee 100%); /* IE10+ */
	background-image: -o-linear-gradient(top, #f5f5f5 0%,#eeeeee 100%); /* Opera 11.10+ */
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f5f5f5', endColorstr='#eeeeee',GradientType=0 ); /* IE6-9 */
	background-image: linear-gradient(top, #f5f5f5 0%,#eeeeee 100%); /* W3C */
	border: 1px solid #e5e5e5;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
}

.subnav .nav {
	margin-bottom: 0;
}

.subnav .nav > li > a {
	margin: 0;
	padding-top:    11px;
	padding-bottom: 11px;
	border-left: 1px solid #f5f5f5;
	border-right: 1px solid #e5e5e5;
	-webkit-border-radius: 0;
	-moz-border-radius: 0;
	border-radius: 0;
}

.subnav .nav > .active > a,
.subnav .nav > .active > a:hover {
	padding-left: 13px;
	color: #777;
	background-color: #e9e9e9;
	border-right-color: #ddd;
	border-left: 0;
	-webkit-box-shadow: inset 0 3px 5px rgba(0,0,0,.05);
	-moz-box-shadow: inset 0 3px 5px rgba(0,0,0,.05);
	box-shadow: inset 0 3px 5px rgba(0,0,0,.05);
}

.subnav .nav > .active > a .caret,
.subnav .nav > .active > a:hover .caret {
	border-top-color: #777;
}

.subnav .nav > li:first-child > a,
.subnav .nav > li:first-child > a:hover {
	border-left: 0;
	padding-left: 12px;
	-webkit-border-radius: 4px 0 0 4px;
	-moz-border-radius: 4px 0 0 4px;
	border-radius: 4px 0 0 4px;
}

.subnav .nav > li:last-child > a {
	border-right: 0;
}

.subnav .dropdown-menu {
	-webkit-border-radius: 0 0 4px 4px;
	-moz-border-radius: 0 0 4px 4px;
	border-radius: 0 0 4px 4px;
}

@media (max-width: 767px) {

	.subnav {
		position: static;
		top: auto;
		z-index: auto;
		width: auto;
		height: auto;
		background: #fff; /* whole background property since we use a background-image for gradient */
		-webkit-box-shadow: none;
		-moz-box-shadow: none;
		box-shadow: none;
	}

	.subnav .nav > li {
		float: none;
	}

	.subnav .nav > li > a {
		border: 0;
	}

	.subnav .nav > li + li > a {
		border-top: 1px solid #e5e5e5;
	}

	.subnav .nav > li:first-child > a,
	.subnav .nav > li:first-child > a:hover {
		-webkit-border-radius: 4px 4px 0 0;
		-moz-border-radius: 4px 4px 0 0;
		border-radius: 4px 4px 0 0;
	}
}

@media (min-width: 980px) {
  
	.subnav-fixed {
		position: fixed;
		top: 40px;
		left: 0;
		right: 0;
		z-index: 1020; /* 10 less than .navbar-fixed to prevent any overlap */
		border-color: #d5d5d5;
		border-width: 0 0 1px; /* drop the border on the fixed edges */
		-webkit-border-radius: 0;
		-moz-border-radius: 0;
		border-radius: 0;
		-webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 5px rgba(0,0,0,.1);
		-moz-box-shadow: inset 0 1px 0 #fff, 0 1px 5px rgba(0,0,0,.1);
		box-shadow: inset 0 1px 0 #fff, 0 1px 5px rgba(0,0,0,.1);
		filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); /* IE6-9 */
	}
  
	.subnav-fixed .nav {
		width: 938px;
		margin: 0 auto;
		padding: 0 1px;
	}
  
	.subnav .nav > li:first-child > a,
	.subnav .nav > li:first-child > a:hover {
		-webkit-border-radius: 0;
		-moz-border-radius: 0;
		border-radius: 0;
	}
}

@media (min-width: 1210px) {

	.subnav-fixed .nav {
		width: 1168px; /* 2px less to account for left/right borders being removed when in fixed mode */
	}
}