Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Ventana flotante con video que no se centra

Estas en el tema de Ventana flotante con video que no se centra en el foro de Frameworks JS en Foros del Web. Buenas! A ver si alguien puede ayudarme con este problema que me esta volviendo loco. Estoy utilizando un plugin de jQuery que sirve para abrir ...
  #1 (permalink)  
Antiguo 12/06/2012, 12:08
 
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 4
Antigüedad: 11 años, 8 meses
Puntos: 0
Pregunta Ventana flotante con video que no se centra

Buenas!

A ver si alguien puede ayudarme con este problema que me esta volviendo loco.
Estoy utilizando un plugin de jQuery que sirve para abrir vídeos de Youtube y Vimeo en una ventana flotante al pulsar sobre una imagen.
La parte del código que se encarga de centrarlo creo que es esta:
Código PHP:
cur.css("top", ($(window).height() - cur.height()) / + $(window).scrollTop() + "px");
cur.css("left", ($(window).width() - cur.width()) / + $(window).scrollLeft() + "px"); 
El problema que tengo es que realmente no me lo centra del todo bien, quiero decir, empieza justo en el centro de la web, pero como si alineara el video a la izquierda, haciendo que el lateral izquierdo sea el que toca justo el centro de la web y no el centro del video como debería ser.
Como sé que es difícil de entender lo que quiero decir, he hecho un boceto para aclararlo:


Es probable que el error venga de otra parte del código de la web, pero no sé por donde buscar ya porque no encuentro nada. ¿Alguna idea? Llevo días con esto y no encuentro solución... help :(

Ojalá y con vuestra ayuda consiga solucionarlo ya que es lo único que me queda para dar por finiquitada la web.

Gracias por adelantado.

Un saludo.
  #2 (permalink)  
Antiguo 12/06/2012, 12:14
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 4 meses
Puntos: 12
Respuesta: Ventana flotante con video que no se centra

Hola. Si ese es todo el código que utilizás para la aplicación alcanza con modificar la cantidad de píxeles que querés mover la ventana flotante. Fijate que tenés un scrollTop (entiendo que es para mover la ventana verticalmente) y un scrollLeft (para moverla horizontalmente). En teoría si donde dice px reemplazás por un número te va a dezplazar el emergente esa cantidad de píxeles. Todo esto siempre y cuando ese sea el único código de la aplicación que pegaste.

Para mover 100 píxeles para arriba y 100 para la izquierda:

Código PHP:
cur.css("top", ($(window).height() - cur.height()) / + $(window).scrollTop() + "100"); 
cur.css("left", ($(window).width() - cur.width()) / + $(window).scrollLeft() + "100"); 
  #3 (permalink)  
Antiguo 13/06/2012, 03:12
 
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 4
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Ventana flotante con video que no se centra

Gracias por responder :)
Entonces solo con moverlo justo la mitad de los pixels que ocupa el vídeo de ancho hacia la izquierda debería quedar centrado, es así?
Ojala y esa sea la solución compañero, me sacarías de un buen apuro!

Última edición por Puzzle; 13/06/2012 a las 13:25
  #4 (permalink)  
Antiguo 13/06/2012, 13:26
 
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 4
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Ventana flotante con video que no se centra

Lamentablemente no me ha funcionado la respuesta de @sjj, al modificar alguna de esas dos opciones lo que hace es directamente anular esa alineación.

(Temporalmente) copio el resto del código por si alguien puede ayudarme.
Código Javascript:
Ver original
  1. jQuery.fn.videopopup = function (options) {
  2.     var settings = {
  3.         videoid: "",
  4.         videoplayer: "youtube",
  5.         width: "960px",
  6.         height: "540px",
  7.         autoplay: "false"
  8.     };
  9.     return this.each(function () {
  10.         if (options) {
  11.             $.extend(settings, options)
  12.         }
  13.         function centerS(cur) {
  14.             var cur = cur;
  15.             cur.css("position", "absolute");
  16.             cur.css("top", ($(window).height() - cur.height()) / 2 + $(window).scrollTop() + "px");
  17.             cur.css("left", ($(window).width() - cur.width()) / 2 + $(window).scrollLeft() + "px");
  18.             return this
  19.         }
  20.  
  21.         $(this).click(function (e) {
  22.             var a = $(document).height();
  23.             var b = $(window).width();
  24.             e.preventDefault();
  25.             var popuphtml = '<div id="dvGlobalMask"></div><div id="videopopup"><div class="modalnav"></div><div id="videocontent"></div></div>';
  26.             $("body").append(popuphtml);
  27.             $("#dvGlobalMask").css({
  28.                 width: b,
  29.                 height: a
  30.             });
  31.             $("#dvGlobalMask").fadeTo("fast", 0.4);
  32.             $("#videopopup").css("width", settings.width);
  33.             $("#videopopup").css("height", settings.height);
  34.             centerS($("#videopopup"));
  35.             var autoplay = 0;
  36.             if (settings.autoplay == "true") {
  37.                 autoplay = 1
  38.             } else {
  39.                 autoplay = 0
  40.             }
  41.             youtubestr = '<iframe width="' + settings.width + '" height="' + settings.height + '" src="http://www.youtube.com/embed/' + settings.videoid + "?autoplay=" + autoplay + '&amp;showinfo=0" frameborder="0" allowfullscreen></iframe>';
  42.             vimeostr = '<iframe src="http://player.vimeo.com/video/' + settings.videoid + "?color=008093&amp;show_title=0&amp;show_portrait=0&amp;autoplay=" + autoplay + '" width="' + settings.width + '" height="' + settings.height + '" frameborder="0"></iframe>';
  43.             switch (settings.videoplayer) {
  44.             case "youtube":
  45.                 $("#videocontent").html($(youtubestr));
  46.                 break;
  47.             case "vimeo":
  48.                 $("#videocontent").html($(vimeostr));
  49.                 break
  50.             }
  51.             $("#videopopup").show();
  52.             $(".modalnav").show()
  53.         });
  54.         $(".modalnav").live("click", function () {
  55.             $("#dvGlobalMask").hide();
  56.             $("#videopopup").hide();
  57.             $(".modalnav").hide();
  58.             $('#videocontent').html('');
  59.             $(settings.videoid).hide()
  60.         })
  61.     });
  62.     return this
  63. };
Código CSS:
Ver original
  1. #dvGlobalMask {
  2.     position: absolute;
  3.     top: 0;
  4.     left: 0;
  5.     width: 100%;
  6.     z-index: 1100;
  7.     background-color:#3F3F3F;
  8. }
  9.  
  10. #videopopup {
  11.     background: none repeat scroll 0 0 #FFFFFF;
  12.     box-shadow: 5px 5px 20px #000000;
  13.     display: none;
  14.     padding-bottom: 5px;
  15.     position: absolute;
  16.     z-index: 9001;
  17.     border: 15px solid #fff;
  18.     position:relative;
  19. }
  20.  
  21. .modalnav {
  22.     cursor: pointer;
  23.     height: 30px;
  24.     width: 30px;
  25.     position:absolute;
  26.     right:-25px;
  27.     top:-25px;
  28.     background: url("../images/modal-nav-hover.png") -40px 0px;
  29. }
  30.  
  31. .modalnav:hover {
  32.     background: url("../images/modal-nav-hover.png") -40px 0px;
Sigo creyendo que quizá lo que hace es chocar con alguna otra parte del código de la web, pero no sé qué puede ser. A ver si a alguien se le ocurre qué puede ser y podemos solucionarlo.

Lo agradecería mucho.

Un saludo.
  #5 (permalink)  
Antiguo 13/06/2012, 13:31
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 8 meses
Puntos: 127
Respuesta: Ventana flotante con video que no se centra

Se me ocurre que si quieres centrar un div flotante simplemente usa el margin-left, cuyo valor será la mitad de tamaño de la ventana menos el tamaño de la misma ventana, con un script lo podrías hacer.

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.  
  3. ancho= $(window).width()-$("#divflotante").width();
  4. $("#divflotante").css({"position":"fixed","top":"0px","left":"0px","float":"left","margin-left":(ancho/2) + "px"});
  5.  
  6. })

No lo he comprobado así que es cosa de que lo intentes y depures errores. Y supongo, que lo mismo puedes hacer con el margin-top, para centrarla verticalmente.
  #6 (permalink)  
Antiguo 17/06/2012, 04:53
 
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 4
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Ventana flotante con video que no se centra

Tampoco he conseguido que me funcione :(

Etiquetas: javascript, jquery, overlay, video
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 07:50.