我正在试验 CSS 缩放属性,我试图基本上放大图像,同时将其固定在某个点。因此,与其在 0,0 处的点保持不变时放大,不如从右下角开始放大。
所以这是我的尝试,但显然它有点“古怪”:
fiddle :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 Angular 在放大时保持不动。
最佳答案
如果你想缩放到图像的中心,那么改变:
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 - 如何在将图像锚定在特定 Angular 落时缩放图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9284403/