我正在尝试使用CSS zoom属性,并且尝试在将图片固定在特定点的同时基本放大图片。因此,与其希望在0,0的点保持不变的情况下进行放大,还不如从右下角进行缩放。
因此,这是我的尝试,但显然有点“古怪”:
小提琴:http://jsfiddle.net/csaltyj/nJ2M8/
HTML:
<div id="overlay">
<div class="square">
<img src="http://placekitten.com/800/800" width="400" height="400" />
</div>
</div>
Javascript:
$('.square img').on('click', function() {
$('.square').animate({
zoom: '200%',
left: '-200px',
top: '-200px'
}, 200);
});
CSS:
#overlay {
overflow: hidden;
width: 400px;
height: 400px;
}
.square {
position: relative;
width: 320px;
height: 320px;
background: #333;
vertical-align: bottom;
font-size: 2em;
font-family: Impact, Arial, sans-serif;
text-transform: uppercase;
color: #fff;
}
有什么办法让它表现出我想要的样子?我需要400,400转角才能放大。
最佳答案
如果要缩放到图像的中心,请更改:
left: '-200px',
top: '-200px'
至:
left: '-50%',
top: '-50%'
这是一个演示:http://jsfiddle.net/nJ2M8/1/
更新资料
尝试使用
transform
,它能够缩放元素。这是我不久前编写的一些代码,用于执行此操作:$(function () {
var venderTransform = ($.browser.webkit) ? 'WebkitTransform' :
($.browser.mozilla) ? 'MozTransform' :
($.browser.msie) ? 'MsTransform' :
($.browser.opera) ? 'OTransform' : 'transform'
$('.square').each(function () {
$.data(this, 'scale', 3);
}).bind('mousewheel', function (event, delta) {
event.preventDefault();
var sc = $.data(this, 'scale');
if ((delta == 1 && sc < 5) || (delta == -1 && sc > 1)) {
sc += delta;
$.data(this, 'scale', sc);
$(this).children('img').css(venderTransform, 'scale(' + sc + ')');
}
}).bind('mousemove', function (event) {
var sc = $.data(this, 'scale') || 1;//scale
if (sc > 1) {
var $this = $(this),
X = (typeof(event.offsetX) == 'undefined') ? (event.pageX - $this.offset().left) : (event.offsetX),//current cursor X position in bullet element
Y = (typeof(event.offsetY) == 'undefined') ? (event.pageY - $this.offset().top) : (event.offsetY),//current cursor Y position in bullet element
w = 400,//width of thumbnail
h = 400,//height of a thumbnail
nX = ((w / 2) - X),//new X
nY = ((h / 2) - Y),//new Y
tf = 'translate(' + (nX * (sc - 1)) + 'px, ' + (nY * (sc - 1)) + 'px) scale(' + sc + ')';//transform string
$this.children('img').css(venderTransform, tf);
}
}).bind('mouseleave', function () {
//reset .has-thumb element on mouseleave
$.data(this, 'scale', 3);
$(this).children('img').css(venderTransform, 'translate(0, 0) scale(1)');
});
});
这是一个演示:http://jsfiddle.net/nJ2M8/2/(缩放跟随光标,您可以使用鼠标滚轮放大/缩小)
关于jquery - 如何将图像 anchor 定在特定 Angular 落时进行缩放?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9284403/