Team:Buenos Aires/Pruebas
From 2013.igem.org
(Difference between revisions)
Line 1: | Line 1: | ||
- | <html | + | <!DOCTYPE html> |
- | < | + | <html lang="en"> |
+ | <head> | ||
+ | <title>Animated Content Menu with jQuery</title> | ||
+ | <meta charset=utf-8> | ||
+ | <meta name="description" content="Animated Content Menu with jQuery" /> | ||
+ | <meta name="keywords" content="jquery, animation, menu, navigation, template, slide out, effect, background image"/> | ||
+ | <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"/> | ||
+ | <link rel="stylesheet" type="text/css" rel="stylesheet" href="https://2013.igem.org/Team:Buenos_Aires/css/style.css?action=raw&ctype=text/css" /> | ||
+ | <link href="http://fonts.googleapis.com/css?family=PT+Sans+Narrow:regular,bold" rel="stylesheet" type="text/css" /> | ||
+ | <link rel="stylesheet" type="text/css" href="https://2013.igem.org/Team:Buenos_Aires/css/jquery.pageslide.css?action=raw&ctype=text/css" /> | ||
+ | |||
<style type ='text/css'> | <style type ='text/css'> | ||
Line 29: | Line 39: | ||
+ | #contenedor{ | ||
+ | height: 800px; | ||
+ | color:#FFF; | ||
+ | } | ||
- | + | li{ | |
- | + | color:#FFF; | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
} | } | ||
+ | |||
h1{ | h1{ | ||
- | + | color:#FFF; | |
- | + | border:none; | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
} | } | ||
+ | </style> | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | </head> | + | </head> |
+ | <body> | ||
- | < | + | <contenedor> |
- | + | ||
- | + | ||
- | + | <div id="ac_background" class="ac_background"> | |
- | + | <img class="ac_bgimage" src="http://s17.postimg.org/bp7obatz3/background.png" alt="Background"/> | |
- | + | <div class="ac_overlay"></div> | |
- | + | <div class="ac_loading"></div> | |
- | + | </div> | |
- | + | <div id="ac_content" class="ac_content"> | |
- | + | <h1><span>Buenos Aires</span>iGem</h1> | |
- | + | <div class="ac_menu"> | |
- | + | <ul> | |
- | + | <li> | |
- | + | <a href="http://s17.postimg.org/bp7obatz3/background.png">Project</a> | |
- | + | <div class="ac_subitem"> | |
- | + | <span class="ac_close"></span> | |
- | + | <h2>Project</h2> | |
- | + | <ul> | |
- | + | <li>A wonderful serenity has taken possession of my entire soul, like these sweet mornings of spring which I enjoy with my whole heart.</li> | |
- | + | <li><a class="ps" href="javascript:$.pageslide({ direction: 'right', href: '_secondary.html' })">Open the page programatically.</a>Pepe</li> | |
- | + | <li>Smoked Salmon Terrine</li> | |
- | + | <li>Tuna Ceviche</li> | |
- | + | <li>Wild Mushroom Flan</li> | |
- | + | <li>Almond Bruschetta</li> | |
- | + | <li>Green Chilli Canapee</li> | |
- | + | <li>Artichoke Rucula Salad</li> | |
- | + | </ul> | |
- | + | </div> | |
- | + | </li> | |
- | + | <li> | |
- | + | <a href="http://s17.postimg.org/bp7obatz3/background.png">Results</a> | |
- | + | <div class="ac_subitem"> | |
- | + | <span class="ac_close"></span> | |
- | + | <h2>Results</h2> | |
- | + | <ul> | |
- | + | <li>Drops of rain could be heard hitting the pane, which made him feel quite sad.</li> | |
- | + | <li>>Wild Sea Bass Filet</li> | |
- | + | <li>Linguini and Clams</li> | |
- | + | <li>Shrimp and Crabmeat Alfredo</li> | |
- | + | <li>Broiled Stuffed Flounder </li> | |
- | + | <li>Mussels Marinara</li> | |
- | + | <li>Grilled Mooloolaba Giant king prawns</li> | |
- | + | <li>Lobster Mornay</li> | |
- | + | <li>Fresh Shrimp Tart</li> | |
- | + | </ul> | |
- | + | </div> | |
- | + | </li> | |
+ | <li> | ||
+ | <a href="http://s17.postimg.org/bp7obatz3/background.png">Team</a> | ||
+ | <div class="ac_subitem"> | ||
+ | <span class="ac_close"></span> | ||
+ | <h2>Team</h2> | ||
+ | <ul> | ||
+ | <li>Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts.</li> | ||
+ | <li>Ratatouille</li> | ||
+ | <li>Le Tourin</li> | ||
+ | <li>Wild Salmon Bruschetta</li> | ||
+ | <li>Sweet Mustard Gratin</li> | ||
+ | <li>Homemade Pizza Mediteranica</li> | ||
+ | <li>Spanakopita Speciale</li> | ||
+ | <li>Ricotta Spinach Cannelloni</li> | ||
+ | </ul> | ||
+ | </div> | ||
+ | </li> | ||
+ | <li> | ||
+ | <a href="http://s17.postimg.org/bp7obatz3/background.png">Desserts</a> | ||
+ | <div class="ac_subitem"> | ||
+ | <span class="ac_close"></span> | ||
+ | <h2>Desserts</h2> | ||
+ | <ul> | ||
+ | <li>It is a paradisematic country, in which roasted parts of sentences fly into your mouth.</li> | ||
+ | <li>New England Apple Crisp</li> | ||
+ | <li>Southern Pecan Pie</li> | ||
+ | <li>Brownie Fudge Sundae</li> | ||
+ | <li>Strawberry Mousse Cake</li> | ||
+ | <li>Vanilla Crème brûlée</li> | ||
+ | <li>Lemon Sorbet</li> | ||
+ | <li>Crunchy Almond Cake</li> | ||
+ | </ul> | ||
+ | </div> | ||
+ | </li> | ||
+ | <li> | ||
+ | <a href="http://s17.postimg.org/bp7obatz3/background.png">Wines</a> | ||
+ | <div class="ac_subitem"> | ||
+ | <span class="ac_close"></span> | ||
+ | <h2>Wines</h2> | ||
+ | <ul> | ||
+ | <li>A small river named Duden flows by their place and supplies it with the necessary regelialia.</li> | ||
+ | <li>CARM Douro Reserva</li> | ||
+ | <li>Fontodi Colli della Toscana Centrale Flaccianello</li> | ||
+ | <li>Alban Syrah Edna Valley Alban Estate Reva</li> | ||
+ | <li>Zaca Mesa Syrah Santa Ynez Valley</li> | ||
+ | <li>Quinta do Vallado Douro Reserva</li> | ||
+ | <li>Viticcio Chianti Classico Riserva</li> | ||
+ | <li>Avignonesi Vino Nobile di Montepulciano</li> | ||
+ | </ul> | ||
+ | </div> | ||
+ | </li> | ||
+ | </ul> | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | <div class="ac_footer"> | ||
+ | <a class="ac_left" href="http://tympanus.net/Tutorials/OverlayLikeEffect/"><span>« Previous Demo:</span> Overlay-like Effect with jQuery</a> | ||
+ | <a href="http://tympanus.net/codrops/2011/03/09/animated-content-menu/">back to the Codrops tutorial</a> | ||
+ | |||
+ | </div> | ||
+ | </div> | ||
+ | <!-- The JavaScript --> | ||
+ | <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script> | ||
+ | <script type="text/javascript" src="http://jquery-swip.googlecode.com/svn-history/r4/trunk/jquery.easing.1.3.js"></script> | ||
+ | <script src="https://2013.igem.org/Team:Buenos_Aires/css/jquery.pageslide.js?action=raw&ctype=text/js"></script> | ||
+ | <script> | ||
+ | /* Default pageslide, moves to the right */ | ||
+ | $(".first").pageslide(); | ||
+ | |||
+ | /* Slide to the left, and make it model (you'll have to call $.pageslide.close() to close) */ | ||
+ | $(".second").pageslide({ direction: "left", modal: true }); | ||
+ | </script> | ||
- | </body> | + | <script> |
+ | $(document).ready(function(){ | ||
+ | $("li").click(function(){ | ||
+ | var liId = $(this).attr('id'); | ||
+ | var namePrev = liId + "Text"; | ||
+ | var element = document.getElementById(namePrev); | ||
+ | element.style.display="block"; | ||
+ | |||
+ | }); | ||
+ | }); | ||
+ | </script> | ||
+ | |||
+ | <script type="text/javascript"> | ||
+ | $(function() { | ||
+ | var $ac_background = $('#ac_background'), | ||
+ | $ac_bgimage = $ac_background.find('.ac_bgimage'), | ||
+ | $ac_loading = $ac_background.find('.ac_loading'), | ||
+ | |||
+ | $ac_content = $('#ac_content'), | ||
+ | $title = $ac_content.find('h1'), | ||
+ | $menu = $ac_content.find('.ac_menu'), | ||
+ | $mainNav = $menu.find('ul:first'), | ||
+ | $menuItems = $mainNav.children('li'), | ||
+ | totalItems = $menuItems.length, | ||
+ | $ItemImages = new Array(); | ||
+ | |||
+ | /* | ||
+ | for this menu, we will preload all the images. | ||
+ | let's add all the image sources to an array, | ||
+ | including the bg image | ||
+ | */ | ||
+ | $menuItems.each(function(i) { | ||
+ | $ItemImages.push($(this).children('a:first').attr('href')); | ||
+ | }); | ||
+ | $ItemImages.push($ac_bgimage.attr('src')); | ||
+ | |||
+ | |||
+ | var Menu = (function(){ | ||
+ | var init = function() { | ||
+ | loadPage(); | ||
+ | initWindowEvent(); | ||
+ | }, | ||
+ | loadPage = function() { | ||
+ | /* | ||
+ | 1- loads the bg image and all the item images; | ||
+ | 2- shows the bg image; | ||
+ | 3- shows / slides out the menu; | ||
+ | 4- shows the menu items; | ||
+ | 5- initializes the menu items events | ||
+ | */ | ||
+ | $ac_loading.show();//show loading status image | ||
+ | $.when(loadImages()).done(function(){ | ||
+ | $.when(showBGImage()).done(function(){ | ||
+ | //hide the loading status image | ||
+ | $ac_loading.hide(); | ||
+ | $.when(slideOutMenu()).done(function(){ | ||
+ | $.when(toggleMenuItems('up')).done(function(){ | ||
+ | initEventsSubMenu(); | ||
+ | }); | ||
+ | }); | ||
+ | }); | ||
+ | }); | ||
+ | }, | ||
+ | showBGImage = function() { | ||
+ | return $.Deferred( | ||
+ | function(dfd) { | ||
+ | //adjusts the dimensions of the image to fit the screen | ||
+ | adjustImageSize($ac_bgimage); | ||
+ | $ac_bgimage.fadeIn(1000, dfd.resolve); | ||
+ | } | ||
+ | ).promise(); | ||
+ | }, | ||
+ | slideOutMenu = function() { | ||
+ | /* calculate new width for the menu */ | ||
+ | var new_w = $(window).width() - $title.outerWidth(true); | ||
+ | return $.Deferred( | ||
+ | function(dfd) { | ||
+ | //slides out the menu | ||
+ | $menu.stop() | ||
+ | .animate({ | ||
+ | width : new_w + 'px' | ||
+ | }, 700, dfd.resolve); | ||
+ | } | ||
+ | ).promise(); | ||
+ | }, | ||
+ | /* shows / hides the menu items */ | ||
+ | toggleMenuItems = function(dir) { | ||
+ | return $.Deferred( | ||
+ | function(dfd) { | ||
+ | /* | ||
+ | slides in / out the items. | ||
+ | different animation time for each one. | ||
+ | */ | ||
+ | $menuItems.each(function(i) { | ||
+ | var $el_title = $(this).children('a:first'), | ||
+ | marginTop, opacity, easing; | ||
+ | if(dir === 'up'){ | ||
+ | marginTop = '0px'; | ||
+ | opacity = 1; | ||
+ | easing = 'easeOutBack'; | ||
+ | } | ||
+ | else if(dir === 'down'){ | ||
+ | marginTop = '60px'; | ||
+ | opacity = 0; | ||
+ | easing = 'easeInBack'; | ||
+ | } | ||
+ | $el_title.stop() | ||
+ | .animate({ | ||
+ | marginTop : marginTop, | ||
+ | opacity : opacity | ||
+ | }, 200 + i * 200 , easing, function(){ | ||
+ | if(i === totalItems - 1) | ||
+ | dfd.resolve(); | ||
+ | }); | ||
+ | }); | ||
+ | } | ||
+ | ).promise(); | ||
+ | }, | ||
+ | initEventsSubMenu = function() { | ||
+ | $menuItems.each(function(i) { | ||
+ | var $item = $(this), // the <li> | ||
+ | $el_title = $item.children('a:first'), | ||
+ | el_image = $el_title.attr('href'), | ||
+ | $sub_menu = $item.find('.ac_subitem'), | ||
+ | $ac_close = $sub_menu.find('.ac_close'); | ||
+ | |||
+ | /* user clicks one item : appetizers | main course | desserts | wines | specials */ | ||
+ | $el_title.bind('click.Menu', function(e) { | ||
+ | $.when(toggleMenuItems('down')).done(function(){ | ||
+ | openSubMenu($item, $sub_menu, el_image); | ||
+ | }); | ||
+ | return false; | ||
+ | }); | ||
+ | /* closes the submenu */ | ||
+ | $ac_close.bind('click.Menu', function(e) { | ||
+ | closeSubMenu($sub_menu); | ||
+ | return false; | ||
+ | }); | ||
+ | }); | ||
+ | }, | ||
+ | openSubMenu = function($item, $sub_menu, el_image) { | ||
+ | $sub_menu.stop() | ||
+ | .animate({ | ||
+ | height : '400px', | ||
+ | marginTop : '-200px' | ||
+ | }, 400, function() { | ||
+ | //the bg image changes | ||
+ | showItemImage(el_image); | ||
+ | }); | ||
+ | }, | ||
+ | /* changes the background image */ | ||
+ | showItemImage = function(source) { | ||
+ | //if its the current one return | ||
+ | if($ac_bgimage.attr('src') === source) | ||
+ | return false; | ||
+ | |||
+ | var $itemImage = $('<img src="'+source+'" alt="Background" class="ac_bgimage"/>'); | ||
+ | $itemImage.insertBefore($ac_bgimage); | ||
+ | adjustImageSize($itemImage); | ||
+ | $ac_bgimage.fadeOut(1500, function() { | ||
+ | $(this).remove(); | ||
+ | $ac_bgimage = $itemImage; | ||
+ | }); | ||
+ | $itemImage.fadeIn(1500); | ||
+ | }, | ||
+ | closeSubMenu = function($sub_menu) { | ||
+ | $sub_menu.stop() | ||
+ | .animate({ | ||
+ | height : '0px', | ||
+ | marginTop : '0px' | ||
+ | }, 400, function() { | ||
+ | //show items | ||
+ | toggleMenuItems('up'); | ||
+ | }); | ||
+ | }, | ||
+ | /* | ||
+ | on window resize, ajust the bg image dimentions, | ||
+ | and recalculate the menus width | ||
+ | */ | ||
+ | initWindowEvent = function() { | ||
+ | /* on window resize set the width for the menu */ | ||
+ | $(window).bind('resize.Menu' , function(e) { | ||
+ | adjustImageSize($ac_bgimage); | ||
+ | /* calculate new width for the menu */ | ||
+ | var new_w = $(window).width() - $title.outerWidth(true); | ||
+ | $menu.css('width', new_w + 'px'); | ||
+ | }); | ||
+ | }, | ||
+ | /* makes an image "fullscreen" and centered */ | ||
+ | adjustImageSize = function($img) { | ||
+ | var w_w = $(window).width(), | ||
+ | w_h = $(window).height(), | ||
+ | r_w = w_h / w_w, | ||
+ | i_w = $img.width(), | ||
+ | i_h = $img.height(), | ||
+ | r_i = i_h / i_w, | ||
+ | new_w,new_h, | ||
+ | new_left,new_top; | ||
+ | |||
+ | if(r_w > r_i){ | ||
+ | new_h = w_h; | ||
+ | new_w = w_h / r_i; | ||
+ | } | ||
+ | else{ | ||
+ | new_h = w_w * r_i; | ||
+ | new_w = w_w; | ||
+ | } | ||
+ | |||
+ | $img.css({ | ||
+ | width : new_w + 'px', | ||
+ | height : new_h + 'px', | ||
+ | left : (w_w - new_w) / 2 + 'px', | ||
+ | top : (w_h - new_h) / 2 + 'px' | ||
+ | }); | ||
+ | }, | ||
+ | /* preloads a set of images */ | ||
+ | loadImages = function() { | ||
+ | return $.Deferred( | ||
+ | function(dfd) { | ||
+ | var total_images = $ItemImages.length, | ||
+ | loaded = 0; | ||
+ | for(var i = 0; i < total_images; ++i){ | ||
+ | $('<img/>').load(function() { | ||
+ | ++loaded; | ||
+ | if(loaded === total_images) | ||
+ | dfd.resolve(); | ||
+ | }).attr('src' , $ItemImages[i]); | ||
+ | } | ||
+ | } | ||
+ | ).promise(); | ||
+ | }; | ||
+ | |||
+ | return { | ||
+ | init : init | ||
+ | }; | ||
+ | })(); | ||
+ | |||
+ | /* | ||
+ | call the init method of Menu | ||
+ | */ | ||
+ | Menu.init(); | ||
+ | }); | ||
+ | </script> | ||
+ | </body> | ||
</html> | </html> |
Revision as of 17:13, 21 May 2013
<!DOCTYPE html>