2012-08-14 13 views
5

estoy tirando de mi pelo hacia fuera sobre esto. Tengo una página web donde me gustaría tener un div posición fija de la izquierda (el traductor loro &) seguir la página tal y como se desplaza hacia abajo. http://www.cartoonizemypet.com/new/help/estilo tienda de Apple div fija en IZQUIERDO

Me las arreglé para seguir este tut http://jqueryfordesigners.com/fixed-floating-elements/ y obtener lo que pensé que era un efecto perfecto! Luego traté de verlo en mi teléfono ... ¡Tan pronto como amplié la pantalla, el maldito div se movió sobre el texto! :(Puede ver el efecto en un navegador normal reduciendo la ventana del navegador y desplazándose hacia la derecha.

¿Alguien sabe una forma de evitar que el loro se mueva horizontalmente? He estado buscando una solución alta y baja pero está empezando a parecer imposible.

Aquí está la CSS relevante

#content { 
    padding-top:20px; 
    padding-bottom:713px; /* Height of the footer element */ 
    width:888px; 
    margin-left:auto; 
    margin-right:auto; 
    position:relative; 
} 

#help-col1 { 
    left:0; 
    width:218px; 
    position:absolute; 
    height:500px; 
} 

#parrot-box { 
    position:absolute; 
    top:0; 
    margin-top: 20px; 
} 

#parrot-box.fixed { 
    position:fixed; 
    top:0; 
} 

#help-col2 { 
    width:634px; 
    float:right; 
} 

dude de revisar la fuente de la página (http://www.cartoonizemypet.com/new/help/) ver el guión y HTML. Cualquier ayuda sería muy apreciada.

+0

Intenté deconstruir la página de demostración del tutorial para ver si estaba haciendo algo mal, pero tan pronto como centré el contenido y/o moví el div flotante hacia la derecha, el div fijo "escapa". – user1597021

+0

... ese es un bonito loro –

+0

Hehe gracias! :) – user1597021

Respuesta

-1

¡Para no preocupar a todos, mi esposo descubrió una forma alternativa de hacer que esto funcione! :)

En lugar de mover el loro con la página; Voy a tener varias versiones del loro dentro de los divs de respuesta.De esta forma, cuando un usuario hace clic en una respuesta, se abre y aparece el loro al lado.

¡No como originalmente lo tenía planeado, pero creo que puedo hacer que esta nueva forma se vea aún mejor!

¡Gracias por la ayuda en cualquier caso! :)

3

Cuando el loro consigue la clase 'fijo', El loro (en el interior # ayuda-col1) tiene un valor de 'izquierda' de 0. Esto significa que siempre va a estar unido al lado izquierdo de la página ... no importa qué las dimensiones de la ventana son, y cómo se desplaza.

Lo que está pidiendo es que se comporte como un elemento fijo cuando el usuario se desplaza verticalmente, pero no horizontalmente. Hasta donde yo sé, esto no es posible. La reparación es fija ... x e y.

Sin embargo, hay algunas soluciones (like this one) que hablan sobre el uso de javascript para superar este problema. La teoría aquí es que un pequeño javascript puede escuchar cuando la página se ha desplazado horizontalmente y, si es así, empujar el loro de nuevo a su lugar en consecuencia.

Personalmente, consideraría usar css media queries para hacer una distribución móvil específica. Puede asignar CSS específico para la versión móvil del sitio, así que con suerte el usuario no necesita acercarse (o desplazarse horizontalmente) =

¡Buena suerte!

+0

Buen consejo, gracias! Ese es un buen punto sobre el sitio móvil; Quería configurar uno de ellos, pero sé que hay personas como yo que prefieren hacer zoom en sitios web de escritorio en mi teléfono. :) Probaré la solución javascript que vinculaste mañana y les contaré cómo funciona. El cerebro duele demasiado como para intentarlo ahora. – user1597021

+1

Recuerde que las soluciones JS que escuchan eventos de desplazamiento generalmente son notablemente lacias –

+1

Correcto, o.v. Eso es lo que provocó mi sugerencia de consulta de medios =) – Chazbot

1

JS scroll event listener ha sido sugerido, pero todas las implementaciones que dependen de él son sistemáticamente laggy. Creo que tendrías mejor suerte al utilizar consultas de medios para determinar si el posicionamiento fijo es apropiado o no (por ejemplo, si la ventana/dispositivo es lo suficientemente amplio o si lo sustituyes con un comportamiento alternativo si no es así).

En realidad, podría dejar el loro en la parte superior para pantallas angostas y conservar algunos bienes inmuebles, así como abordar la incapacidad de versiones anteriores de Safari móvil para interpretar correctamente position:fixed. Por supuesto que podría poner en práctica un enfoque más refinado, pero esto debe ser un buen punto de partida - para probarlo, ejecute el siguiente script en su página (justo en la consola está muy bien):

$('head').append('<style type="text/css">#parrot-box.fixed {position:absolute;}</style><style type="text/css" media="screen and (min-width: 982px)">#parrot-box.fixed {position:fixed !important;}</style>'); 

En primer lugar se anula la declaración original #parrot-box.fixed, y luego aplica su estilo flotante siempre que la ventana tenga al menos 982px de ancho (el ancho de su envoltura de página).

+0

¡Eso es realmente inteligente! :) http://www.cartoonizemypet.com/new/help/index2.shtml Es una gran solución para los navegadores, pero desafortunadamente el loro aún se escapa cuando acerco mi teléfono. Supongo que porque un acercamiento es diferente de un tamaño (?) – user1597021

+0

@ user1597021: [los navegadores móviles no admiten 'posición: fijo'] (http://www.quirksmode.org/blog/archives/2010/12/ the_fifth_posit.html), excepto, creo, Safari posterior a iOS5. Tendrá que dirigirse a ellos para su exclusión de la regla sugerida anteriormente; desafortunadamente no hay [ninguna alternativa de detección de características para esta propiedad] (https://github.com/Modernizr/Modernizr/wiki/Undetectables). –

Cuestiones relacionadas