Benutzer:Marc.Saleiko/barcelona.js
Aus LehramtsWiki
Hinweis: Nach dem Speichern den Browser-Cache leeren, um die Änderungen zu sehen: Mozilla/Firefox: Shift-Strg-R, Internet Explorer: Strg-F5, Opera: F5, Safari: ⌘-R, Konqueror: Strg-R.
/*! * * Copyright (c) David Bushell | http://dbushell.com/ * */ (function(window, document, undefined) { // helper functions var trim = function(str) { return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g,''); }; var hasClass = function(el, cn) { return (' ' + el.className + ' ').indexOf(' ' + cn + ' ') !== -1; }; var addClass = function(el, cn) { if (!hasClass(el, cn)) { el.className = (el.className === '') ? cn : el.className + ' ' + cn; } }; var removeClass = function(el, cn) { el.className = trim((' ' + el.className + ' ').replace(' ' + cn + ' ', ' ')); }; var hasParent = function(el, id) { if (el) { do { if (el.id === id) { return true; } if (el.nodeType === 9) { break; } } while((el = el.parentNode)); } return false; }; // normalize vendor prefixes var doc = document.documentElement; var transform_prop = window.Modernizr.prefixed('transform'), transition_prop = window.Modernizr.prefixed('transition'), transition_end = (function() { var props = { 'WebkitTransition' : 'webkitTransitionEnd', 'MozTransition' : 'transitionend', 'OTransition' : 'oTransitionEnd otransitionend', 'msTransition' : 'MSTransitionEnd', 'transition' : 'transitionend' }; return props.hasOwnProperty(transition_prop) ? props[transition_prop] : false; })(); /** * Add functionality for navigation slide-in */ window.App = (function() { var _init = false, app = { }; var inner = document.getElementById('innerWraper'), nav_open = false, nav_class = 'js-nav'; app.init = function() { if (_init) { return; } _init = true; var closeNavEnd = function(e) { if (e && e.target === inner) { document.removeEventListener(transition_end, closeNavEnd, false); } nav_open = false; }; app.closeNav =function() { if (nav_open) { // close navigation after transition or immediately var duration = (transition_end && transition_prop) ? parseFloat(window.getComputedStyle(inner, '')[transition_prop + 'Duration']) : 0; if (duration > 0) { document.addEventListener(transition_end, closeNavEnd, false); } else { closeNavEnd(null); } } removeClass(doc, nav_class); }; app.openNav = function() { if (nav_open) { return; } addClass(doc, nav_class); nav_open = true; }; app.toggleNav = function(e) { if (nav_open && hasClass(doc, nav_class)) { app.closeNav(); } else { app.openNav(); } if (e) { e.preventDefault(); } }; // open nav with main "nav" button document.getElementById('navBtn').addEventListener('click', app.toggleNav, false); // close nav with main "close" button document.getElementById('closeBtn').addEventListener('click', app.toggleNav, false); // close nav by touching the partial off-screen content document.addEventListener('click', function(e) { if (nav_open && !hasParent(e.target, 'nav') && !hasParent(e.target, 'top')) { e.preventDefault(); app.closeNav(); } }, true); addClass(doc, 'js-ready'); }; return app; })(); if (window.addEventListener) { window.addEventListener('DOMContentLoaded', window.App.init, false); }