Buenas señores... como pueden ver sigo con problemas en la web... xD.

Aunque mi otra duda no terminó de responderse: (http://indetectables.net/foro/viewtopic ... 13&t=22829)

He decidido pasar página y tenerlo todo más cuadrado para dejarlo para después, ya que poco a poco me voy haciendo con el lenguaje y lo voy entendiendo y bueno, ahora les cuento..:

Resulta que quise hacer un script en JS para que al pulsar en cada enlace del menú, cargase los contenidos en un <div> sin necesidad de volver a recargar toda la página... Creo que lo consigo ya que cuando arranca la web aparece una barra de progreso y luego mientras voy pulsando en los enlaces se van cargando y no vuelve a saltar la barra de progreso por lo que me indica que funciona... pero tengo los siguientes problemas:

1 - Al pinchar en cada enlace, el contenido aparece en el <div>, pero el <div> no se actualiza, es decir, por ejemplo carga el contenido del enlace 1, deslizo el scroll un poco hacia abajo ya que el contenido es un poco largo.... ahora pincho en el enlace 2 y el contenido se carga pero el scroll sigue en la misma posición inicial.

2 - Como también puse en el otro post, dispongo de 2 botones fuera de todos los contenidos con position:absoulte para subir y bajar el scroll del <div> (que también funcionan con la clase mousewhell), y como más abajo verán en el code, supuestamente los cargo cada vez que pincho... pero no funciona, los botones no aparecen... pero sí puedo usar mousewhell en el <div>

3 - También quiero que el contenido se deslize de una manera peculiar... es decir, que haga un efecto y no se cargue de golpe... por ejemplo un SlideToggle o algo por el estilo.... y una vez implemento eso (como también veran en el code) me es necesario pulsar 2 veces en cada enlace, una para mostrar el contenido y otra para ocultarlo...


En definitiva... nose como repararlo por más vueltas que le doy.... y aquí os dejo los codes:


CSS del menú, los botones que hacen la función de scroll, y la caja de scroll:

Código: Seleccionar todo

.butons {
	position: absolute;
	top: 360px;
	left: 250px;
}

a.browse {
	position: relative;
	display: block;
	width: 30px;
	height: 30px;
	margin: 40px 10px;
	cursor: pointer;
}

a.up, a.down { 
	background: url(../images/vert_large.png) no-repeat; 
	margin: 10px 50px;
}

a.up:hover {
	background-position: -30px 0px;
}
a.up:active {
	background-position: -60px 0px;
}

a.down {
	background-position: 0px -30px;
}
a.down:hover {
	background-position: -30px -30px;
}
a.down:active {
	background-position: -60px -30px;
}

a.disabled {
	visibility: hidden;
} 	

.scrollable {
	position: relative;
	overflow: hidden;
	height: 260px;
	width: 640px;
}

.scrollable .items {
	position: relative;
}

a:active { 
	outline: none; 
}

a:focus { 
	-moz-outline-style: none; 
}


ul#menu {
	height: 40px;
	list-style: none;
	background: url(../images/menu.png) no-repeat bottom;
	padding-top: 2px;
}

ul#menu li {
	float: left;
}
	
ul#menu li a {
	background: url(../images/sprite.png) no-repeat scroll top left;
	display: block;
	height: 37px;
	position: relative;
}
	
ul#menu li a.inicio {
	width: 160px;
}

ul#menu li a.servicios {
	width: 160px;
	background-position: -160px 0px;
}

ul#menu li a.promociones {
	width: 160px;
	background-position: -320px 0px;
}

ul#menu li a.contacto{
	width: 160px;
	background-position: -480px 0px;
}
	
ul#menu li a span {
	background:url(../images/sprite.png) no-repeat scroll bottom left;
	display: block;
	position: absolute;
	top: 0;
	left: 0;
	height: 100%;
	width: 100%;
	z-index: 100;
}
	
ul#menu li a span:hover {
	cursor: pointer;
}
	
ul#menu li a.inicio span {
	background-position: 0px -37px;
}
	
ul#menu li a.servicios span {
	background-position: -160px -37px;
}

ul#menu li a.promociones span {
	background-position: -320px -37px;
}
	
ul#menu li a.contacto span {
	background-position: -480px -37px;
}

Ahora el <div> de los botones y los enlaces del menú:

Código: Seleccionar todo

<DIV CLASS="butons">
<A CLASS="prev browse up disabled"></A>
<A CLASS="next browse down disabled"></A>
</DIV>
<UL ID="'.CmenuJS.'">
	<LI><A HREF="inicio" CLASS="inicio"><SPAN></SPAN></A></LI>
	<LI><A HREF="servicios" CLASS="servicios"><SPAN></SPAN></A></LI>
    <LI><A HREF="promociones" CLASS="promociones"><SPAN></SPAN></A></LI>
	<LI><A HREF="contacto" CLASS="contacto"><SPAN></SPAN></A></LI>
</UL>

También me gustaría que en vez de clickear los botones también funcionasen con la opción OnmouseOver.... supongo que abrá que hacer una función que al estár el botón en :hover realize su función de scroll... como también que al pulsar en cada enlace del menú aparezca en la barar de título algo en este estilo "[Enlace externo eliminado para invitados]" pero bueno esto más despacio que creo que ya son muchas cosas de por medio... ;P

Y aquí os dejo el .js

Código: Seleccionar todo

$(document).ready(function(){
$(".items").load("pages/info.php",scrll());
	$(".inicio").click(function(evento){
      evento.preventDefault();
      $(".items").load("pages/inicio.php").toggle("slow");
	 });
	$(".servicios").click(function(evento){
      evento.preventDefault();
      $(".items").load("pages/servicios.php").toggle("slow");
	});
   $(".promociones").click(function(evento){
      evento.preventDefault();
      $(".items").load("pages/promociones.php").toggle("slow");
	});
   $(".contacto").click(function(evento){
      evento.preventDefault();
      $(".items").load("pages/contacto.php").toggle("slow");
	});

function scrll()
{
  $(".scrollable").scrollable({ vertical: true, mousewheel: true, speed: 400});
}


return false;

});



$(function() {
		// set opacity to null on page load
		$("ul#menu span").css("opacity","0");
		// on mouse over
		$("ul#menu span").hover(function () {
			// animate opacity to full
			$(this).stop().animate({
				opacity: 1
			}, 'slow');
		},
		// on mouse out
		function () {
			// animate opacity to null
			$(this).stop().animate({
				opacity: 0
			}, 'slow');
		});
	});

Obviamente todo esto dado de la mano de la librería actualizada de Jquery.

Y creo que ya he pedido demasiado pero poquito a poco sé que se podrán resolver las dudas 1 a 1 sin necesidad de hacerlo todo de golpe.

Y otra acotación si no es mucho molestar.... me gustaría simplificar el .JS para hacerlo más liviano, ya que veo un desparrame de código...

no entiendo mucho javascript pero supongo que será algo así:

Código: Seleccionar todo

//defino unas variables
var MenuBottons = ['inicio', 'servicios', 'promociones', 'contacto'];
var MenuURL = ['pages/info.php','pages/servicios.php','pages/promociones.php','pages/contacto.php'];
//creo un array o un for o each o lo que haga falta para que funcione sin necesidad de desparramar tanto codigo....
supongo que será así... nose espero sus respuestas y que tengan un huequecito para mis dudas please...


Muchisimas gracias al menos por leerlo y Salu2 compañeros.
Daria todo lo que sé por la mitad de lo que ignoro
4 posts iguales en 1 minuto xDD, al crear el post no uses F5 para refrescarlo lo que haces es volver a crearlo!
perdona jefe, no me había fijado ;). Ya los he eliminado... :P


¿Alguna respuesta al tema señores? Gracias...
Daria todo lo que sé por la mitad de lo que ignoro
bueno bueno bueno.... viendo que no me hacen mucho caso yo sigo con mis trece y poco a poco voy consiguiendo hacer algo por muy breve que sea...

Pros:

1 - He conseguido optimizar el code del JS que hace las funciones de carga de contenidos del menú en el <div>.
2 - He aplicado un efecto para que se muestre el contenido de forma "slow".
3 - Cada vez que pulso en un enlace, el contenido se oculta y se carga el contenido correspondiente del último enlace pulsado, (evitando así el problema de 2 clicks en los enlaces para que cargase el contenido).

Contras:

1 - Pulso en un enlace, el contenido actual del <div> se ejecuta y se oculta, es decir, no se queda fijo.
2 - Siguen sin salirme los botones de scroll, pero sí hace el efecto mousewhell como antes.
3 - en el navegador aparece el parámetro de href="#", ¿cómo podría cambiar eso para que me apareciera algo en plan... /inicio o... /promociones?


Aquí os dejo el nuevo code:

Código: Seleccionar todo

$(document).ready(function(){
$(".items").load("pages/inicio.php");
   $("#menu a").each(function(){
      var href = $(this).attr("HREF");
      $(this).attr({ href: "#"});
	  
      $(this).click(function(){
	  $('.items').hide("slow",'',loaditems());
	  	function loaditems()
		{
		$('.items').load(href,'',showNewitems(),'',scrll())
		}
		function showNewitems()
		{
			$(".items").show("slow");
		}
		function scrll()
		{
		$(".scrollable").scrollable({ vertical: true, mousewheel: true, speed: 400});
		}
		
		return false;
		
	});
   });
});
espero que al menos haya alguna respuesta que me pueda ayudar.... gracias y salu2.
Daria todo lo que sé por la mitad de lo que ignoro
Z3R0N3 escribió:bueno bueno bueno.... viendo que no me hacen mucho caso yo sigo con mis trece y poco a poco voy consiguiendo hacer algo por muy breve que sea...

Pros:

1 - He conseguido optimizar el code del JS que hace las funciones de carga de contenidos del menú en el <div>.
2 - He aplicado un efecto para que se muestre el contenido de forma "slow".
3 - Cada vez que pulso en un enlace, el contenido se oculta y se carga el contenido correspondiente del último enlace pulsado, (evitando así el problema de 2 clicks en los enlaces para que cargase el contenido).

Contras:

1 - Pulso en un enlace, el contenido actual del <div> se ejecuta antes de que termine de ocultarse el anterior contenido.
2 - Siguen sin salirme los botones de scroll, pero sí hace el efecto mousewhell como antes y una vez mueva el scroll al cargar los contenidos se cargan con la misma posición de scroll que en el contenido anterior.
3 - ¿Qué podría hacer para que en el navegador cuando pulsara un enlace apareciera algo en plan...: /inicio o... /promociones?


Aquí os dejo el nuevo code:

Código: Seleccionar todo

$(document).ready(function(){
$(".items").load("pages/inicio.php");
   $("#menu a").each(function(){
      var href = $(this).attr("HREF");
      $(this).attr({ href: "#"});
	  
      $(this).click(function(evento){
	  evento.preventDefault();
	  $('.items').hide("slow");
	  $('.items').load(href,'',scrll(),'',showNewitems());

		function showNewitems()
		{
			$(".items").show("slow");
		}
		function scrll()
		{
		$(".scrollable").scrollable({ vertical: true, mousewheel: true, speed: 400});
		}
		
		return false;
		
	});
   });
});
espero que al menos haya alguna respuesta que me pueda ayudar.... gracias y salu2.
Daria todo lo que sé por la mitad de lo que ignoro
Gracias por vuestra ayuda (ironía)

Ya está todo soluccionado.
Daria todo lo que sé por la mitad de lo que ignoro
Responder

Volver a “Otros lenguajes”