JavaScript - Barra de navegación desparece

 
Vista:
sin imagen de perfil

Barra de navegación desparece

Publicado por Antonio (16 intervenciones) el 02/04/2017 20:08:56
Buenas tardes, tengo un problema, cuando en el navegador de un pc, en este caso chrome, reduzco la pantalla y comienzan a actuar los media query, el menu pasa de extendido en posicion fija a desplegable en posición absoluta.

El problema viene al volver a pantalla completa, el menu desaparece y hay que refrescar para que aparezca. Es importante que cuando esté en desplegable pinchar en el menu para que se despliegue, solo entonces ocurre el error al volver a pantalla completa (creo que es por que ha entrado en accion el script...) Esta es la web, no se si me he explicado bien...

www.en-estudio.com

Y aquí el código donde puede estar la solución:

HTML ------------------------------------------------

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<header>
	<div class="menu_bar">
		<a href="#" class="bt-menu"><span class="icon-menu"></span>Menu</a>
	</div>
	<nav class="navegacion2">
		<ul>
			<li class="inicio"><a href="./index.html" id="pagactual"><span class="icon-home"></span><span id="linea">Inicio</span></a></li>
			<li><a href="./portfolio.html"><span class="icon-pen"></span><span id="linea">Portfolio</span></a></li>
			<li><a href="./servicios.html"><span class="icon-wrench"></span><span id="linea">Servicios</span></a></li>
			<li><a href="./acercade.html"><span class="icon-profile"></span><span id="linea">Acerca de</span></a></li>
			<li><a href="./contacta.html"><span class="icon-mobile2"></span><span id="linea">Contacto</span></a></li>
		</ul>
	</nav>
</header>


CSS -------------------------------------------------------------------------

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
nav.navegacion2 {
	position: fixed;
	width:1170px;
	margin: 0px auto;
	background: #000;
	z-index: 2;
}
 
.menu_bar {
	width: 100%;
	display: none;
}
 
nav ul {
	position: relative;
	text-align: center;
	width: 650px;
	margin: 0px auto;
	overflow:hidden;
	list-style:none;
	padding:15px 0px 15px 0px;
}
 
nav ul li {
	float:left;
	border-width: 0px 0px 0px 1px;
	border-color: #fff;
	border-style: solid;
}
 
nav ul li.inicio {
	border-left: 0px;
}
 
nav ul li a {
	font-family: 'Exo', sans-serif;
	color:#fff;
	margin: 0px 20px 0px 20px;
	display:block;
	text-decoration:none;
	font-size: 14px;
}
 
nav ul li span {
	margin-right:10px;
}
 
li a#pagactual {
	color: #536879;
	font-size: 16px;
}
 
/* Para que aparezca la linea de abajo de los elementos de navegacion */
 
nav ul li a span#linea{
    position: relative;
}
 
nav ul li a span#linea:after{
    position: absolute;
    bottom: 7px;
    left: 0px;
    width: 100%;
    height: 1px;
    background-color: #536879;
    content: "";
    opacity: 0;
    transition: opacity 0.3s ease 0s, transform 0.3s ease 0s;
    transform: translateY(25px);
}
 
nav ul li a span#linea:hover:after{
    opacity:1;
    transform: translateY(8px);
}
 
nav ul li a:hover{
    color: #536879;
}
 
@media screen and (max-width:800px ) {
 
	nav.navegacion2 {
		position: absolute;
		text-align: center;
		width: 100%;
		height: 215px;
		left: -100%;
		margin: 0;
		padding-top: 50px;
	}
 
	nav ul {
		position: relative;
		text-align: center;
		width: 150px;
		text-align: left;
		margin: 0px auto;
	}
 
	nav ul li {
		display: block;
		float: none;
		margin-bottom: 23px;
		border-width: 0px;
	}
 
 
	.menu_bar {
		position: absolute;
		font-family: 'Exo', sans-serif;
		display: block;
		width: 100%;
		background: #000;
		z-index: 3;
	}
 
	.menu_bar .bt-menu {
		display: block;
		padding: 10px 20px 10px 10px;
		background: #000;
		color: #fff;
		text-decoration: none;
		font-weight: bold;
		font-size: 20px;
		-webkit-box-sizing: border-box;
		-moz-box-sizing: border-box;
		box-sizing: border-box;
	}
 
	.menu_bar span {
		margin: 0px 10px 0px 10px;
		font-size: 20px;
	}
 
	.menu_bar a {
		position: relative;
		text-align: center;
		margin: 0px auto;
		font-size: 20px;
	}

JQUERY ----------------------------------------------------------------------------------

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/* Navegación desplegable */
 
$(document).ready(main);
 
var contador = 1;
 
function main(){
    $('.menu_bar').click(function(){
        // $('nav').toggle(); 
 
        if(contador == 1){
            $('nav').animate({
                left: '0'
            });
            contador = 0;
        } else {
            contador = 1;
            $('nav').animate({
                left: '-100%'
            });
        }
 
    });
 
};

--------------------------------------------

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 553
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Barra de navegación desparece

Publicado por kip (107 intervenciones) el 03/04/2017 03:31:22
Hola, creo que con verificar que .menu_bar tenga la propiedad CSS display en none puedes resetear el valor de left de nav, algo asi:

1
2
3
4
5
6
7
8
$(window).on('resize', function() {
    var visible = $('.menu_bar').css('display');
    if (visible === 'none') {
        $('nav.navegacion2').css('left', 0);
    } else {
        $('nav.navegacion2').css('left', '-100%');
    }
});

Es lo mas fácil según veo lo que tienes ahora.

Pruebalo y nos avisas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 553
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Barra de navegación desparece

Publicado por kip (107 intervenciones) el 03/04/2017 03:59:22
En el codigo anterior que postee veo un error el cual esta en que en cada redimension del menu movil este se cierra !

Ahora me base en el contador que tienes para controlar el click de menu_bar y la animacion de nav.

Lo modifique de esta forma, pruebalo tambien:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
$(document).ready(function() {
 
    var contador = 1;
 
    function main() {
        $('.menu_bar').click(function() {
            if (contador == 1) {
                $('nav').animate({
                    left: '0'
                });
                contador = 0;
            } else {
                contador = 1;
                $('nav').animate({
                    left: '-100%'
                });
            }
        });
    };
 
    $(window).on('resize', function() {
        var visible = $('.menu_bar').css('display');
        if (visible === 'none') {
            $('nav.navegacion2').css('left', 0);
        } else {
            if (contador === 1) {
                $('nav.navegacion2').css('left', 0);
            } else {
                $('nav.navegacion2').css('left', '-100%');
            }
        }
    });
 
    main();
 
});

Nos cuentas!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Barra de navegación desparece

Publicado por Antonio (16 intervenciones) el 03/04/2017 05:41:11
Perfecto kip, eres un máquina, el primero me valía, por que cuando está en versión móvil el menú debe estar cerrado de primeras, solo he cambiado una cosa, cuando es visible display none (es decir, en versión pc) left lo he puesto a auto en vez de 0, así el menú se me centra que es como debería estar esa versión... quedaría así por si alguien se interesa:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$(document).ready(function() {
 
    var contador = 1;
 
    function main() {
        $('.menu_bar').click(function() {
            if (contador == 1) {
                $('nav').animate({
                    left: '0'
                });
                contador = 0;
            } else {
                contador = 1;
                $('nav').animate({
                    left: '-100%'
                });
            }
        });
    };
 
    $(window).on('resize', function() {
        var visible = $('.menu_bar').css('display');
        if (visible === 'none') {
            $('nav.navegacion2').css('left', 'auto');
        } else {
            $('nav.navegacion2').css('left', '-100%');
        }
    });
 
   main();
 
});
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar