Team:Wageningen UR/Templates/HeaderFooterStyle
From 2011.igem.org
(Difference between revisions)
Line 7: | Line 7: | ||
<STYLE TYPE="text/css"> | <STYLE TYPE="text/css"> | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | + | #miniflex { | |
- | + | width: 100%; | |
+ | float: left; | ||
+ | font-size: small; /* could be specified at a higher level */ | ||
+ | margin: 0; | ||
+ | padding: 0 10px 0 10px; | ||
+ | border-bottom: 1px solid #696; | ||
+ | position:relative; | ||
+ | z-index:2; | ||
} | } | ||
- | |||
- | |||
+ | #miniflex li { | ||
+ | float: left; | ||
+ | margin: 0; | ||
+ | padding: 0; | ||
+ | display: inline; | ||
+ | list-style: none; | ||
+ | position:relative; | ||
+ | } | ||
+ | |||
+ | #miniflex a:link, #miniflex a:visited { | ||
+ | float: left; | ||
+ | font-size: 85%; | ||
+ | line-height: 20px; | ||
+ | font-weight: bold; | ||
+ | margin: 0 10px 0 10px; | ||
+ | text-decoration: none; | ||
+ | color: #9c9; | ||
+ | } | ||
+ | |||
+ | #miniflex a.active:link, #miniflex a.active:visited, #miniflex a:hover { | ||
+ | border-bottom: 4px solid #696; | ||
+ | padding-bottom: 2px; | ||
+ | color: #696; | ||
+ | } | ||
+ | |||
+ | #animated-tab { | ||
+ | position: absolute; | ||
+ | z-index: 1; | ||
+ | font-size: 85%; | ||
+ | line-height: 20px; | ||
+ | padding-bottom: 2px; | ||
+ | border-bottom: 4px solid #696; | ||
+ | } | ||
+ | </STYLE> | ||
+ | <script type="text/javascript" src="miniTab.js"></script> | ||
Line 39: | Line 63: | ||
<body> | <body> | ||
<SCRIPT Language="Javascript1.2"> | <SCRIPT Language="Javascript1.2"> | ||
- | |||
- | + | var miniTab = { | |
- | + | currentTab: 0, | |
- | + | activeTab: 0, | |
- | + | destX: 0, | |
- | + | destW: 0, | |
+ | t: 0, | ||
+ | b: 0, | ||
+ | c: 0, | ||
+ | d: 20, | ||
+ | animInterval: null, | ||
+ | sliderObj: null, | ||
+ | aHeight: 0, | ||
+ | |||
+ | init: function() { | ||
+ | if(!document.getElementById || !document.getElementById("miniflex")) return; | ||
+ | |||
+ | var ul = document.getElementById("miniflex"); | ||
+ | var liArr = ul.getElementsByTagName("li"); | ||
+ | var aArr = ul.getElementsByTagName("a"); | ||
+ | |||
+ | for(var i = 0, li; li = liArr[i]; i++) { | ||
+ | liArr[i].onmouseover = aArr[i].onfocus = function(e) { | ||
+ | var pos = 0; | ||
+ | var elem = this.nodeName == "LI" ? this : this.parentNode; | ||
+ | while(elem.previousSibling) { | ||
+ | elem = elem.previousSibling; | ||
+ | if(elem.tagName && elem.tagName == "LI") pos++; | ||
+ | } | ||
+ | miniTab.initSlide(pos); | ||
+ | } | ||
+ | } | ||
- | + | ul.onmouseout = function(e) { | |
- | var | + | miniTab.initSlide(miniTab.currentTab); |
- | + | }; | |
- | + | ||
+ | for(var i = 0; i < aArr.length; i++) { | ||
+ | if(document.location.href.indexOf(aArr[i].href)>=0) { | ||
+ | miniTab.activeTab = miniTab.currentTab = i; | ||
+ | } | ||
+ | aArr[i].style.borderBottom = "0px"; | ||
+ | aArr[i].style.paddingBottom = "6px"; | ||
+ | } | ||
- | + | miniTab.slideObj = ul.parentNode.appendChild(document.createElement("div")); | |
- | + | miniTab.slideObj.appendChild(document.createTextNode(String.fromCharCode(160))); | |
- | var | + | miniTab.slideObj.id = "animated-tab"; |
+ | miniTab.slideObj.style.top = (ul.offsetTop + liArr[miniTab.activeTab].offsetTop + aArr[miniTab.activeTab].offsetTop) + "px"; | ||
+ | miniTab.slideObj.style.left = (ul.offsetLeft + + liArr[miniTab.activeTab].offsetLeft + aArr[miniTab.activeTab].offsetLeft) + "px"; | ||
+ | miniTab.slideObj.style.width = aArr[miniTab.activeTab].offsetWidth + "px"; | ||
+ | miniTab.aHeight = ul.offsetTop + liArr[miniTab.activeTab].offsetTop + aArr[miniTab.activeTab].offsetTop; | ||
+ | |||
+ | miniTab.initSlide(miniTab.activeTab, true); | ||
+ | |||
+ | var intervalMethod = function() { miniTab.slideIt(); } | ||
+ | miniTab.animInterval = setInterval(intervalMethod,10); | ||
+ | }, | ||
- | function | + | cleanUp: function() { |
- | + | clearInterval(miniTab.animInterval); | |
- | + | miniTab.animInterval = null; | |
- | + | }, | |
- | + | ||
+ | initSlide: function(pos, force) { | ||
+ | if(!force && pos == miniTab.activeTab) return; | ||
+ | miniTab.activeTab = pos; | ||
+ | miniTab.initAnim(); | ||
+ | }, | ||
+ | |||
+ | initAnim: function() { | ||
+ | var ul = document.getElementById("miniflex"); | ||
+ | var liArr = ul.getElementsByTagName("li"); | ||
+ | var aArr = ul.getElementsByTagName("a"); | ||
+ | miniTab.destX = parseInt(liArr[miniTab.activeTab].offsetLeft + liArr[miniTab.activeTab].getElementsByTagName("a")[0].offsetLeft + ul.offsetLeft); | ||
+ | miniTab.destW = parseInt(liArr[miniTab.activeTab].getElementsByTagName("a")[0].offsetWidth); | ||
+ | miniTab.t = 0; | ||
+ | miniTab.b = miniTab.slideObj.offsetLeft; | ||
+ | miniTab.c = miniTab.destX - miniTab.b; | ||
+ | miniTab.bW = miniTab.slideObj.offsetWidth; | ||
+ | miniTab.cW = miniTab.destW - miniTab.bW; | ||
+ | miniTab.slideObj.style.top = (ul.offsetTop + liArr[miniTab.activeTab].offsetTop + aArr[miniTab.activeTab].offsetTop) + "px"; | ||
+ | }, | ||
+ | |||
+ | slideIt:function() { | ||
+ | var ul = document.getElementById("miniflex"); | ||
+ | var liArr = ul.getElementsByTagName("li"); | ||
+ | var aArr = ul.getElementsByTagName("a"); | ||
+ | |||
+ | // Has the browser text size changed? | ||
+ | if(miniTab.aHeight != ul.offsetTop + liArr[miniTab.activeTab].offsetTop + aArr[miniTab.activeTab].offsetTop) { | ||
+ | miniTab.initAnim(); | ||
+ | miniTab.aHeight = ul.offsetTop + liArr[miniTab.activeTab].offsetTop + aArr[miniTab.activeTab].offsetTop | ||
+ | }; | ||
+ | |||
+ | if(miniTab.t++ < miniTab.d) { | ||
+ | var x = miniTab.animate(miniTab.t,miniTab.b,miniTab.c,miniTab.d); | ||
+ | var w = miniTab.animate(miniTab.t,miniTab.bW,miniTab.cW,miniTab.d); | ||
+ | miniTab.slideObj.style.left = parseInt(x) + "px"; | ||
+ | miniTab.slideObj.style.width = parseInt(w) + "px"; | ||
+ | } else { | ||
+ | miniTab.slideObj.style.left = miniTab.destX + "px"; | ||
+ | miniTab.slideObj.style.width = miniTab.destW +"px"; | ||
+ | } | ||
+ | }, | ||
+ | |||
+ | animate: function(t,b,c,d) { | ||
+ | if ((t/=d/2) < 1) return c/2*t*t + b; | ||
+ | return -c/2 * ((--t)*(t-2) - 1) + b; | ||
+ | } | ||
} | } | ||
- | + | window.onload = miniTab.init; | |
- | + | window.onunload = miniTab.cleanUp; | |
- | + | </SCRIPT> | |
- | + | <h2>Animated Mini Tabs</h2> | |
+ | <ul id="miniflex"> | ||
+ | <li><a href="/about/" title="">About</a></li> | ||
+ | <li><a href="/archives/" title="">Archives</a></li> | ||
+ | <li><a href="/the-language-in-the-lab/" title="">The Language in the Lab</a></li> | ||
+ | <li><a class="active" href="/demo/animated-minitabs/" title="">MiniTab demo</a></li> | ||
+ | <li><a href="/contact/" title="">Contact</a></li> | ||
+ | </ul> | ||
+ | <p><div align="center"> | ||
+ | <font face="arial, helvetica" size"-2">Free JavaScripts provided<br> | ||
+ | by <a href="http://javascriptsource.com">The JavaScript Source</a></font> | ||
+ | </div><p> | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
</body> | </body> | ||
</html> | </html> |
Revision as of 18:11, 30 June 2011
Animated Mini Tabs
Free JavaScripts provided
by The JavaScript Source
by The JavaScript Source