Цитата:
|
cyber,
Мну тут прикинул - шо про координаты курсора - не АЙС - ща схему набросаю |
Нам нужно фиксировать положение центральной точки (желтое O) относительно центра Окна ( хотя в Гугле - обычно фиксируется положение Пойнтера*выделенной метки, если он есть в текущем окне)
![]() Занчит вычисляешь отступы текущего центра и при зумме увеличиваешь на половину приращения ширины lеft(или высоты для top) Вычисляем приращение: widthOld = $("#wrapper").width() /это текущая ширина widthNew = $("#wrapper").width()*zoom /это будущая DeltaX(Приращение по Left) = (widthOld - widthNew)/2 (знак будет автоматический Итог вставляем в wrapper{"margin-left":""+DeltaX +"px" } |
хм...
спасибо за подсказку, но у тебя не правильно, потому что ты опеределяеш центр относительно wrapper а в моем случае мне нужно центр относительно внешнего блока overflow. пытался сделать так но что то все едит в верх function fixedZoom () { var zoomY = getHeight / (getHeight - step.height); var zoomX = getWidth / (getWidth - step.width); var left = style().left*zoomX; var top = style().top*zoomY; wrapper.css({ top: -top + 'px', left: -left+'px' }) } |
cyber,
Центр должен быть относительно визуального Окна просмотра - а центр wrapper может быть вообще за кадром (при большой ширине и просмотре картинки у левого края (или, наоборот - у края правого) |
Цитата:
|
вот как работает http://cyberua.16mb.com/files/zoom.html
вот функция function fixedZoom () { var zoomY = getHeight /(getHeight - step.height); var zoomX = getWidth / (getWidth - step.width); var left = ((getWidth - step.width) - (getWidth * zoomX))/2; var top = ((getHeight - step.height) - (getHeight * zoomY))/2; wrapper.css({ top: top + 'px', left: left+'px' }) } |
может я зум не правильно рассчитываю?!
|
cyber,
По моему - так var left = ((getWidth + step.width) - (getWidth * zoomX))/2; var top = ((getHeight + step.height) - (getHeight * zoomY))/2; И всё таки тут не left - a margin - left - Движение от зума - лучше делать независимым (для начала |
Цитата:
если getWidth/Height это размеры после увелечения, значит getHeight - step.height это уже старый размер. Цитата:
|
Часовой пояс GMT +3, время: 19:43. |