JavaScript缩放图像和中心可视区域
JavaScript zoom image and center viewable area
我试图在点击按钮时创建一个可缩放的图像,但是图像应该在可视区域的中心缩放,因为图像可能比容器大。
我在这里创建了一个fiddle来说明我想要的,我显然通常会隐藏在容器外面的图像,我现在不担心这部分,还放入一个边界覆盖来显示容器的边界。
我已经完成了基于图像比例的缩放部分,我只需要计算出新的顶部和左侧css值,并在缩放后将其应用于图像。此外,图像是可拖动的,所以一旦你移动图像,它必须考虑到图像的位置。
基本上,在红色容器内的图像的中心点在缩放后必须保持不变,所以你可以有效地放大容器中间的任何东西。
http://jsfiddle.net/wFaFg/1/why do you we need code to link to jsfiddle?
感谢编辑:http://jsfiddle.net/FU55w/接近上面的提琴,但仍然没有完全缩放到中心点
我找到了解决方案,
这比仅仅找出图像的大小增加了多少要稍微复杂一些。
我算出x &在容器内的图像中心点的Y值,通过取左和顶值,将其变为正,然后添加一半的容器宽度和高度。
var x = Math.abs(image.position().left) + container.width() / 2
var y = Math.abs(image.position().top) + container.height() / 2
我通过将新宽度除以旧宽度来计算图像比例,然后我可以乘以x &Y值的比值
然后取新x和y与当前左和上的差值
image.position().left - (newX - x)
image.position().top - (newY - y)
完整的小提琴:http://jsfiddle.net/fbd2mk5q/
根据您的评论尝试新的小提琴:
http://jsfiddle.net/wFaFg/6/$("#zoom").on("click", function(e)
{
var container = $("#container");
var image = $("#container img");
var curLeft = image.position().left;
var curTop = image.position().top;
var ratio = image.height() / image.width();
image.css({
height: image.height() + (20 * ratio),
width: image.width() + (20 * ratio),
left: curLeft - ((20 * ratio)/2),
top: curTop - ((20 * ratio)/2)
});
});
相关文章:
- 如何在谷歌可视化中组合数字和模式格式化程序
- 加载泰坦尼克号可视化数据时出现问题
- 如何使用JQUERY解析大型XML文件并将其可视化为HTML格式
- 如何使用图表包装函数有条件地格式化谷歌可视化表单元格
- AngularJS&Google可视化-使用状态更改处理程序(Google API)在HTML页面上查看$sco
- Javascript图形可视化工具包,具有高性能(500-1000个节点)
- Google可视化addListener调用函数引用错误
- 如何在web上动态可视化数据集
- 可视化到选择框中
- 多个进度条可视地只更新一个进度条
- Javascript——检测用户的可视区域's浏览器
- 如何在谷歌地理地图可视化中显示区域
- 用户内部的垂直中心层's在长页面上的可视区域
- 一个大画布怎么能有一个动画'可视区域'
- JavaScript缩放图像和中心可视区域
- 限制可视区域和缩放级别
- 谷歌可视化API - 德国的地理地图区域
- 如何将 jquery 对话框居中以显示在浏览器当前可视区域的中心
- 限制缩放/可视区域与谷歌地球API
- 将DIV放置在光标处,但在可视区域内