jQueryを使って指定サイズに画像均等縮小みたいな〜
テーブルの中に画像を表示させる際、幅か高さをぴったりあわせて均等縮小でおさめたいときに。
(追記:記事と別コード追加 2011-12-15)
サンプルはこちら→W7工廠分室|トップページ
サイズを変更できるようにしました。(変更の必要がない場合はinputとか不要です)
HTML(head)
<script src="jquery.js"></script> <script type="text/javascript" src="jq_imgSizeControl.js"></script> <script> $(function(){ $('input#tbutton').click(function(){ imgSizeControl($('input#twidth').val(),$('input#theight').val()); }); }); </script>
HTML(body)
<input id="twidth" type="text"/> <input id="theight" type="text"/> <input id="tbutton" type="button" value="サイズ変更"/> <table class="imgSizeControl">
JavaScript (jq_imgSizeControl.js)
/* jq_imgSizeControl2.js 2010-09-26→2011-12-15 */ function imgSizeControl(tdWidth,tdHeight){ $("table.imgSizeControl td img").each(function(){ var width=$(this).attr("width"); var height=$(this).attr("height"); dw=tdWidth/width; dh=tdHeight/height; if(dw<dh){width=width*dw;height=height*dw;} else{width=width*dh;height=height*dh;} var hspace=(tdWidth-width)/2; var vspace=(tdHeight-height)/2; $(this).attr({"width":width,"height":height,"hspace":hspace,"vspace":vspace}); }); } $(window).load(function(){imgSizeControl(200,100);});//初期値・固定値
前のバージョン
結局画像を読み込んでから操作(readyでなくてload)すればよかっただけで(汗)
HTML(head)
<script src="jquery.js"></script> <script type="text/javascript" src="jq_imgSizeControl.js"></script>
HTML(body)
<table class="imgSizeControl">
JavaScript (jq_imgSizeControl.js)
/* jq_imgSizeControl.js 2011-01-21→2011-07-31 */ function imgSizeControl(){ var tdWidth=200;//目的の幅 var tdHeight=100;//目的の高さ $("table.imgSizeControl td img").each(function(){ var width=$(this).attr("width"); var height=$(this).attr("height"); dw=tdWidth/width; dh=tdHeight/height; if(dw<dh){width=width*dw;height=height*dw;}else{width=width*dh;height=height*dh;} var hspace=(tdWidth-width)/2; var vspace=(tdHeight-height)/2; $(this).attr({"width":width,"height":height,"hspace":hspace,"vspace":vspace}); }); } $(window).load(function(){imgSizeControl();});
JavaScript版 (imgSizeControl.js)
※そのページの画像全てに適用される
/* imgSizeControl.js 2010-09-26→2011-03-03 */ function imgSizeControl(){ var objSizeWidth=100;//目的の幅 var objSizeHeight=100;//目的の高さ for(var i=0;i<document.images.length;i++){ var width=document.images[i].width; var height=document.images[i].height; dw=objSizeWidth/width; dh=objSizeHeight/height; if(dw<dh){width=width*dw;height=height*dw;}else{width=width*dh;height=height*dh;} document.images[i].width=width; document.images[i].height=height; document.images[i].hspace=(100-width)/2; document.images[i].vspace=(100-height)/2; } } window.onload=imgSizeControl;