2011-05-19 20 views
10

Actualmente trabajo en la siguiente página:Ajuste el ancho de 2 divs usando jQuery-dimensionable

schema of the page

divResizable ha sido modificado por jQuery usando el siguiente código en $().ready()

$("#divResizable").resizable({ handles: 'e' }); 
$("#divResizable").bind("resize", function (event, ui) { 
     $('#divContent').width(850 -(ui.size.width - 175)); 
}); 

Como puedes ver, trato de aumentar el ancho de divContent cuando divResizable se hace más pequeño y viceversa. Sin embargo, con este código, divContent no siempre "crece" hacia el lado izquierdo solamente, a veces se extiende hacia el lado derecho del div irrelevante, lo que no hace que el cambio de tamaño se vea bien.

¿Hay alguna entrada para un método más sofisticado para que corresponda el ancho de esos 2 divs?

Algo que podía pensar sería la de establecer el ancho de divContent a

(start of irrelevant - divResizable.width) == 850px 
^e.g 1025px  ^e.g. 175px 

¿Cómo funciona exactamente iba a hacer esto utilizando jQuery?

+0

¿Por qué no has anidado el divResizable e irrelevante div dentro del divContent y lo estás flotando? Solo pregunta para asegurarte de que no has pasado por alto una solución obvia. –

+0

Sí, ya que ese no es el sitio completo (los demás elementos son irrelevantes para esta pregunta), tenerlos dentro de este div desafortunadamente no funcionaría en absoluto. –

Respuesta

15

Demo - Su diseño puede manejar esto. Si envuelve resizable y content juntos, sólo tiene que ajustar resizable 's ancho:

HTML

<div id="page"> 
    <div id="wrapper"> 
    <div id="resizable">resizable</div> 
    <div id="content">content</div> 
    </div> 
    <div id="irrelevant">irrlevant</div> 
</div> 

CSS

#resizable { float:left; width:175px; } 
#content { overflow:hidden; width:auto; } 
#wrapper { float:left; width:1025px; } 
#irrelevant { } 
+0

Gracias por su respuesta e incluso por el trabajo de agregar una demostración. Pero me temo que este es el efecto que tuve antes también. Si solo ajusto el ancho usando un cuadro de texto, el cálculo es bastante fácil en el navegador, pero quiero arrastrarlo dinámicamente con el mouse (http://jqueryui.com/demos/resizable /). Ahí es donde los problemas que mencioné en mi Pregunta original llegan a ser. –

+0

Me encanta cuando las personas están creando problemas para sí mismos. :) El ejemplo publicado anteriormente usa ** CSS para hacer los cálculos, por lo que no es necesario.** Para que se pueda cambiar el tamaño al arrastrar el mouse, necesitarías ** UNA LÍNEA ** de javascript: '$ (" #resizable ") .resizable();'. También me encanta cuando la gente es demasiado vaga para resolver cosas. ** http: //jsbin.com/ikemu4/3/** ... vea la "nueva" demo ... – galambalazs

+0

¡Calme, ranúnculo! Solo asegurándome de obtener la mayor cantidad de servicio posible para mi Bounty. Desafortunadamente, '# content' siempre irá detrás de' # resizable', esto es más que simplemente "no genial" porque requeriría una renovación de todas las imágenes de fondo. ¿Hay alguna manera de lograr lo que hiciste sin dejar que '# content' continúe detrás de' # resizable'? Por favor, consulte http://jsbin.com/ikemu4/7/, borde rojo. No debería ir tan lejos a la izquierda. –

1

trate de envolver 'divresizable' y 'divContent' en un div con ancho conjunto a la suma de los dos contenían divs

+0

Tan pronto como trato de cambiar el tamaño, divContent "salta" hacia abajo en otra fila. –

+0

tal vez estoy equivocado, pero ¿no es más fácil tener ** div entrecruzando ** ajustado a un ancho específico, tener ** divResizable ** ajustado a un ancho específico, dejar el ** divContent ** sin a con establecer, o configurarlo en ** automático **, y aplicar el script de cambio de tamaño a ** divResizable **? – inadcod

2

Prueba esto:

$("#divResizanle").resizable({ handles: 'e' }); 
    $("#divResizable").bind("resize", function (event, ui) { 
     $('#divContent').width(850 -(ui.size.width - 175)); 
     $('#divContent').css("left",ui.size.width - ui.originalSize.width); 
    }); 
Cuestiones relacionadas