Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] menu canvas no funciona

Estas en el tema de menu canvas no funciona en el foro de Javascript en Foros del Web. Llevo un mes tratando de solucionar algunos problemas de una plantilla que me descargue para hacerme una web. Algunos los he podido resolver yo, otros ...
  #1 (permalink)  
Antiguo 18/06/2017, 07:29
 
Fecha de Ingreso: junio-2014
Mensajes: 70
Antigüedad: 9 años, 10 meses
Puntos: 0
menu canvas no funciona

Llevo un mes tratando de solucionar algunos problemas de una plantilla que me descargue para hacerme una web. Algunos los he podido resolver yo, otros con vuestra ayuda, pero llega un punto que me da hasta vergüenza hacer una consulta, por el abuso que supone.

Por eso antes de nada quería decir que si hay algún programador en la sala, que me mande un privado, porque llegado este punto estoy dispuesto a pagar a alguien que sepa del tema y quitarme el muerto de encima.

El problema ya lo expuse hace semanas, tengo una pagina index.html con un menú que dirige a diferentes secciones de la pagina. Esta pagina funciona perfectamente, tanto en la versión escritorio como en versiones móviles (se convierte en un menú canvas) todos los links van a la perfección.
Lo que ocurre es hay otra pagina, portfolio.html, que tiene el mismo menú, pero que no tiene las secciones, ya que esa pagina es solo un portafolio de fotografías. El menú en la versión de escritorio funciona, gracias a un consejo de un forero que me dijo que tenia que poner esto para que buscara una sección concreta en otro html:
"href="index.html#album"
El problema es que en las version responsive para movil, el menú canvas se despliega, pero no son ejecutables.

He buscado en el CSS y no veo nada, ahora me da por pensar si será por JS, pero si controlo poco de HTML y CSS, de JS ya.......
  #2 (permalink)  
Antiguo 18/06/2017, 10:11
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 9 meses
Puntos: 39
Respuesta: menu canvas no funciona

Si pones el código te intento echar una mano
__________________
Diseño Web - Arisman Web
  #3 (permalink)  
Antiguo 19/06/2017, 02:04
 
Fecha de Ingreso: junio-2014
Mensajes: 70
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: menu canvas no funciona

Gracias manu, Como no se donde puede estar el asunto, te pongo todo lo referente al menú.

Gracias de antemano.

Código HTML:
Ver original
  1. <div id="fh5co-header">
  2.         <div class="container">
  3.             <!-- Mobile Toggle Menu Button -->
  4.             <a href="#" class="js-fh5co-nav-toggle fh5co-nav-toggle"><i></i></a>
  5.             <div id="fh5co-logo">
  6.                 <a href="../index.html">PHOTOGRAPHY<span>.</span></a>
  7.             </div>
  8.             <nav id="fh5co-main-nav">
  9.                 <ul>
  10.                     <li><a href="home.html#fh5co-home" class="transition">HOME</a></li>
  11.                         <li><a href="home.html#fh5co-portfolio" class="transition">PORTFOLIO</a></li>
  12.                         <li><a href="home.html#fh5co-about" class="transition">ABOUT</a></li>
  13.                         <li><a href="home.html#fh5co-contact" class="transition">CONTACT</a></li>
  14.                 </ul>
  15.             </nav>
  16.         </div>
  17.     </div>

Código CSS:
Ver original
  1. #fh5co-header #fh5co-main-nav {
  2.   float: right;
  3. }
  4. @media screen and (max-width: 768px) {
  5.   #fh5co-header #fh5co-main-nav {
  6.     display: none;
  7.   }
  8. }
  9. #fh5co-header #fh5co-main-nav ul {
  10.   padding: 0;
  11.   margin: 4px 0 0 0;
  12. }
  13. #fh5co-header #fh5co-main-nav ul li {
  14.   padding: 0;
  15.   margin: 0;
  16.   display: inline;
  17. }
  18. #fh5co-header #fh5co-main-nav ul li a {
  19.   font-family: "Source Sans Pro", sans-serif;
  20.   color: rgba(255, 255, 255, 0.8);
  21.   text-decoration: none;
  22.   margin-left: 30px;
  23.   border-bottom: 2px solid transparent;
  24. }
  25. #fh5co-header #fh5co-main-nav ul li a:hover {
  26.   text-decoration: none;
  27.   color: #6BB6E6;
  28.  
  29. }
  30. #fh5co-header #fh5co-main-nav ul li.active a {
  31.   color: #6BB6E6;
  32. }
  33.  
  34. #fh5co-header.navbar-fixed-top {
  35.   position: fixed !important;
  36.   background: #fff;
  37.   -webkit-box-shadow: 0 0 9px 0 rgba(0, 0, 0, 0.1);
  38.   -moz-box-shadow: 0 0 9px 0 rgba(0, 0, 0, 0.1);
  39.   -ms-box-shadow: 0 0 9px 0 rgba(0, 0, 0, 0.1);
  40.   box-shadow: 0 0 9px 0 rgba(0, 0, 0, 0.1);
  41.   top: 0;
  42.   left: 0px;
  43. }
  44. #fh5co-header.navbar-fixed-top #fh5co-logo {
  45.   float: left;
  46.   line-height: 1.2;
  47. }
  48. #fh5co-header.navbar-fixed-top #fh5co-logo a {
  49.   font-family: "Source Sans Pro", sans-serif;
  50.   font-size: 30px;
  51.   color: #000;
  52. }
  53. #fh5co-header.navbar-fixed-top #fh5co-main-nav ul li a {
  54.   font-family: "Source Sans Pro", sans-serif;
  55.   color: rgba(0, 0, 0, 0.8);
  56.   text-decoration: none;
  57.   margin-left: 30px;
  58.   border-bottom: 2px solid transparent;
  59. }
  60. #fh5co-header.navbar-fixed-top #fh5co-main-nav ul li a:hover {
  61.   text-decoration: none;
  62.   color: #6BB6E6;
  63. }
  64. #fh5co-header.navbar-fixed-top #fh5co-main-nav ul li.active a {
  65.   color: #6BB6E6;
  66.   border-bottom: 2px solid transparent;
  67. }
  68. #fh5co-main,
  69. #fh5co-offcanvas {
  70.   -webkit-transition: 0.8s;
  71.   -o-transition: 0.8s;
  72.   transition: 0.8s;
  73. }
  74.  
  75. #fh5co-offcanvas {
  76.   position: fixed;
  77.   top: 0;
  78.   right: 0;
  79.   bottom: 0;
  80.   z-index: 9999;
  81.   width: 275px;
  82.   background: #444853;
  83.   overflow-y: auto;
  84.   padding: 50px 30px 30px 30px;
  85.   -moz-transform: translateX(275px);
  86.   -webkit-transform: translateX(275px);
  87.   -ms-transform: translateX(275px);
  88.   -o-transform: translateX(275px);
  89.   transform: translateX(275px);
  90. }
  91. #fh5co-offcanvas .fh5co-offcanvas-close {
  92.   position: absolute;
  93.   top: 20px;
  94.   right: 30px;
  95. }
  96. #fh5co-offcanvas .fh5co-offcanvas-close:before {
  97.   font-family: 'icomoon';
  98.   speak: none;
  99.   font-style: normal;
  100.   font-weight: normal;
  101.   font-variant: normal;
  102.   text-transform: none;
  103.   line-height: 1;
  104.   /* Better Font Rendering =========== */
  105.   -webkit-font-smoothing: antialiased;
  106.   -moz-osx-font-smoothing: grayscale;
  107.   content: "\e117";
  108.   font-size: 30px;
  109.   color: rgba(255, 255, 255, 0.5);
  110.   -webkit-transition: 0.5s;
  111.   -o-transition: 0.5s;
  112.   transition: 0.5s;
  113. }
  114. #fh5co-offcanvas .fh5co-offcanvas-close:hover:before {
  115.   color: white;
  116. }
  117. #fh5co-offcanvas nav ul {
  118.   padding: 0;
  119.   margin: 0;
  120. }
  121. #fh5co-offcanvas nav ul li {
  122.   padding: 0;
  123.   margin: 0;
  124.   list-style: none;
  125. }
  126. #fh5co-offcanvas nav ul li a {
  127.   display: block;
  128.   color: rgba(255, 255, 255, 0.5);
  129.   padding: 7px 0;
  130. }
  131. #fh5co-offcanvas nav ul li a:hover {
  132.   color: #6BB6E6;
  133. }
  134. #fh5co-offcanvas nav ul li.active a {
  135.   color: #6BB6E6;
  136. }
  137. .offcanvas-visible #fh5co-offcanvas {
  138.   -moz-transform: translateX(0px);
  139.   -webkit-transform: translateX(0px);
  140.   -ms-transform: translateX(0px);
  141.   -o-transform: translateX(0px);
  142.   transform: translateX(0px);
  143. }
  144.  
  145. #fh5co-portfolio,
  146. #fh5co-about,
  147. #fh5co-contact,
  148. #fh5co-testimony,
  149. #fh5co-content {
  150.   padding: 7em 0;
  151. }
  152. @media screen and (max-width: 768px) {
  153.   #fh5co-portfolio,
  154.   #fh5co-about,
  155.   #fh5co-contact,
  156.   #fh5co-testimony,
  157.   #fh5co-content {
  158.     padding: 4em 0;
  159.   }
  160. }
  #4 (permalink)  
Antiguo 19/06/2017, 02:05
 
Fecha de Ingreso: junio-2014
Mensajes: 70
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: menu canvas no funciona

Código Javascript:
Ver original
  1. ;(function () {
  2.    
  3.     'use strict';
  4.  
  5.  
  6.  
  7.     // iPad and iPod detection 
  8.     var isiPad = function(){
  9.         return (navigator.platform.indexOf("iPad") != -1);
  10.     };
  11.  
  12.     var isiPhone = function(){
  13.         return (
  14.             (navigator.platform.indexOf("<i></i>Phone") != -1) ||
  15.             (navigator.platform.indexOf("iPod") != -1)
  16.         );
  17.     };
  18.  
  19.     var fullHeight = function() {
  20.         if ( !isiPad() && !isiPhone() ) {
  21.             $('.js-fullheight').css('height', $(window).height());
  22.             $(window).resize(function(){
  23.                 $('.js-fullheight').css('height', $(window).height());
  24.             })
  25.         }
  26.     };
  27.  
  28.     var sliderMain = function() {
  29.        
  30.         $('#fh5co-home .flexslider').flexslider({
  31.             animation: "fade",
  32.             slideshowSpeed: 5000
  33.         });
  34.  
  35.         $('#fh5co-home .flexslider .slides > li').css('height', $(window).height());   
  36.         $(window).resize(function(){
  37.             $('#fh5co-home .flexslider .slides > li').css('height', $(window).height());   
  38.         });
  39.  
  40.         $('.js-fh5co-next').on('click', function(event){
  41.  
  42.             event.preventDefault();
  43.             $('html, body').animate({
  44.                 scrollTop: $(this).closest('#fh5co-home').next().offset().top
  45.             }, 800, 'easeOutExpo');
  46.            
  47.         });
  48.  
  49.     };
  50.  
  51.     var sliderTestimony = function() {
  52.  
  53.         $('#fh5co-testimony .flexslider').flexslider({
  54.             animation: "slide",
  55.             slideshowSpeed: 5000,
  56.             directionNav: false,
  57.             controlNav: true,
  58.             smoothHeight: true,
  59.             reverse: true
  60.         });
  61.  
  62.     }
  63.  
  64.     var offcanvasMenu = function() {
  65.  
  66.         $('body').prepend('<div id="fh5co-offcanvas" />');
  67.         $('#fh5co-offcanvas').append($('#fh5co-main-nav').clone());
  68.  
  69.         setTimeout(function(){
  70.             $('#fh5co-offcanvas').prepend('<a href="#" class="js-fh5co-offcanvas-close fh5co-offcanvas-close" />');
  71.             $('#fh5co-offcanvas #fh5co-main-nav').attr('id', '');
  72.         }, 200);
  73.        
  74.     };
  75.  
  76.     var mainMenuSticky = function() {
  77.        
  78.         var sticky = $('.js-sticky');
  79.  
  80.         sticky.css('height', sticky.height());
  81.         $(window).resize(function(){
  82.             sticky.css('height', sticky.height());
  83.         });
  84.  
  85.         var $section = $('.fh5co-main-nav');
  86.        
  87.         $section.waypoint(function(direction) {
  88.            
  89.             if (direction === 'down') {
  90.  
  91.                     $section.css({
  92.                         'position' : 'fixed',
  93.                         'top' : 0,
  94.                         'width' : '100%',
  95.                         'z-index' : 99999
  96.                     }).addClass('fh5co-shadow');;
  97.  
  98.             }
  99.  
  100.         }, {
  101.             offset: '0px'
  102.         });
  103.  
  104.         $('.js-sticky').waypoint(function(direction) {
  105.             if (direction === 'up') {
  106.                 $section.attr('style', '').removeClass('fh5co-shadow');
  107.             }
  108.         }, {
  109.             offset: function() { return -$(this.element).height() + 69; }
  110.         });
  111.  
  112.     };
  113.  
  114.     // Click outside of offcanvass
  115.     var mobileMenuOutsideClick = function() {
  116.  
  117.         $(document).click(function (e) {
  118.         var container = $("#fh5co-offcanvas, .js-fh5co-nav-toggle, .js-fh5co-offcanvas-close");
  119.         if (!container.is(e.target) && container.has(e.target).length === 0) {
  120.             if ( $('body').hasClass('offcanvas-visible') ) {
  121.  
  122.                 $('body').removeClass('fh5co-overflow offcanvas-visible');
  123.  
  124.                 $('.js-fh5co-nav-toggle').removeClass('active');
  125.             }
  126.         }
  127.         });
  128.  
  129.         $('body').on('click', '.js-fh5co-offcanvas-close', function(event){
  130.            
  131.             if ( $('body').hasClass('offcanvas-visible') ) {
  132.                 $('body').removeClass('fh5co-overflow offcanvas-visible');
  133.                 $('.js-fh5co-nav-toggle').removeClass('active');
  134.             }
  135.  
  136.             event.preventDefault();
  137.  
  138.         });
  139.  
  140.     };
  141.    
  142.     // Parallax
  143.     var parallax = function() {
  144.  
  145.         $(window).stellar();
  146.  
  147.     };
  148.  
  149.  
  150.     // Redirect page
  151.     var redirectPage = function(url) {
  152.        
  153.         window.location = url;
  154.  
  155.     }
  156.  
  157.     var pageTransition = function() {
  158.  
  159.         $("body").css("display", "none");
  160.        
  161.        
  162.         $("body").fadeIn(2000);
  163.        
  164.         $("a.transition").click(function(event){
  165.             event.preventDefault();
  166.             var linkLocation = this.href;
  167.  
  168.             $("body").fadeOut(2000, redirectPage);      
  169.            
  170.             redirectPage(linkLocation);
  171.         });
  172.            
  173.     };
  174.  
  175.  
  176.     // Burger Menu
  177.     var burgerMenu = function() {
  178.  
  179.         $('body').on('click', '.js-fh5co-nav-toggle', function(event){
  180.  
  181.             var $this = $(this);
  182.  
  183.             $('body').toggleClass('fh5co-overflow offcanvas-visible');
  184.             $this.toggleClass('active');
  185.             event.preventDefault();
  186.  
  187.         });
  188.  
  189.     };
  190.  
  191.     var scrolledWindow = function() {
  192.  
  193.         $(window).scroll(function(){
  194.  
  195.             var header = $('#fh5co-header'),
  196.                 scrlTop = $(this).scrollTop();
  197.  
  198.             if ( scrlTop > 500 && scrlTop <= 2000 ) {
  199.                 header.addClass('navbar-fixed-top fh5co-animated slideInDown');
  200.             } else if ( scrlTop <= 500) {
  201.                 if ( header.hasClass('navbar-fixed-top') ) {
  202.                     header.addClass('navbar-fixed-top fh5co-animated slideOutUp');
  203.                     setTimeout(function(){
  204.                         header.removeClass('navbar-fixed-top fh5co-animated slideInDown slideOutUp');
  205.                     }, 100 );
  206.                 }
  207.             }
  208.  
  209.            $('#fh5co-home .flexslider .fh5co-overlay').css({
  210.                 'opacity' : (.5)+(scrlTop/2000)
  211.            });
  212.  
  213.            if ( $('body').hasClass('offcanvas-visible') ) {
  214.             $('body').removeClass('offcanvas-visible');
  215.             $('.js-fh5co-nav-toggle').removeClass('active');
  216.            }
  217.          
  218.         });
  219.  
  220.         $(window).resize(function() {
  221.             if ( $('body').hasClass('offcanvas-visible') ) {
  222.             $('body').removeClass('offcanvas-visible');
  223.             $('.js-fh5co-nav-toggle').removeClass('active');
  224.            }
  225.         });
  226.        
  227.     };
  228.  
  229.  
  230.     var goToTop = function() {
  231.  
  232.         $('.js-gotop').on('click', function(event){
  233.            
  234.             event.preventDefault();
  235.  
  236.             $('html, body').animate({
  237.                 scrollTop: $('html').offset().top
  238.             }, 500);
  239.            
  240.             return false;
  241.         });
  242.    
  243.     };
  244.  
  245.  
  246.     // Page Nav
  247.     var clickMenu = function() {
  248.         var topVal = ( $(window).width() < 769 ) ? 0 : 58;
  249.  
  250.         $(window).resize(function(){
  251.             topVal = ( $(window).width() < 769 ) ? 0 : 58;     
  252.         });
  253.  
  254.         if ( $(this).attr('href') != "#") {
  255.             $('#fh5co-main-nav a:not([class="external"]), #fh5co-offcanvas a:not([class="external"])').click(function(event){
  256.                 var section = $(this).data('nav-section');
  257.  
  258.  
  259.                 if ( $('div[data-section="' + section + '"]').length ) {
  260.  
  261.                     $('html, body').animate({
  262.                         scrollTop: $('div[data-section="' + section + '"]').offset().top - topVal
  263.                     }, 500);   
  264.                    
  265.                }
  266.                event.preventDefault();
  267.  
  268.             });
  269.         }
  270.  
  271.        
  272.  
  273.  
  274.     };
  275.  
  276.     // Reflect scrolling in navigation
  277.     var navActive = function(section) {
  278.        
  279.         $('#fh5co-main-nav li, #fh5co-offcanvas li').removeClass('active');
  280.         $('#fh5co-main-nav, #fh5co-offcanvas').find('a[data-nav-section="'+section+'"]').closest('li').addClass('active');
  281.        
  282.     };
  283.  
  284.     var navigationSection = function() {
  285.  
  286.         var $section = $('div[data-section]');
  287.        
  288.         $section.waypoint(function(direction) {
  289.             if (direction === 'down') {
  290.                 navActive($(this.element).data('section'));
  291.             }
  292.  
  293.         }, {
  294.             offset: '150px'
  295.         });
  296.  
  297.         $section.waypoint(function(direction) {
  298.             if (direction === 'up') {
  299.                 navActive($(this.element).data('section'));
  300.             }
  301.         }, {
  302.             offset: function() { return -$(this.element).height() + 155; }
  303.         });
  304.  
  305.     };
  306.  
  307.  
  308.  
  309.     var contentWayPoint = function() {
  310.         var i = 0;
  311.         $('.animate-box').waypoint( function( direction ) {
  312.  
  313.             if( direction === 'down' && !$(this.element).hasClass('animated') ) {
  314.                
  315.                 i++;
  316.  
  317.                 $(this.element).addClass('item-animate');
  318.                 setTimeout(function(){
  319.                    
  320.                     $('body .animate-box.item-animate').each(function(k){
  321.                         var el = $(this);
  322.                         setTimeout( function () {
  323.                             el.addClass('fadeInUp animated');
  324.                             el.removeClass('item-animate');
  325.                         },  k * 200, 'easeInOutExpo' );
  326.                     });
  327.                    
  328.                 }, 100);
  329.                
  330.             }
  331.  
  332.         } , { offset: '85%' } );
  333.  
  334.  
  335.     };
  336.  
  337.  
  338.     // Document on load.
  339.     $(function(){
  340.  
  341.         pageTransition();
  342.         fullHeight();
  343.         sliderMain();
  344.         sliderTestimony();
  345.         offcanvasMenu();
  346.         mainMenuSticky();
  347.         mobileMenuOutsideClick();
  348.         parallax();
  349.         burgerMenu();
  350.         scrolledWindow();
  351.         clickMenu();
  352.         navigationSection();
  353.         goToTop();
  354.        
  355.  
  356.  
  357.         // Animations
  358.         contentWayPoint();
  359.        
  360.        
  361.  
  362.     });
  363.  
  364.  
  365. }());
  #5 (permalink)  
Antiguo 19/06/2017, 03:43
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 9 meses
Puntos: 39
Respuesta: menu canvas no funciona

A ver, he probado tu código y los links si hacen su función. Te explico un poco el código para que lo entiendas.

Cuando se carga la página se ejecuta la función pageTransition:

Código Javascript:
Ver original
  1. var redirectPage = function(url) {
  2.  
  3.     window.location = url;
  4.  
  5. }
  6.  
  7. var pageTransition = function() {
  8.  
  9.     $("body").css("display", "none"); // Oculta el cuerpo de la página
  10.     $("body").fadeIn(2000); // Muestra el cuerpo de la página con el efecto de ir apareciendo
  11.  
  12.     $("a.transition").click(function(event){ // Pone a la escucha el evento click en los enlaces con la clase transition.
  13.         event.preventDefault();
  14.         var linkLocation = this.href;
  15.  
  16.         $("body").fadeOut(2000, redirectPage);      
  17.  
  18.         redirectPage(linkLocation);
  19.     });
  20.  
  21. };

Esta función te muestra el cuerpo y pone a la escucha el hacer click en el menú canvas. Cuando haces click en un enlace, si te fijas lo que hace es parar el evento con el event.preventDefault(), luego coge el href del enlace clickado. Después oculta el cuerpo de la página y llama a la función redirectPage que lo que hace eshacer un redireccionamiento.

En definitiva estas funciones lo que hacen es dar un efecto cuando se hace click en un enlace con la clase transition.

Bien, he probado el código que me has pasado y a mi los enlaces si me funcionan, así que hay algo que no me has pasado que es lo que te está molestando. Para solucionarlo yo haría las siguientes cosas.

1º. Al poner el ratón sobre el enlace, fíjate si en la esquina inferior izquierda aparece la dirección donde tiene que enlazar. Cuando pones el ratón encima de un enlace, el navegador te dice a donde va a ir en esa esquina. Si al poner el ratón sobre el enlace no aparece nada, significa que tienes un elemento HTML que está tapando el enlace y por eso no te hace nada.

1A. Si es el caso abre el inspector de código del navegador, mejor si usas Chrome. Haz click con el segundo botón sobre el enlace y pulsa en inspeccionar elemento. Esto te llevará al elemento que te está tapando los enlaces. En este caso tu problema es de maquetación, es decir, hay que encontrar el elemento que te tapa los enlaces y porque para arreglarlo.

1B. Si no es el caso y te marca bien los enlaces, abre igualmente el inspector de código y pulsa en la consola del navegador y vamos a ver si te da algún error en el javascript. Aunque no creo que sea el caso ya que igualmente debería de enlazar aunque esa función no se llegase a ejecutar.

Haz esto y me cuentas, para ir acercándonos al error.
__________________
Diseño Web - Arisman Web
  #6 (permalink)  
Antiguo 19/06/2017, 04:09
 
Fecha de Ingreso: junio-2014
Mensajes: 70
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: menu canvas no funciona

Mil gracias nuevamente Manu.

Quizás no lo explique bien antes. Donde me da fallo, es al cambiar de tamaño el navegador, simulando como si se visualizara desde un dispositivo movil, ahí, al hacer responsive por debajo de 767px, el menú se oculta con un icono de 3 lineas, y al hacer click en el se despliega. Es ahí donde las 4 opciones, HOME, PORTAFOLIO, ABOUT y CONTACT no funcionan. Sin embargo en la versión de escritorio, que quizás es la que has probado, si funciona.
Eso hablando de la pagina portfolio.html, por en la pagina índex.html, el menú funciona correctamente tanto en escritorio como en versión movil.

No se si me explico, disculpa el lio Manu.
  #7 (permalink)  
Antiguo 19/06/2017, 08:10
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 9 meses
Puntos: 39
Respuesta: menu canvas no funciona

Vale, entoces el problema es de javascript. Lo que vas a hacer es irte a la consola del navegador. Segundo botón > inspeccionar elemento

Una vez que se te abran las herramientas para desarroladores, pulsa en la pestaña de consola y refresca la página.

Casi seguro que te marcará errores al cargar. Si no es así, pulsa el botón de menú y seguro que entonces verás un error. Cuando tengas ese error pásamelo por aquí.

Mira la función que abre el menú es esta:
Código Javascript:
Ver original
  1. // Burger Menu
  2. var burgerMenu = function() {
  3.  
  4.     $('body').on('click', '.js-fh5co-nav-toggle', function(event){ // Escucha el evento click sobre el elemento con clase .js-fh5co-nav-toggle
  5.  
  6.         var $this = $(this); // var $this es el elemento en el que se ha hecho click
  7.  
  8.         $('body').toggleClass('fh5co-overflow offcanvas-visible'); // Añade o quita las clases fh5co-overflow y offcanvas-visible al body
  9.         $this.toggleClass('active'); // Añade la clase active al botón
  10.         event.preventDefault(); // Evita que el evento click se siga propagando
  11.  
  12.     });
  13.  
  14. };

La función parece estar correcta y es muy simple, por tanto tienes que tener algún error en el código javascript que impide su ejecución.
__________________
Diseño Web - Arisman Web
  #8 (permalink)  
Antiguo 19/06/2017, 09:01
 
Fecha de Ingreso: junio-2014
Mensajes: 70
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: menu canvas no funciona

Gracias de nuevo, te vas a ganar unas birras tío jaja.

Efectivamente aparecen 3 errores, pero que yo sepa ninguno con esa función, uno es con el JS de analytics, otro con el bootstrap y otro con el font-awesome. Pone que requiere otra version, pero a mi entender eso no tiene que ver con mi problema.

Una cosa, el problema no es con que se despliegue o no el menu de canvas, eso lo hace bien, al hacer click en las 3 barras se despliega con las 4 opciones de menu, son los links los que no funcionan. Si quieres hago capturas de pantalla para que lo veas mejor.
  #9 (permalink)  
Antiguo 19/06/2017, 09:19
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 9 meses
Puntos: 39
Respuesta: menu canvas no funciona

A ver que yo me entere cual es problema... ¿el problema es que cuando haces click en los enlaces no hace nada o que no funciona el menú?

¿Cuando haces click en un enlace con la consola del navegador abierta tampoco te da un error nuevo?

Pásame algunas capturas de pantalla una con los errores de la consola y otra haciendo lo siguiente:

1 Abres las herramientas para desarrolladores.
2 Clic en la pestaña de Elements
3 Segundo botón en uno de los enlaces del menú que no te funciona.
4 Pulsas en inspeccionar elemento.

Eso hará que te busque en el árbol del DOM el elemento que estás inspeccionando. Haces una captura y la pones también.
__________________
Diseño Web - Arisman Web
  #10 (permalink)  
Antiguo 19/06/2017, 10:57
 
Fecha de Ingreso: junio-2014
Mensajes: 70
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: menu canvas no funciona

los enlaces son los que no funcionan, El menu oculto si se despliega, pero los enlaces no van, solo en la version responsive repito, porque en la version escritorio si.

Estoy tratando de hacer lo que me dices pero al dar click derecho sobre uno de los enlaces que no funciona, no hay ninguna opción de "inspeccionar elemento"


Acabo de darme cuenta de una cosa tratando en en el modo herramientas de desarolladorews de chrome. Al ver el código y expandir toda la web, hay una parte de código que aparecer y que sin embargo en Dreamweaver yo no tengo. Como se explica esto? mira

Esto es lo que yo tengo en Dreamweaver justo al iniciar body:

Código HTML:
Ver original
  1. <div id="fh5co-header">
  2.         <div class="container">
  3.             <!-- Mobile Toggle Menu Button -->
  4.             <a href="#" class="js-fh5co-nav-toggle fh5co-nav-toggle"><i></i></a>
  5.             <div id="fh5co-logo">
  6.                 <a href="../index.html">PHOTOGRAPHY<span>.</span></a>
  7.             </div>
  8.             <nav id="fh5co-main-nav">
  9.                 <ul>
  10.                     <li><a href="#" data-nav-section="home">HOME</a></li>
  11.                     <li><a href="#" data-nav-section="portfolio">PORTFOLIO</a></li>
  12.                     <li><a href="#" data-nav-section="about">ABOUT</a></li>
  13.                     <li><a href="#" data-nav-section="contact">CONTACT</a></li>
  14.                 </ul>
  15.             </nav>
  16.         </div>
  17.     </div>


Y esto es lo que aparece en chrome:

Código HTML:
Ver original
  1. <div id="fh5co-offcanvas"><a href="#" class="js-fh5co-offcanvas-close fh5co-offcanvas-close"></a><nav id="">
  2.                     <ul>
  3.                         <li><a href="home.html#fh5co-home" class="transition" data-nav-section="home">HOME</a></li>
  4.                         <li><a href="home.html#fh5co-portfolio" class="transition" data-nav-section="portfolio">PORTFOLIO</a></li>
  5.                         <li><a href="home.html#fh5co-about" class="transition" data-nav-section="about">ABOUT</a></li>
  6.                         <li><a href="home.html#fh5co-contact" class="transition" data-nav-section="contact">CONTACT</a></li>
  7.                     </ul>
  8.                 </nav></div>

Y después de esto ya aparece lo que puse arriba. Como es que esta parte de código a mi no se me ve en dreamweaver? quizás ahi esté el problema?
  #11 (permalink)  
Antiguo 19/06/2017, 11:22
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 9 meses
Puntos: 39
Respuesta: menu canvas no funciona

Es imposible que al pulsar con el segundo botón no te aparezca la opción de inspeccionar, esa opción aparece siempre pulse donde pulses en una web.

Por otro lado, el navegador no se va a inventar un fragmento de código que no aparezca en el archivo. Puede ser que se cree por javascript. Así que no sé de donde sale eso, seguramente si no está en el HTML se cree en algún método de javascript.

Hagamos una cosa, mira, tu inspecciona la web en chrome. Si te fijas, en el arbol del inspector, cuando pones el ratón sobre un elemento HTML se te marca el elemento en la pantalla con unos colores que te diferencian el margin, el padding y el interior.

Estoy casi seguro que lo que te pasa es que hay un elemento que no ves encima de los enlaces y por eso no te deja pulsarlos. Lo que te dije al principio.

Si sigues sin dar con el fallo, podemos hacer una cosa si quieres. Si puedes colgar la página a un servidor en el que tenga acceso, la cuelgas y me pasas el enlace. Si no, por esta vez y sin que sirva de precedente comprimes los archivos y los subes a la nube. Me mandas un privado, te doy mi correo y lo compartes conmigo. Yo le echo un vistazo y te digo lo que falla para que lo arregles. La finalidad de esto es enseñarte a solucionarlo no que te lo haga yo. ¿De acuerdo?
__________________
Diseño Web - Arisman Web
  #12 (permalink)  
Antiguo 19/06/2017, 11:31
 
Fecha de Ingreso: junio-2014
Mensajes: 70
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: menu canvas no funciona

Gracias Manu, realmente es lo que quiero. Te aseguro que antes de preguntar nada aquí busco y rebusco, y algunas veces aun haciéndolo, sale algo mal que por mi desconocimiento no tiene el menor sentido. Voy a pegar un repaso como dices, y a ver si encuentro algo. Si no, te lo hago llegar mañana, pero como dije antes, pagando, no me gusta ser un jeta y que me hagan el favor de repasarte toda una web por la cara.

Y por cierto, desde el desconocimiento, pero en caso que sea lo que dices, que exista algo delante que me impida pulsarlos, eso debería evitar también que al hacer hover los enlaces cambien de color, verdad? lo digo porque así ocurre.
Y de todos modos en una prueba que hice unos días atrás, de hacer una copia del index (donde si funciona) renombrándolo, y editando el código para que fuera como el album que me falla, y dejo de funcionar también. Yo creo que tiene que algo raro del Java, que identifica el menu del index, pero no del resto de paginas.

Mañana te escribo si esta no encuentro nada y no me explota el tarro.

Gracias!
  #13 (permalink)  
Antiguo 19/06/2017, 11:39
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 9 meses
Puntos: 39
Respuesta: menu canvas no funciona

Cita:
Iniciado por macaluan Ver Mensaje
Gracias Manu, realmente es lo que quiero. Te aseguro que antes de preguntar nada aquí busco y rebusco, y algunas veces aun haciéndolo, sale algo mal que por mi desconocimiento no tiene el menor sentido. Voy a pegar un repaso como dices, y a ver si encuentro algo. Si no, te lo hago llegar mañana, pero como dije antes, pagando, no me gusta ser un jeta y que me hagan el favor de repasarte toda una web por la cara.

Y por cierto, desde el desconocimiento, pero en caso que sea lo que dices, que exista algo delante que me impida pulsarlos, eso debería evitar también que al hacer hover los enlaces cambien de color, verdad? lo digo porque así ocurre.
Y de todos modos en una prueba que hice unos días atrás, de hacer una copia del index (donde si funciona) renombrándolo, y editando el código para que fuera como el album que me falla, y dejo de funcionar también. Yo creo que tiene que algo raro del Java, que identifica el menu del index, pero no del resto de paginas.

Mañana te escribo si esta no encuentro nada y no me explota el tarro.

Gracias!
No pienso cobrarte, porque tampoco te lo voy a hacer yo. Voy a identificarte el fallo y a decirte como arreglarlo. Yo le debo mucho a este foro, gracias a él y sus foreros aprendía a programar y ahora me gano la vida con ello. Solo devuelvo el favor que se me hizo. Eso sí, si algún día vienes por Barcelona, la cerveza no te la perdono.
__________________
Diseño Web - Arisman Web
  #14 (permalink)  
Antiguo 20/06/2017, 04:00
 
Fecha de Ingreso: junio-2014
Mensajes: 70
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: menu canvas no funciona

Cita:
Iniciado por manuparquegiralda Ver Mensaje
No pienso cobrarte, porque tampoco te lo voy a hacer yo. Voy a identificarte el fallo y a decirte como arreglarlo. Yo le debo mucho a este foro, gracias a él y sus foreros aprendía a programar y ahora me gano la vida con ello. Solo devuelvo el favor que se me hizo. Eso sí, si algún día vienes por Barcelona, la cerveza no te la perdono.
Te envie un privado Manu, no se si lo recibiste porque no me aparece como en la bandeja.
  #15 (permalink)  
Antiguo 21/06/2017, 02:28
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 9 meses
Puntos: 39
Respuesta: menu canvas no funciona

Vale ya está solucionado. Verás, la plantilla que tienes está preparada para ser una sola página scrollable. Por lo que al pulsar los enlaces del menú lo que hace es arrastrar el scroll a una división concreta que es dada a través del atributo data-nav-section qeu tienen los enlaces.

Lo que te pasaba es que cuando en la página portfolio que tu has creado al pulsar estos links intentaba arrastrar el scroll a la división que no existe en portfolio, por eso no hacía nada.

Este efecto lo ejecuta esta función en el main.js, te la explico un poco para que lo entiendas.
Código Javascript:
Ver original
  1. var clickMenu = function() {
  2.     var topVal = ( $(window).width() < 769 ) ? 0 : 58; // If en linea que ajusta el topval en función del ancho de la pantalla.
  3.  
  4.     $(window).resize(function(){
  5.         topVal = ( $(window).width() < 769 ) ? 0 : 58;  // If en linea que ajusta el topval en función del ancho de la pantalla cuando se redimensiona.
  6.     });
  7.  
  8.     if ( $(this).attr('href') != "#") {
  9.         // Pone a la escucha el evento click en los enlaces del menú, tanto el que está en el HTML como el que crea el javascript.
  10.         $('#fh5co-main-nav a:not([class="external"]), #fh5co-offcanvas a:not([class="external"])').click(function(event){
  11.             // Coge el data del enlace para redirigirlo a la división correspondiente
  12.             var section = $(this).data('nav-section');
  13.  
  14.             // Si la división correspondiente existe
  15.             if ( $('div[data-section="' + section + '"]').length ) {
  16.                 // Anima el scroll hasta la división
  17.                 $('html, body').animate({
  18.                     scrollTop: $('div[data-section="' + section + '"]').offset().top - topVal
  19.                 }, 500);   
  20.  
  21.            }
  22.            event.preventDefault();
  23.  
  24.         });
  25.     }
  26. };

Para que cojas un poco el concepto de jQuery, el siguiente código es el que pone a la escucha los links y es donde está la clave de tu fallo:

Código Javascript:
Ver original
  1. $('#fh5co-main-nav a:not([class="external"]), #fh5co-offcanvas a:not([class="external"])').click(function(event){

Si te fijas en esta línea lo que se le está diciendo a jQuery es que los enlaces dentro del elemento con id fh5co-main-nav (#fh5co-main-nav a) y los enlaces centro del elemento con id fh5co-offcanvas (#fh5co-offcanvas a), se pongan a la escucha.

Fíjate que son selectores CSS lo que entiende jQuery. El .click, dice que los enlaces mencionados serán escuchados cuando se haga click y se ejecutrará la siguiente función que está entre los paréntesis y es la que anima el scroll.

Bien volviendo a los selectores CSS que se ponen a la escucha, fíjate que se usa el pseudo elemento :not[class="external"].

Código Javascript:
Ver original
  1. $('#fh5co-main-nav a:not([class="external"]), #fh5co-offcanvas a:not([class="external"])')

Lo que esto significa es que se escucharán los enlaces que no tengan class="external" Por tanto, lo que tienes que hacer para que funcione es sencillamente cambiar la clase de los enlaces del menú de .transition a .external

Código HTML:
Ver original
  1. <div id="fh5co-header">
  2.     <div class="container">
  3.         <!-- Mobile Toggle Menu Button -->
  4.         <a href="#" class="js-fh5co-nav-toggle fh5co-nav-toggle"><i></i></a>
  5.         <div id="fh5co-logo">
  6.             <a class="transition" style="color: #000000">LHPHOTOGRAPHER<span>.</span></a>
  7.         </div>
  8.         <nav id="fh5co-main-nav">
  9.             <ul>
  10.                 <li><a href="index.html#fh5co-home" class="external" data-nav-section="home">HOME</a></li>
  11.                 <li><a href="index.html#fh5co-portfolio" class="external" data-nav-section="portfolio">PORTFOLIO</a></li>
  12.                 <li><a href="index.html#fh5co-about" class="external" data-nav-section="about">ABOUT</a></li>
  13.                 <li><a href="index.html#fh5co-contact" class="external" data-nav-section="contact">CONTACT</a></li>
  14.             </ul>
  15.         </nav>
  16.     </div>
  17. </div>

Con esto ya te funcionarán los enlaces y te llevarán a index.html ya que no estarán a la escucha al tener la clase external. No sé si me he explicado bien.

Por otro lado, la división que dices que no está en el HTML pero sí en el inspector de elementos es precisamente el menú del slider móvil. Es decir, los enlaces que no te funcionaban. Se crean con la siguiente función:

Código Javascript:
Ver original
  1. var offcanvasMenu = function() {
  2.  
  3.     $('body').prepend('<div id="fh5co-offcanvas" />');
  4.     $('#fh5co-offcanvas').append($('#fh5co-main-nav').clone());
  5.  
  6.     setTimeout(function(){
  7.         $('#fh5co-offcanvas').prepend('<a href="#" class="js-fh5co-offcanvas-close fh5co-offcanvas-close" />');
  8.         $('#fh5co-offcanvas #fh5co-main-nav').attr('id', '');
  9.     }, 200);
  10. };

La función .prepend() de jQuery lo que hace es insertar al principio del elemento dado, en este caso $( "body" ). La función .append() Lo que hace es añadir al final del elemento dado.

Fíjate, añade al principio del body la división <div id="fh5co-offcanvas" />.
Añade al final de la división con ID fh5co-offcanvas (Es la que acaba de insertar al principio del body) un clon del menu nav : $('#fh5co-offcanvas').append($('#fh5co-main-nav').clone());.

Y bueno, no voy a extenderme más. Es puro jQuery que puedes estudiar aquí: https://api.jquery.com/

En definitiva, cambia la clase transition de los enlaces por la clase external y te funcionará bien.


CONSEJOS PARA TU PÁGINA TU PÁGINA

Te voy a dar algunos consejos para tu web.

1º, Las imágenes que tienes son increiblemente pesadas. Las 11 imágenes de la carpeta sliders tienen todas más de 1MB de tamaño. Si en el inspector de elementos le das a la pestaña network podrás ver lo que pesa cada uno de los recursos que se descargan. Bien pues solo en esas imágenes se descargan 13,9MB.

Imagina que alguien visita tu página desde el móvil pues tan solo con entrar en tu página de inicio ya gastará 14MB de datos (UNA BARBARIDAD). Las que tienes en portfolio están mejor optimizadas. Pero yo te aconsejaría que redujeses el tamaño de las imángenes lo máximo posible. Para eso, pásalas por photoshop, reduce el ppp de las imágenes y pásalas por algún compresor como http://compressjpeg.com/.

Por otro lado en la página de index no se ve bien cuando lo miras desde un móvil. Para comprobar si la página es responsive, no debes hacerlo cambiando el tamaño de la ventana simplemente. Cuando abres el inspector del navegador, a la izquierda de las pestañas tienes un icono con un móvil, si haces click, verás que puedes simular diferentes dispositivos, iPhone, iPad, Nexus... bien utiliza esto para comprobar como se vería tu página desde los diferentes dispositivos. Muchas veces comprobarás que lo que se ve biene en un Nexus, no se ve bien en un iPhone porque cambia el user Agent.

Cuando desarrolles, las herramientas para desarrolladores son fundamentales, úsalas siempre y antes de seguir, léete un par de tutoriales para aprender a usarlo y después sigues con el desarrollo de la web.

También échale un vistazo al javascript y usa el manual de jQuery para saber que es lo que está haciendo tu página. Si no lo haces te volverás a encontrar con problemas que no sabrás solucionar.

Bueno, un saludo y suerte
__________________
Diseño Web - Arisman Web
  #16 (permalink)  
Antiguo 21/06/2017, 06:56
 
Fecha de Ingreso: junio-2014
Mensajes: 70
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: menu canvas no funciona

:apla uso:

Que puedo decir, mil gracias por esta explicación. Tanto quebradero de cabeza y el problema lo tenia delante de mis narices. Con lo que me has dicho me ha dado para entender algunas cosas mas y arreglar otros fallos que tenia.

Ayer ya entraron en casa unos libros de este tema, mas vale aprender que ir dando palos de ciego.

Muchas gracias de nuevo Manu, de verdad, eternamente agradecido por tu tiempo. Y cuanta con esas cervezas en mi proximo viaje a Barcelona

Etiquetas: canvas, funcion, html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:05.