gpt4 book ai didi

javascript - Jquery:缩放图像无法正确显示

转载 作者:行者123 更新时间:2023-11-28 06:09:30 26 4
gpt4 key购买 nike

我有来自插件的以下代码。这是一个图片缩放器,并将图像宽度设置为 100%;高度为 320px。他们将这些值作为参数传递。宽度的默认值为 320px。然后我将此宽度转换为 100%。问题是,在将宽度转换为百分比后(因为我是在响应式环境中构建它),1.缩放的图像没有以其全宽度显示,2.当我将光标悬停在图像上时,我必须移动到图像的最左侧才能看到预览。任何在这方面的帮助将不胜感激。这是代码片段。

;(function($){
$.fn.picZoomer = function(options){
var opts = $.extend({}, $.fn.picZoomer.defaults, options),
$this = this,
$picBD = $('<div class="picZoomer-pic-wp"></div>').css({'width':opts.picWidth+'%', 'height':opts.picHeight+'px'}).appendTo($this),
$pic = $this.children('img').addClass('picZoomer-pic').appendTo($picBD),
$cursor = $('<div class="picZoomer-cursor"><i class="f-is picZoomCursor-ico"></i></div>').appendTo($picBD),
cursorSizeHalf = {w:$cursor.width()/2 ,h:$cursor.height()/2},
$zoomWP = $('<div class="picZoomer-zoom-wp"><img src="" alt="" class="picZoomer-zoom-pic"></div>').appendTo($this),
$zoomPic = $zoomWP.find('.picZoomer-zoom-pic'),
picBDOffset = {x:$picBD.offset().left,y:$picBD.offset().top};


opts.zoomWidth = opts.zoomWidth||opts.picWidth;
opts.zoomHeight = opts.zoomHeight||opts.picHeight;
var zoomWPSizeHalf = {w:opts.zoomWidth/2 ,h:opts.zoomHeight/2};


$zoomWP.css({'width':opts.zoomWidth+'px', 'height':opts.zoomHeight+'px'});
$zoomWP.css(opts.zoomerPosition || {top: 0, left: opts.picWidth+30+'px'});

$zoomPic.css({'width':opts.picWidth*opts.scale+'px', 'height':opts.picHeight*opts.scale+'px'});


$picBD.on('mouseenter',function(event){
$cursor.show();
$zoomWP.show();
$zoomPic.attr('src',$pic.attr('src'))
}).on('mouseleave',function(event){
$cursor.hide();
$zoomWP.hide();
}).on('mousemove', function(event){
var x = event.pageX-picBDOffset.x,
y = event.pageY-picBDOffset.y;

$cursor.css({'left':x-cursorSizeHalf.w+'px', 'top':y-cursorSizeHalf.h+'px'});
$zoomPic.css({'left':-(x*opts.scale-zoomWPSizeHalf.w)+'px', 'top':-(y*opts.scale-zoomWPSizeHalf.h)+'px'});

});
return $this;

};
$.fn.picZoomer.defaults = {
picWidth: 100,
picHeight: 320,
scale: 2.5,
zoomerPosition: {top: '0', left: '350px'}
/*,
zoomWidth: 320,
zoomHeight: 320*/
};
})(jQuery);



[enter image description here][1]

最佳答案

我尝试使用这个插件,希望这是您正在寻找的结果。

我获取了原始插件,仅更改了“scale”和“zoomerPosition”的默认值,但这对于更改并不重要。

$.fn.picZoomer.defaults = {
picWidth: 320,
picHeight: 320,
scale: 5, //<--- THIS
zoomerPosition: {top: '350px', left: '0px'} //<--- THIS
/*,
zoomWidth: 320,
zoomHeight: 320*/
};

基本概念是将正确的宽度(以像素为单位)传递给插件。使用响应式时,我选择通过 Jquery 调整大小,因为该插件会强制像素尺寸,并且百分比对于缩放坐标来说会成为问题。

$(document).ready(function(){
$('.picZoomer').picZoomer({
picWidth: $(this).width()
});
});


var clrTimeout;
$(window).resize(function(){
clearTimeout(clrTimeout);
clrTimeout = setTimeout(function(){
$('.picZoomer').html($('.imgToSave'));
$('.picZoomer').picZoomer({
picWidth: $(this).width()
});
}, 200);
});

超时对于避免调整大小调用过载很有用。最后剩下的问题是纵横比。

This is the JSFiddle example

希望这对您有帮助。

关于javascript - Jquery:缩放图像无法正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36531166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com