アスペクト比を維持しながら、スクリプトを使用して拡大縮小し、画像を背景に塗りつぶしています。また、サムネイルを使用してその背景画像を交換しています。新しい画像の縦横比が元の画像と一致しない場合、歪みが発生します。明らかに、元の画像の古いサイズのデータをまだ使用しています。どうすればこれを修正できますか?
編集:これがフィドルです。実際に動作しているのを見ることができます。これは、サムネイルの代わりにリンクを使用します (左上隅)
コードのサイズ変更(私のものではありません):
$(window).load(function() {
var theWindow = $(window),
bgImg = $("#bg");
function resizeImg() {
var imgwidth = bgImg.width();
var imgheight = bgImg.height();
var winwidth = $(window).width();
var winheight = $(window).height();
var widthratio = winwidth / imgwidth;
var heightratio = winheight / imgheight;
var widthdiff = heightratio * imgwidth;
var heightdiff = widthratio * imgheight;
var topPos = -(heightdiff-winheight) /2;
var leftPos = -(widthdiff-winwidth) /2;
if(heightdiff>winheight) {
bgImg.css({
width: winwidth+'px',
height: heightdiff+'px',
left:"0px",
top:topPos+"px"
});
}
else {
bgImg.css({
width: widthdiff+'px',
height: winheight+'px',
left:leftPos+"px",
top:"0px"
});
}
$(".marker").html(bgImg.width()+" x "+bgImg.height());
}
theWindow.resize(resizeImg).trigger("resize");
});
トリガー コード:
$(document).ready(function(){
$(".thumbs").click(function(e){
e.preventDefault();
$("#bg").attr("src", $(this).attr("href"));
});
});