2012-04-30 18 views
6

Tengo una página en la que tengo una rueda de elementos <div>, toda la rueda gira cuando hace clic en un botón.Use CSS Transforms o javascript para escalar un elemento para adaptarlo a su elemento principal de forma dinámica

Lo logro utilizando transformaciones CSS, que son de naturaleza absoluta. Sin embargo, la rueda es muy grande, se ve bien en mi pantalla HD, pero las pantallas más pequeñas se cortan los bordes. No puedo usar% widths como podría con un diseño normal, lo que necesito es escalar toda la página de la misma manera que funcionan las funciones de zoom de la mayoría de los navegadores.

Para mí, sé que ctr + mouseWheel alejará la página para que pueda ver toda la página, sin embargo, no puedo esperar que otros lo hagan.

Sé que puedo usar -browser-transform: scale(amt); en un envoltorio div para obtener el efecto que quiero, sin embargo, no puedo encontrar una manera de hacerlo de forma dinámica. Si configuro la escala a .5, será .5, sin importar la pantalla. Quiero que los bordes de la rueda sean solo unos pocos píxeles desde los bordes de la pantalla en CUALQUIER pantalla. Sé que las consultas de los medios se podrían utilizar para ayudar con el problema, pero me dejarían con resultados que no son ideales o que requieren demasiadas consultas diferentes. Debe haber una manera de modificar -browser-transform: scale(amt); programmatically, o de alguna otra manera para tener control finito.

¿Alguna idea?

+0

Bueno, tengo tumbleweed en este caso. Nadie tiene una idea? – zeel

+0

¿Tiene tamaños absolutos para (partes de) la rueda? Es útil si agrega un pequeño + ejemplo de trabajo en la pregunta, es un poco difícil imaginar cómo se ve su código. - En cualquier caso, por la forma en que lo leo, si tienes un tamaño de rueda fijo y un tamaño de navegador fijo (pero no conocido), necesitarás JavaScript para determinar la escala. – Jeroen

+0

¿Estás diciendo que quieres calcular 'amt' en función del tamaño de la ventana gráfica? –

Respuesta

0

¿Ha intentado utilizar las consultas de medios en css para dirigirse a diferentes pantallas. por ejemplo, tenga una consulta de medios en su archivo css que indique que con un ancho de 320 a 480 píxeles, el div que contiene esta rueda se escalará al 50%. Luego, a 481-768 píxeles, el contenedor div se escala al 75%. y desde 769 píxeles hacia arriba, el div se escala al 100%.

Eso debería ayudarlo a lograr la escala dinámica que desea en diferentes tamaños de pantalla. Si desea una demostración, me alegrará hacer que jsfiddle lo muestre.

+0

Si bien técnicamente funcionaría, necesitaría muchas consultas de medios para dar cuenta de una amplia gama de tamaños de pantalla, manteniendo la apariencia dentro de las desviaciones aceptables. Y recuerde que no todo el mundo está viendo con el navegador llenando la pantalla, la cantidad de tamaños posibles es muy grande. En resumen, demasiada redundancia, las consultas de los medios no son una solución elegante. – zeel

+0

no necesariamente, por ejemplo, la detección dividida de un monitor de 1920x1080 lo reduce a 1920x540, que estaría en el rango de (ancho mínimo: 481px) y (ancho máximo: 768px). Si usa rangos, entonces no necesita tantos. Primero, comience con un sitio básico durante una semana más o menos con Google Analytics, vea con qué resoluciones las personas visitan el sitio y diseñe principalmente para ellos.O, si no quiere esperar, diseñe para los más comunes, como 320x480, 800x480, 960x640, 1024x768, 1600x900, 1920x1080. Y no olvide que no es mucho trabajo simular y escribir un nuevo decimal para cada tamaño de pantalla. –

+0

Quiero hacerte jsfiddle haciendo esto por ti, ¿tienes tamaños diferentes a los que mencioné anteriormente en mi respuesta y en mi comentario antes que el tuyo? ¿Y tienes un violín con la rueda ya creada? –

Cuestiones relacionadas