Template:Queens Canada/Header
From 2011.igem.org
(Difference between revisions)
Line 21: | Line 21: | ||
<!--smooth scrolling--> | <!--smooth scrolling--> | ||
- | + | <link rel="stylesheet" href="css/style.css" /> | |
- | <link rel="stylesheet" href="css/style.css" /> | + | |
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script> | <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script> | ||
<script> | <script> | ||
- | $ | + | $(function() { |
- | + | ||
- | + | function filterPath(string) { | |
- | + | return string | |
- | + | .replace(/^\//,'') | |
- | + | .replace(/(index|default).[a-zA-Z]{3,4}$/,'') | |
- | + | .replace(/\/$/,''); | |
- | + | } | |
- | + | ||
- | + | var locationPath = filterPath(location.pathname); | |
- | + | var scrollElem = scrollableElement('html', 'body'); | |
- | + | ||
- | + | // Any links with hash tags in them (can't do ^= because of fully qualified URL potential) | |
- | + | $('a[href*=#]').each(function() { | |
- | + | ||
- | + | // Ensure it's a same-page link | |
- | + | var thisPath = filterPath(this.pathname) || locationPath; | |
- | + | if ( locationPath == thisPath | |
- | + | && (location.hostname == this.hostname || !this.hostname) | |
- | + | && this.hash.replace(/#/,'') ) { | |
- | + | ||
- | + | // Ensure target exists | |
- | + | var $target = $(this.hash), target = this.hash; | |
- | + | if (target) { | |
- | + | ||
- | + | // Find location of target | |
- | + | var targetOffset = $target.offset().top; | |
- | + | $(this).click(function(event) { | |
- | + | ||
- | + | // Prevent jump-down | |
- | + | event.preventDefault(); | |
- | + | ||
- | + | // Animate to target | |
- | + | $(scrollElem).animate({scrollTop: targetOffset}, 400, function() { | |
- | + | ||
- | + | // Set hash in URL after animation successful | |
- | + | location.hash = target; | |
- | + | ||
- | + | }); | |
- | + | }); | |
- | + | } | |
- | + | } | |
- | + | ||
- | + | }); | |
- | + | ||
- | + | // Use the first element that is "scrollable" (cross-browser fix?) | |
- | + | function scrollableElement(els) { | |
- | }); | + | for (var i = 0, argLength = arguments.length; i <argLength; i++) { |
- | + | var el = arguments[i], | |
- | </script> | + | $scrollElement = $(el); |
+ | if ($scrollElement.scrollTop()> 0) { | ||
+ | return el; | ||
+ | } else { | ||
+ | $scrollElement.scrollTop(1); | ||
+ | var isScrollable = $scrollElement.scrollTop()> 0; | ||
+ | $scrollElement.scrollTop(0); | ||
+ | if (isScrollable) { | ||
+ | return el; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | return []; | ||
+ | } | ||
+ | |||
+ | }); | ||
+ | </script> | ||
Revision as of 05:54, 28 September 2011
introduction
project nemo
side projects
parts
human practices
notebook
format
timeline
protocols
weeks 1-4
weeks 5-6
weeks 7-8
weeks 9-10
weeks 11-12
weeks 13-14
weeks 15 & on
partners
extras